发新帖本帖赏金 30.00元(功能说明)我要提问
返回列表
打印
[资料干货]

一篇讲通RS485

[复制链接]
4134|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 woai32lala 于 2024-4-10 16:47 编辑

[url=home.php?mod=space&uid=760190]@21小跑堂 #申请原创#[/url]

一文讲通RS485

一、介绍
RS485,即“远程串行通信协议”,是一种常见的串行通信协议,由电气电子工程师协会(IEEE)制定。它是一种多点通信接口,允许最多128个设备连接到同一通信总线,并且能够在较长的距离上(高达1200米)以较高的速度(高达10Mbps)进行数据传输。RS485的传输速率与总线长度相关,线缆越长,速率越慢;线缆越短,速率越快;
RS485的一个关键特性是其差分信号传输能力,这意味着发送信号和地之间的电压差被用作数据传输的载体。这使得RS485在噪声环境中的抗干扰性较强,特别适合于工业环境中使用,其中电气噪声是常见的问题。
此外,RS485支持半双工和全双工两种工作模式,可以根据需要选择。半双工模式下,总线上的设备分成发送器和接收器,不能同时发送和接收数据;而在全双工模式下,每个设备都有自己的发送和接收线,因此可以同时进行发送和接收操作。两个设备之间使用双绞屏蔽线缆连接,两个线缆分别传输A和B信号,它是物理层协议。
二、485电平逻辑
RS485总线具有两种逻辑电平:高电平(1)和低电平(0)
发送状态
高电平(1): A线-B线上的电压是+(2 - 6)V时,表示高电平
低电平(0): A线-B线上的电压是-(2 - 6)V时,表示低电平。
接收状态
高电平(1): A线-B线上的电压≥ -50mV时,表示高电平
低电平(0): A线-B线上的电压≤-200mV时,表示低电平。
不确定状态
当A-B在±200mV之间时,则总线状态为不确定,所以我们会在A、B线上面设上、下拉电阻,以尽量避免这种不确定状态,但有的芯片内部会加上下拉电阻,如RSM485PCHT芯片。
三、485驱动、接收状态
我们使用的SSP485芯片,它内部是没有上下拉电阻。
C277895_DF46B723E5B1F058CCD17A18DC8132F3.pdf(szlcsc.com)
驱动状态:
当DE为低电平时,不管RE是高电平还是低电平,A、B线都为高阻状态,此时容易受外接干扰,因此我们需要额外加上下拉电阻,在A线加上拉电阻,B线加下拉电阻,这样就会在总线空闲状态输出高电平,符合串口的空闲状态。
接收状态
当RE为高电平时,不管DE是高电平还是低电平,RO都为高阻状态,此时很容易受外界干扰,引起误触发,因此可以外接一个上拉电阻或者使用芯片内部上拉电阻,引脚模式配置为上拉输入或者使用外部上拉电阻配置为浮空输入。

五、典型电路
1、SSP485收发典型电路(需要一个额外的控制信号)
普通的485 收发电路,除了“用 RS485_RX 连接 485芯片的 RO 引脚、用 RS485_TX 连接 485 芯片的DI 引脚”,还会用一个MCU的普通 IO 引脚连接到 RE、DE 引脚上,即图中RS485_TX_EN。
当单片机要发送数据的时候,首先将RS485_TX_EN为高电平,数据通过RS485_TX发送出去,当单片机要接收数据的时候,RS485_TX_EN为低电平,数据通过RS485_RX接收回来。
上拉电阻R6和下拉电阻R1,用于保证无连接的 SP485R芯片处于空闲状态,提供网络失效保护,提高RS485节点与网络的可靠性,使总线压差为高电平状态。图中钳位于6.8V的管D1,是为了保护RS485总线的,避免受外界干扰,也可以选择集成的总线保护原件。
2、SSP485自收发典型电路
为什么要设计自收发电路?
RS-485总线是半双工的通信总线,因此通常需要MCU控制RS-485收发器的收发状态。有时候,为节省MCU的I/O资源,同时可以简化程序设计,需要实现RS-485自动收发的功能。
1、接收状态
我们将TX设置为开漏输出,因为外面加有上拉电阻,因此TX空闲状态默认为高电平,Q1为AO3401,PMOS管,这是说明书BC3401SOT-23.pdf (szlcsc.com)
AO3401导通阈值电压为 -1.3V,当Vgs 之间的差压小于-1.3V时,PMOS导通,当大于-1.3V时,PMOS关闭。因此在空闲状态时,TX管脚被上拉电阻拉高,Vgs 管脚电压为0,因此PMOS关闭,REDE管脚被下拉电阻拉至低电平,芯片处于接收状态。根据上面的接收真值表可得,当RE为低电平,不管DE为高电平还是低电平,RO状态由外部A/B之间压差决定,因为有上下拉电阻,A-B -50mV,所以RO输出为高电平,符合串口空闲状态。
2、发送状态
(1)      当TX为低电平,PMOS管Vgs  = 0- 5 =-5V≤-200mv,PMOS管导通,RE和DE为高电平,则发射使能,根据驱动真值表可见,此时AB两线电平由DI确定,因为DI是接地的,所以A为低,B 为高,为485逻辑高电平“0”。
(2)      当TX为高电平时,PMOS管Vgs  = 0,PMOS,RE和DE为低电平, 根据驱动真值表,A和B为高阻状态,因为A有上拉电阻,B有下拉电阻,A为高,B为低。所以输出了485的逻辑“1” 。

注:R2电阻不可太大,如果此电阻值设置过大,会影响PMOS管导通关闭的速率,当R2为4.7k时,速率只能到9600,当R2为100R时,速率可以满足115200。
3、带保护485普通收发电路


1、在A、B线加上一个共模电感,可以对共模电流进行衰减过滤,提高RS485电路的EMI性能;
2、在共模电感两端并联电阻,作用同共模 电感一致,可以对线路的电流进行抑制,保护485芯片;
3、在A、B线上各线路上接一个电容,用于提高电路的EMI性能;
4、在A、B线上加入TVS二极管,能够提高电路的抗浪涌,防静电;
5、在A、B线上加入热敏电阻PTC5、PTC6, 用于反向电路的高压;


以上就是对485相关内容的说明,如有错误,请指教。

使用特权

评论回复

打赏榜单

21小跑堂 打赏了 30.00 元 2024-04-10
理由:恭喜通过原创审核!期待您更多的原创作品~

评论
21小跑堂 2024-4-10 10:07 回复TA
从RS485通信原理到实际电路搭建讲解,详细介绍RS485的原理和使用。 
王栋春 2024-3-31 21:57 回复TA
讲的的非常到位,受教了。 

相关帖子

沙发
luckyzy| | 2024-4-10 13:33 | 只看该作者
自收发的电路楼主有亲自用过吗,还是拿来的网络参考图呢。。。

使用特权

评论回复
板凳
woai32lala|  楼主 | 2024-4-10 16:39 | 只看该作者
luckyzy 发表于 2024-4-10 13:33
自收发的电路楼主有亲自用过吗,还是拿来的网络参考图呢。。。

用了,有什么问题

使用特权

评论回复
地板
昨天| | 2024-4-10 17:27 | 只看该作者
又学到一点知识,牛人真多。

使用特权

评论回复
5
zwk34| | 2024-4-11 10:19 | 只看该作者
讲的很详细,谢谢分享。

使用特权

评论回复
6
oufuqiang| | 2024-4-14 00:04 | 只看该作者
woai32lala 发表于 2024-4-10 16:39
用了,有什么问题

没什么问题,见一次打一次。
如果加颗MOS或者BJT就能解决,芯片厂家何必单独做一个收发控制脚出来

使用特权

评论回复
7
sun2152| | 2024-4-16 11:59 | 只看该作者
受教了,感谢分享

使用特权

评论回复
8
springvirus| | 2024-4-17 10:57 | 只看该作者
讲的非常详细

使用特权

评论回复
9
zchong| | 2024-4-21 08:03 | 只看该作者
自动方向控制的尽量少用,尤其是对外通信的时候。
如果是装置内部使用速率不是太高的情况下还好。

使用特权

评论回复
10
woai32lala|  楼主 | 2024-4-24 08:40 | 只看该作者
zchong 发表于 2024-4-21 08:03
自动方向控制的尽量少用,尤其是对外通信的时候。
如果是装置内部使用速率不是太高的情况下还好。 ...

目前测115200还可以,在高没有,确实有速率限制

使用特权

评论回复
11
dukedz| | 2024-4-25 13:56 | 只看该作者
RS485 自动方向控制 可以看一下这个方案,支持仲裁、多主对等:

开源小芯片可以把 RS485 当作全双工使用,支持 50Mbps
https://bbs.21ic.com/icview-3350404-1-1.html

使用特权

评论回复
12
forgot| | 2024-4-26 08:53 | 只看该作者
RS485的一个关键特性是其差分信号传输能力,这意味着发送信号和地之间的电压差被用作数据传输的载体。

使用特权

评论回复
发新帖 本帖赏金 30.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

107

主题

534

帖子

5

粉丝