image-20240420163459407

通信协议

串口通信

串口通信的基本原理

串口通信是一种通过串行通信接口进行数据传输的通信方式。串口通信是一种异步通信方式,通信双方通过一个共享的时钟信号来同步数据传输。串口通信的基本原理是通过串行通信接口将数据分割成一个个的数据包,然后通过串行通信接口将数据包发送到接收端,接收端再将数据包还原成原始数据。

特点:

全双工通信:串口通信是一种全双工通信方式,通信双方可以同时发送和接收数据。
波特率:串口通信的速度是通过波特率来控制的,波特率越高,数据传输速度越快。单位是波特/秒。二进制下的波特率是指每秒钟传输的位数。

发送格式

  1. 起始位:逻辑0
  2. 数据位:数据位的个数是一个字节的数据位数,通常是8位,范围5-8位,先发低位
  3. 校验位:校验位是用来检验数据传输是否正确的,通常有奇校验和偶校验两种方式
  4. 停止位:停止位是用来标识数据传输结束的,通常有1位或2位

每次一字节完毕通过停止位分割,通过波特率区分连续1,校准,防止累计误差

I2C通信

I2C(Inter-Integrated Circuit)是一种串行总线通信协议,由飞利浦公司(现在的恩智浦公司)开发。I2C总线是一种双线制的总线,包括两根线:串行数据线(SDA)和串行时钟线(SCL)。I2C总线上的每个设备都有一个唯一的地址,通过地址来识别设备。I2C总线上的设备可以是主设备(Master)或从设备(Slave),主设备负责发起通信,从设备负责响应通信。

特点:

  1. 串行总线:I2C总线是一种串行总线,通过两根线进行数据传输
  2. 双线制:I2C总线包括两根线:串行数据线(SDA)和串行时钟线(SCL)
  3. 唯一地址:I2C总线上的每个设备都有一个唯一的地址7位,通过地址来识别设备
  4. 主从设备:I2C总线上的设备可以是主设备(Master)或从设备(Slave),主设备负责发起通信,从设备负责响应通信

发送过程

  1. 主设备发送起始信号
  2. 主设备发送从设备地址7位和读写位1位,一个字节
  3. 从设备发送应答信号
  4. 主设备发送数据(根据读写位判断主设备,0表示主到从),一个字节,先发高位,发完一个字节接收1位应答位
  5. 从设备发送应答信号
  6. 重复4、5直到数据传输完毕
  7. 主设备发送停止信号
  8. 从设备发送应答信号
  9. 通信结束

同步信号
主机具有总线管理权
默认高电平

  1. 起始信号:SCL为高电平时,SDA由高电平转为低电平
  2. 停止信号:SCL为高电平时,SDA由低电平转为高电平,必须 主机发起
  3. 发送数据:SCL为低电平时,SDA的数据线可以改变,发送数据,SCL为高电平时,SDA的数据线保持不变,接收端读取数据
  4. 应答信号:SCL为高电平时,SDA由高电平转为低电平

想变方向,重新发起始信号,防止抢走线

SPI通信

SPI(Serial Peripheral Interface)是一种串行外设接口,由Motorola公司开发。SPI总线是一种四线制的总线,包括四根线:串行数据输入线(MISO)、串行数据输出线(MOSI)、串行时钟线(SCK)和片选线(SS)。SPI总线上的每个设备都有一个片选线,通过片选线来选择设备。SPI总线上的设备可以是主设备(Master)或从设备(Slave),主设备负责发起通信,从设备负责响应通信。

主机CS1,CS2 ….用于片选
其中要发送的置0,其余置1

先高位,后低位

同步工作,无需应答

在一个上升沿,主机发送一个字节,紧接着的下降沿从机接收一个字节

极性和相位

  1. 极性:CPOL(Clock Polarity)是时钟极性,CPOL=0表示时钟空闲时为低电平,CPOL=1表示时钟空闲时为高电平
  2. 相位:CPHA(Clock Phase)是时钟相位,CPHA=0表示数据在时钟的第一个边沿采样,CPHA=1表示数据在时钟的第二个边沿采样