RS-485总线之收发器与数据链路基础知识介绍

接口/总线/驱动

1116人已加入

描述

**1 **RS-485收发器

RS-485是差分传输,如果用单片机控制RS-485接口的设备,需要用到收发器,这一点和CAN总线是类似的,如下是一个MCU控制一个RS-485的图示。

单片机控制

图1

收发器内部是一个接收器(上半部分)加一个发送器(下半部分),下面简单说说收发器的原理,便于理解MCU是如何和485设备通信的。

单片机控制

图2 RS-485收发器内部结构

其中:

A和B为总线;

R为接收器输入;

RE为接收器使能信号;

DE为发送器使能信号;

D为发送器输出;

对于使能信号,字母上面加一横的为低电平有效(如上图RE),不加的为高电平有效(如DE)。

对于发送器,有如下的真值表:

当驱动器使能引脚DE为逻辑高时,差分输出A和B遵循数据输入D处的逻辑状态。D处的逻辑高导致A转为高,B转为低。在这种情况下,定义为VOD=VA-VB的差分输出电压为正。当D为低时,输出状态反转,B变高,A变低,VOD为负。

当DE低时,两个输出都变成高阻抗。在这种情况下,与D处的逻辑状态是不相关的。

单片机控制

图3 发送器真值表

对于接收器,有如下的真值表:

当接收器使能引脚RE逻辑低时,接收器被激活。当定义为VID=VA–VB的差分输入电压为正且高于正输入阈值VIT+时,接收机输出R变高。当VID为负且低于负输入阈值VIT-,接收机输出R变低。如果VID在VIT+和VIT-之间,则输出不确定。

当RE为逻辑高或悬空时,接收机输出为高阻抗,VID的大小和极性无关。

单片机控制

图4 接收器真值表

**2 **RS-485数据链路

上面讲到的RS-485收发器的工作原理,下面简单描述RS-485的数据链路。

单片机控制

图5

主机发送给从机或者从机发送给主机,都会占用到A和B线,所以RS-485多用在半双工模式。

主机的GPIO会控制RS-485收发器的DE管脚,设置发送模式,从UART TXD线向RS-485收发器的数据(D或DI)线发送一个字节,收发器将在A和B线上将单端UART位流转换为差分位流,数据离开收发器后,主机立即将收发器的模式切换为接收模式。

从机和主机是类似的,从机控制RS-485收发器的/RE管脚,设置为接收模式,接收主机发送的比特流,将其转换为单端信号,通过从机的UART RXD线接收,当从机准备好响应时,它按主机原来的方式进行发送,而主机变为接收。

**3 **RS-232和RS-485转换

RS-232和RS-485之间可以转换,一个方法是RS-232转换成TTL,再由TTL转换为RS-485,当然也有芯片支持将RS-232直接转换成RS-485,网上有很多模块。

4 RS485和RS422

RS232接口是一种用于近距离(最大30-60米)、慢速度、点对点通讯的通讯协议,在RS232中一个信号只用到一条信号线,采取与地电压参考的方式,因而在长距离传输后,发送端和接收端地电压有出入,容易造成通讯出错或速度降低。

RS485/422接口采用不同的方式:每个信号都采用双绞线(两根信号线)传送,两条线间的电压差用于表示数字信号。例如把双绞线中的一根标为 A(正),另一根标为B(负),当A为正电压(通常为+5V),B为负电压时(通常为0),表示信号“1”;反之,A为负电压,B为正电压时表示信号 “0”。RS485/422允许通讯距离可达到1200米,采用合适的电路可达到2.5MB/s的传输速率。

RS422与RS485采用相同的通讯协议,但有所不同:它采用两根双绞线,数据可以同时双向传递(全双工)。 而RS485则采用一根双绞线,输入输出信号不能同时进行(半双工),RS485可用于多点通讯,一条信号线上可连接多个设备,它通常采用主/从结构。

在RS485(半双工)通信中, 发送信号时,由TXD输出的TTL电平信号经RS485转换器转换后,从发送器(A和B)输出RS485信号;接收信号时,RS485信号经接收器(A和B)接收后,然后RS485转换器将信号转换为TTL电平信号,传给RXD 。(注意: 2个需要通讯设备之间是各有一个RS485转换器并不是它们的信号只经过了一个RS485转换器就成功通讯了

单片机控制

图7

在RS422(全双工)通信中,因信号的输入和输出分开,所以需要两根双绞线来传送输入和输出信号,标为A、B、Y、Z(A为输入信号的正极,B为输入信 号的负极,Y为输出信号的正极,Z为输出信号的负极)。发送信号时,由TXD输出的TTL电平信号经RS422转换器后,从发送器(Y和Z)输出RS485/RS422 信号;接收信号时,RS485/RS422信号经接收器(A和B)接收后,RS422转换器将信号转换为TTL电平信号,传给串口的RXD。

单片机控制

图8:DM系列RS485/RS422接口转换器原理图(半双工)

单片机控制

图9:DM系列RS485/RS422接口转换器原理图(全双工)

以上图片只是贴出了一半的接线图,这里给出一张多机通讯的RS485接线原理图(半双工)

单片机控制

图10

典型接法

DM485的输出端最多可以连接256个RS485接口,其典型接法如图3(半双工)和图4(全双工)所示。在最远的两个终端上,输入和输出端之间各需接 上一个120欧姆的电阻。在RS485/RS422的接口连接时,甲接口的输出端接乙接口的输入端,双绞线的正极接正极,负极接负极;甲接口的输入端接乙 接口的输出端,双绞线的正极接正极,负极接负极。

单片机控制

图11

单片机控制

图12

注意事项

1、在长距离传输中,一定要使用用双绞线

2、多终端传输时,距离最远的两个终端上,输入和输出端之间一定连接120欧姆的电阻。

补充:我不知道为什么那么多的资料都没有说明RS485通信发送和接收数据时的细节,都只说2根线就能发送和接收数据?注意:485芯片有个控制端,控制端高电平时候为接收数据,低电平时候为发送数据。而我们在实际项目开发的时候,在使用RS485通信时,如果自己的电路并没有设计成RS485硬件自收发切换的电路,则需要自己控制485的收发使能引脚。即发送数据时,需要拉低485芯片控制端的IO口;相反接收数据时,需要拉高控制端的IO口。

需要自己控制收发的485芯片原理图:

单片机控制

图13

控制策略:UART_CON为低电平,485处于接收状态;UART_CON为高电平,485处于发送状态。通过切换UART_CON的电平来达到485收发状态的切换。

485芯片硬件自动收发切换电路:

单片机控制

图14

接收:默认没有数据时,在接收数据的过程中,TXD引脚是一直保持高电平的,三极管导通,RE低电平使能,485芯片处于接收状态,然后485芯片的RO引脚(也就是接RXD的引脚)就会反应AB传输过来的数据。

发送:发送数据时,TX会先有一个下拉的电平(起始位-由高向低),表示开始发送数据,此时三极管截止,DE为高电平发送使能。当发送数据“0”时,由于DI接口相当于接地,此时数据“0”就会传输到AB扣,A-B<0,则传输“0”,完成低电平传输,当发送“1”时,此时三极管导通,RE变为低电平,按理说会让接收使能,但是由于还处于发送数据中,这种状态下MAX485处于高阻态,此时的状态通过A上拉电阻(R5),B下拉电阻(R4)决定,此时A-B>0传输“1”,完成高电平的传输。

注意:这里面有个疑惑,发送数据“1”,三极管RE低电平有效,应该是接收使能,为什么芯片是高阻态呢?这是因为UART发送数据是有一定格式的,TX和RX数据均以“位”为最小单位进行传输,在发送数据之前,UART之间要约定好数据传输速率,即波特率,数据传输格式(数据位,校验,停止),平时数据线处于空闲状态(1状态),当发送数据时,TX由“1”变为“0”维持1位的时间,这样接收方检测到开始位后,再等待1.5位时间就开始一位一位的进行数据传输了,也就是说,已经确定好发送状态,电路发送“1”时RE虽然有效,但是由于它处于发送阶段,芯片也不会收,即芯片处于高阻状态。

**5 **RS-485和CAN的区别

虽说RS-485没有标准的数据协议格式,但和CAN总线在很多地方是有相似的,比如A&B和CANH&CANL都是差分信号,通信都需要收发器,都需要120欧姆的匹配电阻等等。

单片机控制

**6 **RS-485常用电路

网上找的一个常用的RS-485电路,其中需要注意两点:

单片机控制

图15

1)使能信号RE和DE可采用一个GPIO控制,节省资源,GPIO25输出高电平,RE=DE=0V,进入接收模式;GPIO25输出低电平,RE=DE=3.3V,进入发送模式。

2)有一些电路中会在A上加上拉,B上加下拉电阻,主要原因是:RS-485总线在idle状态,电平是不固定的,即电平在-200mV~+200mV之间,收发器可能输出高也可能输出低,UART在空闲时需要保持高电平的,如果此时收发器输出一个低电平,对UART来说是一个start bit,会导致通信异常。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
IRIS0323 2023-08-15
0 回复 举报
牛66666666666666 收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分