IIC和SPI有什么区别?

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/05 08:12:34
IIC和SPI有什么区别?

IIC和SPI有什么区别?
IIC和SPI有什么区别?

IIC和SPI有什么区别?
1.SPI
SPI 是一种四线制串行总线接口,为主/从结构,四条导线分别为串行时钟(SCLK)、主出从入(MOSI)、主入从出(MISO)和从选(SS)信号.主器件为时钟提供者,可发起读从器件或写从器件操作.这时主器件将与一个从器件进行对话.当总线上存在多个从器件时,要发起一次传输,主器件将把该从器件选择线拉低,然后分别通过 MOSI 和 MISO 线启动数据发送或接收.
SPI 时钟速度很快,范围可从几兆赫兹到几十兆赫兹,且没有系统开销.SPI 在系统管理方面的缺点是缺乏流控机制,无论主器件还是从器件均不对消息进行确认,主器件无法知道从器件是否繁忙.因此,必须设计聪明的软件机制来处理确认问题.同时,SPI 也没有多主器件协议,必须采用很复杂的软件和外部逻辑来实现多主器件架构.每个从器件需要一个单独的从选择信号.总信号数最终为 n+3 个,其中 n 是总线上从器件的数量.因此,导线的数量将随增加的从器件的数量按比例增长.同样,在 SPI 总线上添加新的从器件也不方便.对于额外添加的每个从器件,都需要一条新的从器件选择线或解码逻辑.图 2 显示了典型的 SPI 读/写周期.在地址或命令字节后面跟有一个读/写位.数据通过 MOSI 信号写入从器件,通过 MISO 信号自从器件中读出.
2.IIC总线
IIC 是一种二线制串行总线接口,工作在主/从模式.二线通信信号分别为开漏 SCL 和 SDA 串行时钟和串行数据.主器件为时钟源.数据传输是双向的,其方向取决于读/写位的状态.每个从器件拥有一个唯一的 7 或 10 位地址.主器件通过一个起始位发起一次传输,通过一个停止位终止一次传输.起始位之后为唯一的从器件地址,再后为读/写位.
IIC总线速度为从0Hz到3.4MHz.它没有SPI 那样快,但对于系统管理器件如温度传感器来说则非常理想.IIC 存在系统开销,这些开销包括起始位/停止位、确认位和从地址位,但它因此拥有流控机制.主器件在完成接收来自从器件的数据时总是发送一个确认位,除非其准备终止传输.从器件在其接收到来自主器件的命令或数据时总是发送一个确认位.当从器件未准备好时,它可以保持或延展时钟,直到其再次准备好响应.
IIC允许多个主器件工作在同一总线上.多个主器件可以轻松同步其时钟,因此所有主器件均采用同一时钟进行传输.多个主器件可以通过数据仲裁检测哪一个主器件正在使用总线,从而避免数据破坏.由于 IIC总线只有两条导线,因此新从器件只需接入总线即可,而无需附加逻辑.