串口通讯——UART、SPI、I2C(总结)
1.全双工与半双工
UART和SPI都是全双工通信方式,因为他们的数据线都有两根,即可以在同一时间A发数据给B,B也可以在这个时间发数据给A。
I2C通信只有一根数据线,所以他不能在同一时间双向传输数据。
2.同步通信与异步通信
同步通信是指:发送方发出数据后,等待接收方发回响应以后再发送下一个数据包的通讯方式。
异步通信是指:发送方发出数据后,不等待接收方发回响应,直接发送下一个数据包的通讯方式。
同步通信是阻塞模式,异步通信是非阻塞模式。阻塞模式意味着占用更少的CPU资源。
SPI和I2C都有时钟线,都是同步通信方式。UART是异步通信方式。(设置共享时钟信号的通信协议都称为同步通信)
3.UART通信
两个UART直接通信。将控制设备的并行数据转换为串行形式发送。只需要两条线即可在两个UART之间传输信息。
UART属于异步通信,没有时钟信号。它会在数据包中增加开始和停止位。这些位定义了数据包的开始和结束,因此接收UART知道何时读取这些数据。
UART通信优点:
1.仅使用两根线
2.异步通信,无需时钟信号
3.具有奇偶校验位以允许进行错误检查、
UART通信缺点:
1.数据帧的大小最大为9位
2.不支持多个从属系统或多个系统
4.SPI通信
SPI可以无中断传输数据,可以连续地发送或接收任意数量的位。但是I2C和UART中,数据以数据包的形式发送,有限定位数。
在SPI设备中,设备分为主机控制设备(通常是微控制器)和从机(通常是传感器,显示器和存储芯片)设备,从机从主机那获取指令。
SPI信号线有四种: MOSI-信号线:主机输出,从机输入; MISO-信号线:主机输入,从机输出; SCLK-时钟信号; SS/CS-片选信号;
SPI协议特点: 从机的数量受系统负载电容的限制,它会降低主机在电压电平之间准确切换的能力。
时钟信号: 每个时钟周期传输一位数据,因此数据传输的速度取决于时钟信号的频率。 UART无时钟信号,双方设置预先配置的波特率,该波特率决定了数据传输的速度和时序。
时钟信号由于是主机配置生成的,因此SPI通信始终由主机启动。
片选信号: 主机通过拉低从机的CS/SS来使能通信。主机可以与存在多个CS/SS引脚,允许主机与多个从机进行通信。
SPI优缺点
优点: 无起始位和停止位,因此数据可以持续传输不会中断;数据传输速率快(比I2C快几乎两倍)。独立的MISO、MOSI可以同时发送和接收数据。
缺点: 使用四根线(I2C使用两根线),没有信号接收成功的确认(I2C有此功能),没有任何形式的错误检查(UART中的奇偶校验位)
5.I2C通信
半双工通信,结合了SPI和UART的优点,可以将多个从机连接到单个主机(如SPI),也可以多个主机控制一个或多个从机。串行通信,SCL为时钟线。
不同于SPI的片选线,它是寻址确认从机设备。 主机将要通信的从机地址发送给每个从机,然后每个从机将其与自己的地址进行匹配比较,如果匹配,他就向主机发送一个低电平ACK位。不匹配不执行操作,SDA保持高电平。
I2C优点
1.仅仅使用两根线
2.支持多个主机和从机
3.硬件比UART更简单
I2C缺点
1.数据传输比SPI慢
2.数据帧大小限制为8位
6.三种协议表格对比
| 通信协议 | UART | SPI | I2C |
|---|---|---|---|
| 信号线数目 | 3根(RX TX GND) | 4根(MOSI MISO SCLK CS/SS) | 2根(SDA SCLK) |
| 设备从属关系 | 两设备直连 | 一主多从,用片选信号拉低电平选择从机 | 支持多个主机和从机,用寻址选择从机 |
| 通信方式 | 全双工通信 | 全双工通信 | 半双工通信 |
| 通信速率 | 速度慢 | 比I2C速度快 | 没SPI速率快 |
| 通信特征 | 异步通信 | 同步通信 | 同步通信 |
| 一帧可以传5-8位 | 可以无中断的传输,允许一位一位的传输 | 一次传8位 |
参考:
1.blog.csdn.net/qq_52608074… # 串口通信————UART、I2C、SPI详解(总结篇)
2.t.csdn.cn/dg905 # SPI、I2C、UART(即串口)三种串行总线详解