SPI和IIC总线协议

目录

SPI总线

 SPI寻址方式

SPI通信过程

极性和相位

IIC总线

IIC总线通信过程

IIC总线寻址方式

起始信号和停止信号

字节传送与应答

同步信号

IIC和SPI的异同


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的时钟极性和时钟相位可调

IIC总线SPI总线是两种不同的通信协议,它们在硬件连接数据传输方式上有一些区别。 1. 硬件连接: IIC总线使用双线(SCLSDA)连接,而SPI总线使用三线(SCLK、SDOSDI)或四线(SCLK、SDO、SDISS)连接。SPI总线还可以通过片选信号(SS)连接多个从设备。 2. 数据传输方式: IIC总线是双向的,可以在同一根线上进行数据输入输出。而SPI总线是全双工的,可以同时进行数据的输入输出。SPI总线还可以通过多根数据线(MOSIMISO)实现全双工通信。 3. 适用范围: IIC总线适用于近距离、非常性的数据通信,具有总线仲裁机制,可以实现设备组网。SPI总线适用于多个SPI设备互相连接的场景,可以实现全双工通信。 4. 端口占用: IIC总线在CPU端口占用较少,而SPI总线需要更多的端口资源。 总的来说,IIC总线SPI总线在硬件连接、数据传输方式适用范围上有所不同。选择使用哪种总线取决于具体的应用需求硬件资源的限制。 #### 引用[.reference_title] - *1* [硬件:SPI总线 与 IIC总线区别](https://blog.csdn.net/ilufam1314/article/details/111576995)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [I2CSPI总线对比](https://blog.csdn.net/skyflying2012/article/details/8237881)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值