常用基本通信协议UART/I2C/SPI对比

这三种协议的参数对比如下

协议 引脚  同步异步  方向  大端小端  速率
 UART  TXD/RXD  异步  全双工  小端  baud rate: 9600/115200
I2C   SCL/SDA  同步  半双工 大端   100kbps/400kbps/3.4Mbps
SPI   MOSI/MISO/SS  同步  全双工 小端   比I2C快

由上图,我们可以看出,只要是同步通信方式,那么必定会存在一根时钟线,而如果是全双工的方式,那么就会有两条数据线,一收一发。

 

UART

  空闲时信号线维持高电平,以拉低1拍表示起始位,然后是8位数据位,截止位为1拍高电平,协议并未固定数据位为8位,数据位后还有可选的奇偶校验位,如下

 

 

I2C

  SCL为高时拉低SDA表示开始,续8个上升沿进行数据采样,外接一个应答位,从机应答并非强制需求,在SCL为高时SDA拉高表示结束。I2C属于总线协议,一主多从,传输数据前需要先发送从机ID与读写标志,后续接读写数据,最后为截止符,读写数据可连续。下面取两张我另一个I2C读写EEPROM博客里的时序供参考 https://www.cnblogs.com/qingkai/p/9803070.html

写时序

 

读时序

 

 

 

SPI

  SPI作为一个总线,从机的选择通过SS(slave select)实现,片选拉低后,接受端立刻可以开始采集数据,附上一部AD网站的图https://www.analog.com/cn/analog-dialogue/articles/introduction-to-spi-interface.html

 

posted @ 2016-11-08 22:54  自由的青  阅读(1314)  评论(0编辑  收藏  举报