通信协议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
- 全双工
- TXD、RXD、GND
- 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由低变高电平,总线为空闲状态,发送器不想发送或接收器不想接收时,主机发送停止信号
通信过程
- 主机发送起始信号启用总线,总线被主机A占用,其他主机停用总线
- 主机A发送一个字节的数据指明从机地址(高7位)和后续字节的传送方向(最低1位,0主机发;1主机收。0主机->从机,1从机->主机)(发送器和接收器是传送方向上的主机或从机)
- 被寻址的从机发送应答信号回应主机A(总线上所有从机将第一个字节的高7位从机地址与自己地址比较)
- 发送器发送一个字节数据(第一个字节最后一位=0,发送器为主机,接收器为从机,同理最后一位=1,发送器是从机,接收器是主机)
- 接收器发送应答信号回应发送器
- 循环步骤4,5(数据发送过程中不允许改变通信方向)
- 通信完成,主机发送停止信号释放总线,其他主机可以启用总线
I2C通信时,每个字节长度8位,先传输最高位,后传输低位,发送器发送完一个字节8位数据后,接收器必须发送1位应答位(低电平)回应
发送器和接收器要同步信号
- SCL为低电平期间,发送器向数据线上发送1位数据,数据线上的信号允许发生变化(SDA变化)
- SCL为高电平期间,接收器从数据线上接收1位数据,数据线上的信号不允许发生变化,必须保持稳定(SDA不变)
I2C时序
主机向从机发送数据(黄色主机发,蓝色从机发)
从机向主机发送数据(黄色主机发,蓝色从机发)
主机先向从机发送数据,不发送停止信号,然后从机再向主机发送数据(黄色主机发,蓝色从机发)
SPI
- 全双工、同步
- 时钟线SCLK、主出从入MOSI、主入从出MISO、片选信号CS(chip select)(可能有多根CS线)
- 主从方式工作,一个主机和一个或多个从机
- 高速(速度大于I2C)、低功耗、适合短距离传输
寻址方式
- SPI没有从机地址
- 主机和某个从机通信时,主机向片选线上发送使信号(高或低电平,根据从机设备管脚符号定,CS上面有横线表示低电平有效)表示选中该从机设备。
通信过程
- 数据通信,先传输高位,后传输低位
- 高电平表示逻辑“1”,低电平表示逻辑“0”
- 没有起始信号和停止信号,一个字节传输完成后无需应答信号,即可开始下一个字节的传输
- 时钟线在上升沿或下降沿时,发送器向数据线上发送数据,在紧接着的下降沿或上升沿时,接收器从数据线上读取数据,完成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的主要内容,如果未能解决你的问题,请参考以下文章
uart最大速率_傻傻分不清,UARTRS232RS422RS485间有何差别?
转载:常用的嵌入式硬件通信接口协议(UARTIICSPIRS-232RS-485RS-422CANUSBIRDA)