目录
SPI总线
SPI是串行外设接口的缩写,SPI是一种高速的、全双工、同步的串行通信总线:SPI采用主从方式工作,一般有一个主设备和一个或多个从设备;SPI需要至少4跟线,分别是MISO(主设备输入从设备输出)、MOSI(主设备输出从设备输入)、SCLK(时钟)和CS(片选),SPI使用引脚较少,且布线方便,所以越来越多的芯片集成了这种通信协议。
SPI寻址方式
当主设备要和某个从设备进行通信时,主设备需要先向对应从设备的片选线上发送使能信号(高电平或者低电平,根据从机而定)表示选中该从设备。
SPI通信过程
SPI总线在进行数据传输时,先传高位再传低位;数据线为高电平表示逻辑“1”,低电平表示逻辑“0”;一个字节传送完成后无需应答即可开始下一个字节的传送;SPI总线采用同步方式工作,时钟线再上升沿或者下降沿时发送器向数据线上发送数据,再紧接着的下降沿或上升沿时接收器从数据线上读取数据,完成一位数据传送,八个是时钟周期即可完成一个字节数据的传送;
极性和相位
SPI总线有四种的工作模式,取决于极性(CPOL)和相位(CPHA)这两个因素。
CPOL表示SCLK空闲时的状态
CPOL = 0,空闲时SCLK为低电平
CPOL = 1,空闲时SCLK为高电平
CPHA表示采样时刻
CPHA = 0,每个周期的第一个时钟沿采样
CPHA = 1,每个周期的第一个时钟沿采样
IIC总线
IIC总线是一种串行、半双工总线,主要用于近距离、低速的芯片之间的通信;IIC总线有两根双向的信号线,一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步;IIC总线硬件结构简单,成本较低,因此在各个领域得到了广泛的应用。
IIC总线是一种多主机总线,连接在IIC总线上的器件分为主机和从机,主机有权发起和结束一次通信,而从机只能被主机呼叫;当总线上有多个主机同时启用总线时,IIC也具备冲突检测和仲裁的功能来防止错误产生;每个连接到IIC总线上的器件都有一个唯一的地址(7bit),且每个器件都可以作为主机也可以作为从机(同一时刻只能有一个主机),总线上的器件增加和删除不影响其他器件正常工作;IIC总线在通信时总线上发送数据的器件为发送器,接收数据的器件为接收器。
IIC总线通信过程
1. 主机发送起始信号启用总线
2. 主机发送一个字节数据指明从机地址和后续字节传输方向
3. 被寻址的从机发送应答信号回应主机
4. 发送器发送一个字节数据
5. 接收器发送应答信号回应发送器
(循环步骤4、5)
n. 通信完成后主机发送停止信号释放总线
IIC总线寻址方式
IIC总线上传送的数据时广义的,既包括地址,又包括真正的数据
主机在发送起始信号后必须发送一个字节的数据,该数据的高7位为从机地址,最低位表示后续字节的传送方向,‘0’表示主机发送数据,‘1’表示主机接收数据;总线上所有的从机接收到该字节数据后都将这7位地址与自身地址进行比较,如果相同,则认为自己被主机寻址,然后再根据第8位将自己定义为发送器或者接收器
起始信号和停止信号
SCL为高电平时,SDA由高变低表示起始信号
SCL为高电平时,SDA由低变高表示停止信号
起始信号和停止信号都是由主机发出,起始信号产生后总线处于占用状态停止信号产生后空闲状态
字节传送与应答
IIC总线通信时每个字节为8位长度,数据传送时,先传送最高位,后传送低位,发送器发送完一个字节数据后接收器必须发送1位应答位来回应发送器即一帧共9位
同步信号
IIC总线在进行数据发送时,时钟线SCL为低电平期间发送器向数据线上发送一位数据,在此期间数据线上的信号允许发生变化,时钟线在高电平期间接收器从数据线上读取一位数据,在此期间数据线上的信号不允许发生变化,必须保持稳定。
IIC和SPI的异同
相同点:
1. 均采用串行、同步的方式
2. 均采用TTL电平,传输距离和应用场景类似
3. 军采用主从方式工作
不同点:
1. IIC为半双工,SPI为全双工
2. IIC有应答机制,SPI无应答机制
3. IIC通过向总线广播从机地址来寻址,SPI通过向对应从机发送使能信号来寻址
4. IIC的时钟极性和时钟相位固定,SPI的时钟极性和时钟相位可调