通信协议UARTRS232RS485I2CSPICAN

Posted XXX_UUU_XXX

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通信协议UARTRS232RS485I2CSPICAN相关的知识,希望对你有一定的参考价值。

单工通信

只能发送器给接收器发送数据

双工通信

发送器可以给接收器发送数据,接收器也可以给发送器发送数据。

半双工:不能同时进行,发送和接收共用一根线。

全双工:同时进行,发送和接收各一根线。

数据用二进制方式0和1传输,高电平1,低电平0。

并行通信

(通天大道)

多根线一次性同时发送数据(每一根线发送一位数据)。

并行通信缺点:浪费资源,布线困难。

串行通信

(独木桥)

一根线逐个发送数据。

串行通信有SUBS、PPM、JTAG、UART、I2C、SPI、CAN、MIDI、USB、RS232等。

串行通信又分为同步和异步

UART(通用异步收发器)

  • 全双工、异步
  • TX发送端RX接收端

UART空闲状态通常保持在高电平,起始位给一个低电平,然后读取数据,停止位给一个高电平

  • 起始位:1位低电平(先打招呼)
  • 数据位:5/6/7/8位,先发低位,后发高位(再发信息)每次最大发送8位,防止累计误差产生
  • 校验位:校验数据正确性,降低但不可消除误码率,可有可无。奇偶校验数据中奇偶个数
  • 停止位:1/1.5/2位高电平

码元:一个二进制数

波特率:每秒传输码元的数量,单位bps(bit per second)

UART存在问题

  • 电气接口不统一。只对信号时序进行定义,未定义接口的电气特性。UART每个设备连接器标准不同;UART使用TTL电平不同处理器电平存在差异,可能51是0/5v,STM32是0/3.3v。
  • 抗干扰能力差。TTL信号抗干扰能力差,数据在传输过程中容易出错
  • 通信距离极短

RS232

  • 全双工
  • TXDRXDGND
  • RS232采用标准的连接器,并对连接器的每个引脚作用和电平做了规定,通信距离标准15m,实际可达25m。
  • 连接器一般使用9根线DB-9,工业领域RS232连接器只使用TXD、RXD、GND三根线。
  • 逻辑“1”的电平为-5v到-15v逻辑“0”的电平为+5v到+15v
  • 处理器产生的信号一般都是TTL电平,需要232芯片做电平转换。
  • 软件编程方面和UART一样,只是在电气特性方面改进了信号强度
  • 一对一通信。

RS232存在问题

  • 连接器电平较高容易损坏接口电路的芯片;与TTL电平不兼容,需要电平转换芯片做电平转换才能与TTL电路连接
  • 通信速度低,最高波特率为19200bps
  • 易产生共模干扰,抗噪声干扰能力弱
  • 传输距离短

RS485

  • 半双工
  • 正线、负线
  • 能在远距离和电子噪声大的环境下有效的传输信号,通信距离标准120m,实际可达3000m
  • 可以连接多个收发器,具有多站能力,485总线上可连接128个收发器。
  • 485采用两线制,两根数据线是缠绕在一起的,接线方式为总线式拓扑结构,同一总线上可以同时存在多个节点。
  • 采用差分信号(使用两根线上的电压差比较)进行数据传输,两根线间的电压差为+2v到+6v表示逻辑“1”,两根线间的电压差为-2v到-6v表示逻辑“0”
  • 需要电平转换芯片做电平转换,把TTL信号转换为差分信号。软件编程基于串口,但是不同同时发送和接收。

RS485优点

  • 通信速度快,数据最高传输速率为10Mbps
  • 抗干扰能力强
  • 通信距离远
  • 可实现多节点组网
  • 接口电平电压低,不易损坏接口电路芯片

RS485缺点

如果在485网络中有一个设备出现问题,可能会导致整个网络通信发送错误

I2C

  • 半双工、同步
  • SDA传输数据线用于收发数据、SDL时钟线用于通信双方时钟同步
  • 抗干扰能力差、近距离、低速,主要用于电路板上芯片数据交互。
  • I2C为多主机总线,连接I2C总线上的器件分为主机从机只能主机发起和结束一次通信,从机只能被主机呼叫
  • 每个连接在I2C总线上的器件都有唯一地址(7位),每个器件可以作为主机也可以作为从机,但同一时刻只能有一个主机。
  • 当总线上有多个主机同时启用总线时,I2C具备冲突检测和仲裁功能防止错误产生。
  • 总线上器件的增加和删除不影响其他器件。
  • 总线上发送数据的器件为发送器,接收数据的器件为接收器。时钟频率和数据的每一位是对应的。

起始信号和停止信号

  • 起始信号:SCL高电平,SDA由高变低电平,总线为占用状态,通知接收器什么时候接收数据
  • 停止信号:SCL高电平,SDA由低变高电平,总线为空闲状态,发送器不想发送或接收器不想接收时,主机发送停止信号

通信过程

  1. 主机发送起始信号启用总线,总线被主机A占用,其他主机停用总线
  2. 主机A发送一个字节的数据指明从机地址(高7位)和后续字节的传送方向(最低1位,0主机发;1主机收。0主机->从机,1从机->主机)(发送器和接收器是传送方向上的主机或从机)
  3. 被寻址的从机发送应答信号回应主机A(总线上所有从机将第一个字节的高7位从机地址与自己地址比较)
  4. 发送器发送一个字节数据(第一个字节最后一位=0,发送器为主机,接收器为从机,同理最后一位=1,发送器是从机,接收器是主机)
  5. 接收器发送应答信号回应发送器
  6. 循环步骤4,5(数据发送过程中不允许改变通信方向
  7. 通信完成,主机发送停止信号释放总线,其他主机可以启用总线

I2C通信时,每个字节长度8位,先传输最高位,后传输低位,发送器发送完一个字节8位数据后,接收器必须发送1位应答位(低电平)回应

发送器和接收器要同步信号

  • SCL电平期间,发送器向数据线上发送1位数据,数据线上的信号允许发生变化(SDA变化)
  • SCL电平期间,接收器从数据线上接收1位数据,数据线上的信号不允许发生变化,必须保持稳定(SDA不变)

I2C时序

主机向从机发送数据(黄色主机发,蓝色从机发)

从机向主机发送数据(黄色主机发,蓝色从机发)

主机先向从机发送数据,不发送停止信号,然后从机再向主机发送数据(黄色主机发,蓝色从机发)

SPI

  • 全双工、同步
  • 时钟线SCLK、主出从入MOSI、主入从出MISO、片选信号CS(chip select)(可能有多根CS线)
  • 主从方式工作,一个主机和一个或多个从机
  • 高速(速度大于I2C)、低功耗、适合短距离传输

寻址方式

  • SPI没有从机地址
  • 主机和某个从机通信时,主机向片选线上发送使信号(高或低电平,根据从机设备管脚符号定,CS上面有横线表示低电平有效)表示选中该从机设备。

通信过程  

  1. 数据通信,先传输高位,后传输低位
  2. 高电平表示逻辑“1”,低电平表示逻辑“0”
  3. 没有起始信号和停止信号,一个字节传输完成后无需应答信号,即可开始下一个字节的传输
  4. 时钟线在上升沿或下降沿时,发送器向数据线上发送数据,在紧接着的下降沿或上升沿时,接收器从数据线上读取数据,完成1位数据传输,8个时钟周期即可完成一个字节数据的传输

极性和相位

为保证主机和从机设备的工作模式(查芯片手册)一致,需要对主机的CPOL和CPHA进行设置

SPI有四种不同工作模式,取决于极性(CPOL)相位(CPHL)

  • CPOL=0,CPHA=0
  • CPOL=0,CPHA=1
  • CPOL=1,CPHA=0
  • CPOL=1,CPHA=1

CPOL表示SCLK空闲时状态

  • CPOL=0,空闲时SCLK为低电平
  • CPOL=1,空闲时SCLK为高电平

CPHA表示采样时刻

  • CPHA=0,每个周期的第一个时钟沿采样
  • CPHA=1,每个周期的第二个时钟沿采样

I2C和SPI异同点

相同点

  • 串行、同步
  • 采用TTL电平,传输距离近
  • 采用主从方式(I2C一个或多个主机和一个或多个从机;SPI一个主机和一个或多个从机)

不同点

  • IIC半双工;SPI全双工
  • IIC有应答机制;SPI无应答机制
  • IIC通过向总线广播从机地址来寻址(节省硬件资源);SPI通过向对应从机发送使能信号来寻址(寻址速度快)
  • IIC时钟极性和时钟相位固定;SPI时钟极性和时钟相位不固定(主从一致)

CAN

半双工、异步

两根线

差分信号

显性电平逻辑“0”,隐形电平逻辑“1”

CAN总线可以挂载多个节点,每个节点可以作为主机发送数据,

物理层:CAN位填充消除累计误差,在连续5个电平相同的时候,会插入一个反转电平,例如连续五个高电平就会插入一个低电平

数据链路层:帧头起到同步作用,仲裁段起到防冲突作用,控制段,数据段,校验段,应答段

CAN优点

  • 低成本
  • 集中化
  • 稳定
  • 高效,CAN基于标识符进行优先排列,能让最高优先级标识符免于中断
  • 灵活
  • 具有自锁功能,如果某个设备出现故障,会自锁不影响总线网络
  • 方便维护

以上是关于通信协议UARTRS232RS485I2CSPICAN的主要内容,如果未能解决你的问题,请参考以下文章

浅析 UARTRS232TTL 之间的关系(转)

uart最大速率_傻傻分不清,UARTRS232RS422RS485间有何差别?

(嵌入式系统开发)stm32串口通信与RS-232

转载:常用的嵌入式硬件通信接口协议(UARTIICSPIRS-232RS-485RS-422CANUSBIRDA)

转载:常用的嵌入式硬件通信接口协议(UARTIICSPIRS-232RS-485RS-422CANUSBIRDA)

嵌入式09STM32串口通信协议