一、名字
- SPI(Serial Peripheral Interface:串行外设接口),是Motorola公司提出的一种同步串行数据传输标准。
- I2C(INTER IC BUS:IC之间总线),是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备,是微电子通信控制领域广泛采用的一种总线标准。
- UART(Universal Asynchronous Receiver Transmitter:通用异步收发器),是电脑硬件的一部分,它把将要传输的资料在串行通信与并行通信之间加以转换,UART通常被集成于其他通讯接口的连接上。UART即我们通常说的“串口”。
二、UART、SPI、I2C对比
UART、SPI、I2C对比表格
| 对比项 | UART | SPI | I2C |
| 信号线数目 | 3根,RX、TX、GND | 4根,SDO、SDI、SCLK、SS | 2根,SDA、SCLK |
| 设备从属关系 | —— | 存在主从设备。SPI用片选信号选择从机 | 存在主从设备。IIC用地址选择从机。 |
| 通信方式 | 全双工通信 | 全双工通信 | 半双工通信 |
| 通信速率 | 速度慢 | 比I2C总线要快,速度可达到几Mbps | I2C的速度比SPI慢 |
| 应用领域 | 1、UART常用于控制计算机与串行设备的芯片
<p>2、就是我们经常所说的串口,基本都用于调试。</p>
</td>
<td style="width:215px;">主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间</td>
<td style="width:307px;">I2C一般是用在同一个板子上的2个IC之间的通信 ,它可以替代标准的并行总线,连接各种集成电路和功能模块。</td>
</tr><tr><td style="width:105px;">传输距离</td>
<td style="width:152px;"> </td>
<td style="width:215px;"> </td>
<td style="width:307px;">I2C需要有双向IO的支持,而且使用上拉电阻,抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信</td>
</tr><tr><td style="width:105px;">通信特征</td>
<td style="width:152px;">异步,一帧可以传5/6/7/8位</td>
<td style="width:215px;">同步,<span style="color:#f33b45;"><strong>SPI允许数据一位一位的传送</strong></span>,甚至允许暂停。从最高位开始传。</td>
<td style="width:307px;">同步,电平信号,一次连续8bit。从最高位开始传</td>
</tr><tr><td style="width:105px;">协议复杂度</td>
<td style="width:152px;">结构比较复杂</td>
<td style="width:215px;">SPI实现要比UART简单,UART需要固定的波特率,就是说两位数据的间隔要相等,而SPI则无所谓,因为它是有时钟的协议。</td>
<td style="width:307px;">协议比SPI复杂,但是连线比标准的SPI要少</td>
</tr><tr><td style="width:105px;">对比</td>
<td style="width:152px;"> </td>
<td style="