Skip to content

240924-通讯协议总结

双工与否?

  • 全双工:在同一时刻,两个设备之间可以同时收发数据
  • 半双工:两个设备之间可以收发数据,但不能在同一时刻进行
  • 单工:在任何时刻都只能进行一个方向的通讯

同步与否?

  • 有时钟:同步通信
  • 无时钟:异步通信

1 RS232

RS232 提高电压后增加了串口通信的传输能力以及抗干扰能力

2 RS485

使用一对差分信号线,支持多个节点,多个主设备

3 串口通讯协议

  • 起始位为低电平,停止信号为高电平
  • 有效数据为 5~8 位可配置
  • 校验位:奇偶检验

波特率为 总线时钟 / (16 * BRR)

4 I2C

物理层:

由于 I2C 协议是多个主从设备连接到同一根总线上的,因此不能使用推挽输出,因为如果使用了的话会出现某个 IO 口的 Vee 和 GND 连接到一起,出现短路的情况。

使用开漏输出的话就由于上拉电阻的存在可以避免这一问题的出现,但是需要注意开漏输出的高电平没有驱动能力,需要借助外部上拉输出高电平。

I2C 设备空闲时,输出高阻态,所有设备都空闲则都输出高阻态,由上拉电阻把总线拉为高电平。

协议层:

  • 主机在发送起始信号后所有从机都会接收到,根据协议,接下来发送广播的从机地址信号
  • 地址位后的读写位高电平读、低电平写
  • 从机接收到匹配的地址之后,只有接收到应答信号后主机才能继续发送或接收数据

当主机写的时候

  • 从机回复应答信号,主机再发送一个字节,数据传输结束后主机给从机发送通知信号

当主机读的时候

  • 主机若不想接收数据了的话,主机给从机返回一个非应答信号

第三幅图为复合格式,两段起始信号:

  • 主机通过第一次传输的起始信号找到从及设备后,再发送一段数据,这段数据一般用于表示从设备内部的寄存器或存储器地址
  • 在第二次传输的时候则为实际读写内容

在 SCL 为低电平时,SDA 无效

5 SPI

相比于 I2C 的广播地址选择设备,SPI 多添加了片选线(NSS)低电平有效,高电平为结束信号

在时钟的下降沿进行数据采样。

含有四种通讯模式: