通讯协议之路主要分为两部分,第一部分从理论上面讲解各类协议的通讯原理以及通讯格式,第二部分从具体运用上讲解各类通讯协议的具体应用方法。
后续文章会同时发表在个人博客(jason1016.club)、CSDN;视频会发布在bilibili(UID:399951374)
RS485、RS232和串口通信是三个相关的概念,它们在串行通信中扮演不同的角色。
RS485是一种物理层标准,用于实现多点通信的串行通信。它定义了通信线路的电气特性、连接器和信号级别等。RS485使用差分信号传输,即使用两条信号线(A线和B线)来传输数据,其中A线和B线的电平相反。这种差分信号传输方式使得RS485可以在较长距离上进行可靠的数据传输,并支持多个设备在同一总线上进行通信。
RS232是一种物理层标准,用于实现点对点通信的串行通信。它定义了通信线路的电气特性、连接器和信号级别等。RS232使用正负电平来表示逻辑1和逻辑0,通常使用负电平表示逻辑1,正电平表示逻辑0。RS232通常使用DB9或DB25连接器,用于将串行通信设备与外部设备连接起来。
串口通信是一种通信方式,通过串行口(也称为串口)进行数据的发送和接收。串口通信可以使用不同的物理层标准,如RS485、RS232等。串口通信通常由串口控制器(如UART)负责将并行数据转换为串行数据进行发送,以及将串行数据转换为并行数据进行接收。
在实际应用中,RS485和RS232通常都被用作串口通信的物理层标准。RS485适用于多点通信的场景,可以连接多个设备在同一总线上进行通信。RS232适用于点对点通信的场景,通常用于连接计算机与外部设备之间的串行通信。串口通信可以使用RS485或RS232作为物理层标准,通过串口控制器(如UART)实现数据的发送和接收。
需要根据具体的应用需求和设备支持来选择使用RS485还是RS232作为串口通信的物理层标准。同时,还需要根据通信距离、设备数量、数据传输速率等因素来选择合适的物理层标准和通信方式。
链接:百度网盘 请输入提取码
提取码:1016
MCU管脚输出TTL电平,TTL电平的意思是,当MCU管脚输出0电平时,一般情况下电压是0V,当MCU管脚输出1电平时,电压是5V。因TTL电平的是由一条信号线,一条地线产生,信号线上的干扰信号会跟随有效信号传送到接收端,使得有效信号受到干扰,485通讯实际上是把MCU出来的TTL电平通过硬件层的一个转换器芯片进行转换:
把MCU出来的一条的TTL信号经过芯片转换为两根线(线A、线B)上的信号。当MCU给转换器输入低TTL电平时,转换器会使得B的电压比A的电压高,反之,A的电压比B的电压高。
485协议规约两条电平线上差值为多少表示0或者1,电压是通过仪表可以测量得到的,所以说RS-485是硬件层协议。
485协议的接收端可能是另一个MCU,MCU管脚也只接受TTL电平,转换芯片过来的是两条线的电压,所以需要对此两条线差分电压转换为TTL电平。
把TTL转为485,实质是一个集成芯片,其间无任何程序代码,纯粹硬件逻辑。同理,将485电平转为TTL也是如此。现在很多芯片把接收和转换都集成到一块IC,注意,转换器和接收器依旧是没有同时工作的,常见的转换芯片是MAX485。
可以这样理解,硬件层协议是公路,路的目的是为了让车辆能够过去。
首先了解什么是单工通讯,单工通讯是指数据只能朝着一个方向传输的通讯方式。而半双工通讯则是指对于通讯两端,不能同时相对方法发送数据,必须错开时间段发送。
RS-485的通讯线只有2条,且这两条通讯线在一次传输中都需要用到,因此485只可实现半双工通讯。485实现半双工通讯,会遇到一个问题,MCU1向MCU2发数据时,并不知道线上是否正传来MCU2数据,因为没有其他线可用来判断对方的收发状态,那么可能也会导致数据冲突。因此,RS-485要实现半双工通讯,就需要上层的软件协议加以规约,也就是做到”不能你想发数据就发数据”。可以理解,软件层协议就好像交通规则,它能让数据有序传输。
电子工业协会(EIA)于1983年制订并发布RS-485标准,并经通讯工业协会(TIA) 修订后命名为TIA/EIA-485-A,所以TIA/EIA-485-A才是真正的名字,因为人们已经叫习惯RS-485了,所以后续也一直沿用RS-485这个叫法。
RS-485标准是为弥补RS-232通信距离短、速率低等缺点而产生的。RS-485标准只规定了平衡发送器和接收器的电特性,而没有规定接插件、传输电缆和应用层通信协议。
RS-485标准与RS-232不一样,数据信号采用差分传输方式(Differential Driver Modc),也称作平衡传输,它使用一对双绞线,将其中一线定义为A,另一线定义为 B,如图所示。
RS-485传输方式:半双工通信、==(逻辑1:+2V ~ +6V 逻辑0:-6V ~ -2V)==这里的电平指AB 两线间的电压差。
因为大多数MCU的信号都是TTL信号,且数据是通过串口发送和接收,是不符合RS-485标准的,所以要将数据放在485通信线上传输的话,就要将TTL信号转为RS-485的差分信号,然后在AB线上传输,到达节点后再将RS-485的差分信号转换为TTL信号,给节点的MCU进行数据处理
RS-485数据链路示意图
RS485有两线制和四线制两种接线,四线制只能实现点对点的通信方式,现很少采用,多采用的是两线制接线方式,这种接线方式为总线拓扑结构,在同一总线上最多可以挂接32个节点。
RS-485总线同I2C,也是主从模式,支持点对点单从机模式,也支持多从机模式,不支持多主机模式。
该原理图是一个基本的RS-485电路,采用的是Sipex公司的SP3485芯片,是一款低功耗的,工作电压为3.3V的芯片,该芯片的一些特性后面会介绍到
微处理器的标准串行口通过RXD直接连接SP3485芯片的RO引脚,通过TXD直接连接SP485R芯片的DI引脚。
让该芯片处于发送模式还是接收模式的选择位是DE/!RE,一般情况下把这两个引脚接在一起,只用微处理器的一个引脚控制
U9是TVS管,环境恶劣时可加,做保护作用,平时实验可以不加
R25是上拉电阻,R27下拉,默认状态下将A拉高,B拉低,如果不加电阻,那默认情况下是不稳定的,会对单片机的引脚造成干扰
收发器内部是一个接收器(上半部分)加一个发送器(下半部分),然后就是引脚功能
RO:接收器输出
RE:接收器输出使能(低电平有效)
DE:发送器输出使能(高电平有效)
DI:发送器输入
GND:接地连接
A:发送器输出/接收器输入反相
B:发送器输出/接收器输入反相
Vcc:正极电源(+3.3V
如果微处理器输出的信号DE_nRE为高电平,则芯片处于发送模式(发送器/驱动器),差分输出A和B遵循数据输入DI处的逻辑状态;
当DI为高电平时,导致A转为高,B转为低。在这种情况下,定义为VOD=VA-VB的差分输出电压为正,也就是逻辑1(AB间的电压差为+2V ~ +6V);
当DI为低电平时,输出状态反转,B变高,A变低,VOD为负 ,为逻辑0(AB间的电压差为 -6V ~ -2V);
当DE低时,两个输出都变成高阻抗。在这种情况下,与D处的逻辑状态是不相关的。
如果微处理器输出的信号DE_nRE为低电平,则芯片处于接收模式(接收器),如果为高电平,则关闭接收模式;
AB间的电平大于+200mv时,RO引脚输出逻辑1;
AB间的电平小于-200mv时,RO引脚输出逻辑0;
当AB间的电平处于-200mv ~ +200mv之间时,则表示不稳定
特点:
单一的+5V电源
低功耗BiCMOS工艺制造
发送器/接收器可使能多分支结构(Mutli-Drop)配置低功耗关断模式(SP481E)
描述(SP481E,SP485E)
SP481E 和SP485E是半双工差分收发器,完全满足RS-485和 RS-422的要求。它们由Sipex特有的 BiCMOS工艺制造而成。
RS-485标准理想地用于多分支(multi-drop)应用和远程接口中。它允许在一条数据线上连接32个发送器和接收器,非常适合于多分支应用。由于允许使用4000英尺长的电缆,RS-485收发器可以使用一个宽(一7V~+12V)共模方式范围来调整零电位偏差。因为RS-485是一个差分接口,所以传输数据时完全可以抑制来自发送线的干扰。
特点
单一的+5V电源
允许超过400个收发器连接到同一条传输线上(1/10单位负载)接收器输入高阻抗(标准值RIN=150kQ)
半双工配置与工业标准管脚一致
共模输入电压范围为-7V~+12V
包含关断模式(ICC
独立发送器和接收器使能
SP485R芯片是由业内专业的通讯接口器件厂商Sipex 公司设计生产的高性能RS-485收发器,能够替换通用的RS-485收发器,并在许多方面有所增强。
SP481R和SP485R与现有的SP485产品管脚对应相同,而且包含更高的ESD保护和高接收器输入阻抗等性能。接收器输入高阻抗可以使400个收发器接到同一条传输线上又不会引起RS-485发送器信号的衰减。各器件封装为8脚塑料DIP或8脚窄SOIC。SP481R通过使能管脚来提供关断功能,可将电源电流(Icc)降低到0.5uA 以下。
特点
RS-485和 RS-422收发器工作电源为+3.3V
可与+0.5V的逻辑电路共同工作发送器/接收器使能
低功耗关断模式(SP3481)-7V~+12V的共模输入电压范围
允许在同一串行总线上连接32个收发器与工业标准75176管脚配置兼容
发送器输出短路保护
描述(SP3481,SP3485)
SP3481和SP3485是+3.3V低功耗半双工收发器家族的成员,它们完全满足RS-485和RS-422串行协议的要求。这两个器件与Sipex 的SP481、SP483和SP485的管脚互相兼容,同时兼容工业标准规范。SP3481和 SP3485由 Sipex特有的BiCMOS工艺制造而成,但性能不受影响。
特点
单一的+5V电源
低功耗BiCMOS工艺制造发送器/接收器使能(SP491E)RS-485和 RS-422发送器/接收器
管脚兼容LTC490和 SN75179(SP490E)管脚兼容LTC491和 SN75180 (SP491E)增强型ESD规范:
正负15kV人体放电模式(Human Body Model)
SP490E是一个低功耗差分收发器,满足RS-485和RS-422标准规范,数据传输速率高达10Mbps。除了增加了发送器和接收器三态使能线外,SP491E和SP490E完全相同。在共模模式的限制范围内,两者的接收器输入的灵敏度为士200mV.
SP490E包含8脚塑料 DIP和8脚 NSOIC两种封装形式,可工作在商业级和工业级温度范围内。SP491E包含14脚DIP和14脚 NSOIC两种封装,也可工作在商业级和工业级温度范围内。
上诉列举了几款常用芯片,引脚都是兼容的,只是性能上有所差异
注意要点
(1)共模干扰问题:RS-485接口采用差分方式传输信号方式,并不需要相对于某个参照点来检测信号,系统只需检测两线之间的电位差就可以。
长距离布线会有信号衰减,而且引入噪声和干扰的可能性更大,在线缆A和B上的表现就是电压幅度的变化,但是,采用差分线的好处就是,差值相减就会忽略掉干扰依旧能输出正常的信号,把这种差分接收器忽略两条信号线上相同电压的能力称为共模抑制。
通俗来说,就是如果在传输过程中遇到干扰,那A、B两根线的电压都会发生变化,可能本来A是5V,B是2V,被干扰成了A是8V,B是5V,但由于485通信检测的是两根线之间的电压差,所以AB间的电压差并没有发生改变,仍然是3V,所以接收器检测到的仍然是正确的信号
相反,像串口和RS232这些单端的通信方式,因为只有一根信号线和一根地线,并会规定某个电平状态表示一种逻辑,如5V表示1,0V表示0,当在传输过程中发生干扰时,5V可能变成了2V,这时候就没法判断到底是1还是0了,导致传输的数据不正确
此外人们往往忽视了收发器有一定的共模电压范围,RS-485收发器共模电压范围为==-7~+12V==,只有满足上述条件,整个网络才能正常工作。当网络线路中共模电压超出此范围时就会影响通信的稳定可靠,甚至损坏接口。
(2)EMI问题:发送驱动器输出信号中的共模部分需要一个返回通路,如没有一个低阻的返回通道(信号地),就会以辐射的形式返回源端。整个总线就会像一个巨大的天线向外辐射电磁波。又因为共模电压范围是-7V ~ +12V,所以通信的两边也需要一根地线来做标准,不能让共模电压超出范围,防止损坏端口
由于上述原因,RS-485网络尽管采用差分平衡传输方式,但对整个RS-485网络,必须有一条低阻的信号地。一条低阻的信号地将两个接口的工作地连接起来,使共模干扰电压被短路。这条信号地可以是额外的一条线(非屏蔽双绞线),或者是屏蔽双绞线的屏蔽层。这是最通常的接地方法。
(3)终端匹配电阻
为了匹配网络的通讯阻抗,减少由于不匹配而引起的反射、吸收噪声,有效抑制噪声干扰,提高RS-485通讯的可靠性,需要在RS-485网络的2个端点各安装1个终端匹配电阻。终端匹配电阻的大小由传输电缆的特性阻抗所决定。例如,RS-485网络通常采用双绞线或屏蔽双绞线作为传输介质,其特性阻抗为120欧,因此,RS-485总线上的两个端点也应各安装1个120欧的终端匹配电阻。
匹配电阻要消耗较大电流,不适用于功耗限制严格的系统。在特殊的场合,可以考虑比较省电的并联“RC”匹配方案,可以节省大部分功率,但电容C的取值是个难点,需要在功耗和匹配质量间进行折衷。