[I2C&SPI] I2C和SPI的异同

  1. I2C总线不是全双工(半双工),2根线SCL SDA。SPI总线实现全双工,4根线SCK CS MOSI MISO
  2. I2C总线是多主机总线,通过SDA上的地址信息来锁定从设备。SPI总线只有一个主设备,主设备通过CS片选来确定从设备
  3. I2C总线传输速度在100kbps-4Mbps。SPI总线传输速度更快,可以达到30Mbps以上。
  4. I2C总线空闲状态下SDA SCL都是高电平。SPI总线空闲状态MOSI MISO也都是 SCK是有CPOL决定的
  5. I2C总线SCL高电平时SDA下降沿标志传输开始,上升沿标志传输结束。SPI总线CS拉低标志传输开始,CS拉高标志传输结束(注意:有的控制器TRAN_CSR寄存器,GoBusy位: 向该位写 0 不起作用,写 1 将该位置 1 并启动一次传输,传输结束后该位自动清零(软复位亦可将 该位清零)。发起新的传输前,软件应查询该寄存器,该寄存器为 0 时才可发起新传输)
  6. I2C总线是SCL高电平采样。SPI总线因为是全双工,因此是沿采样,具体要根据CPHA决定。一般情况下master device是SCK的上升沿发送,下降沿采集
  7. I2C总线和SPI总线数据传输都是MSB在前,LSB在后(串口是LSB在前)
  8. I2C总线和SPI总线时钟都是由主设备产生,并且只在数据传输时发出时钟
  9. I2C总线读写时序比较固定统一,设备驱动编写方便。SPI总线不同从设备读写时序差别比较大,因此必须根据具体的设备datasheet来实现读写,相对复杂一些。

I2C vs SPI

信号线

两线:SCL、SDA

三线:SCLK、MOSI、MISO

四线:SCLK、MOSI、MISO、CS

通信方式

半双工同步串行

全双工同步通信串行

通信速率

100kbps-3.4Mbps

可达30Mbps以上

空闲时引脚电平

SCL和SDA都是高电平

MOSI和MOSI是高电平,SCLK有CPOL决定(0:低电平;1:高电平)

采样点

SCL高电平

SCLK边沿采样。具体由芯片的CPHA决定,如STM32、NXP和TI DSP相反

数据位

MSB在前,LSB在后

时钟源

主设备提供,并且只在数据传输时发送

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值