一、串口通信基础知识
1、常见的串行通信标准
- 目前常见串行通信接口标准有RS-232、RS-422、RS-485等。另外,SPI(串行外设接口)、I2C(内置集成电路)和CNA(控制器局域网)通信也属于串口通信。
2、常见的电平信号及其电气特性
- TTL电平
逻辑1 | 逻辑0 | |
---|---|---|
输入 | >=2.0V | <=0.8V |
输出 | >=2.4V | <=0.4V |
噪音容限较低,约为0.4V,MCU芯片引脚都是TTL电平
2. CMOS电平
逻辑1 | 逻辑0 | |
---|---|---|
输入 | >=0.7V | <=0.3V |
输出 | >=0.8V | <=0.1V |
噪音容限高于TTL电平,Vcc为供电电压
3. RS-232电平
电平信号名称 | 逻辑1 | 逻辑0 |
---|---|---|
RS-232 | -15V ~ -3V | 3V ~ 15V |
PC的COM口为RS-232电平
4.USB电平
电平信号名称 | 逻辑1 | 逻辑0 |
---|---|---|
USB电平 | (Vd+- Vd-)>= 200mV | (Vd-- Vd+)>= 200mV |
采用差分电压,4线制:Vcc、GND、D+、D-
二、UART(通用异步收发器)协议
是一种通用的串行、异步通信总线,该总线有两条数据线,可以实现全双工的发送和接收,在嵌入式系统中常用于主机与辅助设备之间的通信。
1、UART消息帧格式
- 空闲位:不进行传输数据时,默认为逻辑1,为高电平;
- 起始位:先发出一个逻辑“0”,表示消息帧的开始;
- 数据位:紧接着起始位之后,可由5~8位组成,通常传输8位即一个字节。先发送数据的低位,后发送数据的高位;
- 奇偶校验位:紧接着数据位后面(可有可无),使得“1”的位数应为偶数(偶校验)或奇数(奇校验),校验数据传输是否正确;
- 停止位:它是消息传输结束的标志,它可以是1位、1.5位、2位的高电平, 由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。
- 波特率:是衡量数据传输速率的指标,表示每秒钟传输的位数。例如设置串口的波特率为9600,则表示是1s传输9600个bit的数据,则传送每个位的时间为 1s / 9600 ≈ 104us,从而区分消息帧中每个位传输的数据;
假如从A设备通过串口传输“Hi”给设备B,参数为:波特率9600,无校验位,停止位1位
查询ASCLL表知道 ‘H’对应的二进制表示 0100 1000,‘i’对应的二进制表示 0110 1001,发送效果如下图所示:
设备A和设备B按照约定的波特率,设备A从start开始,每经过104us向设备B发送一个bit,同时设备B每经过104us向设备A接收一个bit的数据,从而实现数据的传输。
缺点:UART一般直接使用TTL信号来表示0和1,但TTL信号抗干扰能力较差,数据在传输过程中很容易出错;且TTL信号的通信距离也很短;
三、RS-232、RS-422、RS-485通信协议
UART只是对信号的时序进行了定义,而未定义接口的电气特性。
RS-232、RS-422和RS-485标准最初都是由美国电子工业协会制定并发布的。
1、RS-232协议
- 现在工业控制的RS-232接口一般只使用RXD、TXD、GND三条线,且PC机一般采用DB-9连接器;
- 特性:
- 工作方式:单端(非平衡);
- 节点数:点对点通讯(1收1发);
- 最大传输距离:50ft ( 50 * 0.3048 = 15.24m);
- 最大传输速率:20kbit/s;
- 连接方式:点对点(全双工);
- 电气特性:-3V ~ -15V表示逻辑1,3V ~ 15V表示逻辑0;
常用芯片有max232、SP232等
缺点:通信距离短,速率低,而且只能点对点通信,无法组建多机通信系统,且容易受外界电气干扰导致信息传输错误。
2、RS-422协议
RS-422标准定义了一种平衡通信接口,改变了RS-232标准的单端通信的方式,总线上使用差分电压进行信号传输。传输速率提高到10Mbit/s,传输距离长达4000ft=1219.2m(速率低于100kbit/s时),而且运行总线上最多连接10个接收器。
- 特性:
- 工作方式:差分(平衡);
- 节点数:点对多通讯(1发10收);
- 最大传输距离:4000ft ( 4000 * 0.3048 = 1219.2m);
- 最大传输速率:10Mbit/s;
- 连接方式:一点对多点(四线制,全双工);
- 电气特性:2V ~ 6V表示逻辑1,-2V ~ -6V表示逻辑0;
缺点:连接的设备少,抗干扰能力不强,无法完全满足工业需求。
常用芯片有max232、SP232等
2、RS-485协议
RS-485标准运行连接多个收发器,即具有多站能力,增加了多点、双向的通信能力。
- 特性:
- 工作方式:差分(平衡);
- 节点数:点对多通讯(1发32收);
- 最大传输距离:4000ft ( 4000 * 0.3048 = 1219.2m);
- 最大传输速率:10Mbit/s;
- 连接方式:多点对多点(两线制,半双工);
- 电气特性:2V ~ 6V表示逻辑1,-2V ~ -6V表示逻辑0;
常用芯片有max485、SP3072EEN等,以SP3072EEN收发器芯片的典型应用电路如下
一主多从效果图:
在RS-485总线网络基础下制定的Modbus应用层通信协议可参考传感网应用开发(中级)网络协议报文详解
四、CAN通信协议
CAN(Control Area Network,控制器局域网)由德国Bosch公司于1983年开发出来,最早被应用于汽车内部控制系统的监测与执行机构间的数据通信,目前是国际上应用最广泛的现场总线之一。
1、CAN总线具有以下主要特性:
- 数据传输距离远(最远10km);
- 数据传输速率高(最高数据传输速率1Mbit/s);
- 具备优秀的仲裁机制;
- 使用筛选器实现多地址的数据帧传递;
- 借助遥控帧实现远程数据请求;
- 具备错误检测与处理功能;
- 具备数据自动重发功能;
- 故障节点可自动脱离总线且不影响总线上其它节点的正常工作;
2、 CAN技术规范与标准
- ISO 11898标准的CAN通信数据传输速率为125kbit/s~1Mbit/s,适合高速通信应用场景;而ISO 11519标准的CAN通信数据传输速率为125kbit/s以下,适合低速通信应用场景。
- CAN技术规范主要主要对OSI基本参考模型中的物理层(部分)、数据链路层和传输层(部分)进行了定义。
3、CAN总线报文信号和网络拓扑
ISO 11898在静态时两条信号线上电平电压均为2.5V左右(电位差0V),此时的状态表示1(称为“隐性电平”状态),当CAN_H上的电压值为3.5V且CAN_L上的电压值为1.5V时,两线的电位差为2V,此时的状态表示逻辑0(称为“显性电平”状态)。
ISO 11519标准在静态时,当CAN_H上的电压值为4.0V且CAN_L上的电压值为1.0V时,两线的电位差为3.0V,,此时的状态表示0(称为“显性电平”状态),当CAN_H上的电压值为1.75V且CAN_L上的电压值为3.25V时,两线的电位差为-1.50V,此时的状态表示逻辑1(称为“隐性电平”状态)。
CAN总线网络拓扑图如下:
高速CAN总线ISO 11898网络被应用在汽车动力与传动系统,它是闭环网络,总线最大长度是40m,求端各有一个120Ω的电阻。
低速CAN总线ISO 11519网络被应用在车身系统,它的两根总线是独立的,不形成闭环,要求每根总线上各串联一个2.2kΩ的电阻。
传输介质可用双绞线、同轴电缆和光纤。
4.、CAN通信帧的介绍
(1)数据帧
用途:用于发送单元向接收单元传送数据
- 数据帧由7个段构成
- 帧起始,表示数据帧和远程帧的起始,他仅由一个“显性电平”位组成。
- 仲裁段,是表示帧优先级的段。标准帧的仲裁段由11bit的标识符ID和RTR(远程发送请求)位组成;扩展帧的仲裁段由29bit的标识符ID、SRR(替代远程请求位)、IDE位和RTR为构成。
- 控制段,是表示数据的字节数和保留位的段,标准帧与扩展帧的控制段格式不同。
- 数据段,用于承载数据的内容,它包含0~8B的数据,从MSB(最高有效位)开始输出。
- CRC段,是用于检查帧传输是否错误的段,它由15bit的CRC序列和1bit的CRC界定符(用于分隔)构成。
- ACK段,是用于确认接收是否正确的段,它由ACK槽和ACK界定符(用于分隔)构成,长度为2bit
- 帧结束,用于表示数据帧的结束,它由7bit的隐性位构成。
(2)遥控帧
用途:用于接收单元向具有相同ID的发送单元请求数据。
(3)错误帧
用途:用于当检测出错误时向其他单元通知错误。
(4)过载帧
用途:用于接收单元通知发送单元其尚未做好接收准备。
(5)帧间隔
用途:用于分隔数据帧和遥控帧的帧。
帧间隔的构成元素有三个:
一是间隔,它由3bit的隐性位构成。
二是总线空闲,它由隐性电平构成,且无长度限制。只有在总线处于空闲状态下,要发送的单元才开始访问总线。
三是延迟传送,它由8bit的隐性位构成。
五、I2C通信协议
1、总线简介
IIC(Inter-Integrated Circuit)其实是IICBus简称,所以中文应该叫集成电路总线,它是一种串行通信总线,使用多主从架构,由飞利浦公司在1980年代为了让主板、嵌入式系统或手机用以连接低速周边设备而发展;IIC总线有两根双向的信号线,一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步。
2、IIC通信过程
- 主机发送起始信号启用总线;
- 主机发送一个字节数据指明从机地址和确定后续主机从机的传递方向;
- IIC总线上各从机判断主机发送的从机地址是否是自己,匹配的从机发送应答信号回应主机;
- 发送器发送一个字节数据;
- 接收器发送应答信号回应发送器;
- …(循环重复步骤4、5);
- 最后通信完成后主机发送停止信号释放总线;
IIC总线发送和停止时序图:
IIC总线发送数据时序图:
3、IIC典型时序
- 主机向从机发送数据
- 从机向主机发送数据
3.主机先向从机发送数据,然后从机再向主机发送数据
六、SPI通信协议
1、SPI总线的简介
SPI是由摩托罗拉公司开发的高速全双工同步串行通信协议(一主多从)。 有点类似IIC,但又与IIC选通从设备的方式不同,IIC是通过发送从机地址来选通从机,而SPI是通过拉低连接到从机的NSS引脚对从机进行选通的。
SPI一般应用由四个引脚组成(一主多从):
- SCLK(Serial Clock):串行时钟,由主机发出;
- MOSI(Maser Output,Slave Input):主机输出从机输入信号,由主机发出;
- MISO(Master Input,Slave Output):主机输入从机输出信号,由从机发出;
- NSS(Slave Selected):选择信号,由主机发出,一般是低电位有效。
SPI主从连接如图所示:
2、SPI通信的过程
SPI是串行通信协议,但是主机占用的引脚明显比IIC和UART多,而主机引脚数会随着从机数量增多而增多。主机在通过MOSI数据线发送数据的同时,从机也会通过MISO将数据传输给主机(收发同时进行),它们以虚拟似缓形拓扑连接。数据通常先移出最高位,在时钟边沿,主机和从机均移出一位,然后在传输线上输出给对方(改变数据)。在下一个时钟沿,主从设备的接收器都从传输线接受该位,并设置为移位寄存器的新的最低有效位(采样数据)。在完成这样一个移出一移入的周期后,主机和从机就交换了寄存器中的一位,传输可能会持续任意数量的时钟周期。传输完成后,主设备会停止时钟信号,并拉高NSS选通线。
版权声明:本文为CSDN博主「程序小鹿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/a6662580/article/details/122601481
暂无评论