RS485 为什么需要上下拉电阻
RS485 是半双工差分总线,A、B 两根线在无节点发送时处于高阻态(浮空),这就会带来几个关键问题,必须靠上下拉解决:
1. 防止总线浮空,避免误码
- 无数据发送时,收发器输出高阻
- A、B 线浮空,容易受干扰、噪声影响
- 干扰会让差分电压在阈值附近抖动,导致芯片误判为起始位,产生乱码
上下拉电阻把总线强制拉到固定的逻辑空闲电平:
- A 线接上拉电阻到 VCC
- B 线接下拉电阻到 GND这样空闲时:VA>VB⇒差分电压为正⇒逻辑1(空闲状态)
2. 保证总线空闲时是稳定的 “逻辑 1”
RS485 协议规定:
- 空闲状态必须是逻辑 1
- 没有上下拉时,空闲状态不确定
- 有了上下拉,才能正确识别起始位(逻辑 0)
3. 提高总线抗干扰能力
上下拉电阻相当于给总线提供直流偏置,降低高阻态对电磁干扰的敏感度,提升长线传输稳定性。
4. 配合终端电阻一起工作
实际应用中通常是:
- 终端电阻 120Ω:匹配阻抗,消除反射
- 上下拉电阻(常用 1kΩ~10kΩ):偏置空闲电平
两者功能不同,缺一不可。
如何选择合适的上下拉电阻
上下拉电阻选太大容易飘,选太小功耗炸、带载能力不够。
一、选型核心原则
RS485 上下拉(偏置电阻)的目标只有两个:
- 空闲时保证 VA>VB,稳定为逻辑 1
- 不影响总线带载能力、不增加过多功耗
二、阻值怎么选?
1. 推荐常用值(工程通用)
- 上拉 Rup:10kΩ
- 下拉 Rdown:10kΩ
这是最稳妥、兼容性最好的取值,绝大多数场合直接用就行。
2. 阻值范围
- 建议:4.7kΩ ~ 22kΩ
- 不推荐:
- <4.7kΩ:功耗太大,拉低总线电平,影响节点数
-
22kΩ:偏置太弱,抗干扰差,容易误码
三、必须考虑:终端电阻 120Ω 的影响
RS485 总线两端通常有120Ω 终端电阻,它会和上下拉并联。
等效并联电阻大概为:Req≈117Ω非常接近 120Ω,不会破坏阻抗匹配,这就是 10kΩ 合理的原因。
四、怎么简单判断合不合适?
满足下面这条就 OK:发送器10kΩ 上下拉在 3.3V/5V 系统里电流只有零点几毫安,完全安全。
如何计算差分电压
一、有120Ω匹配电阻时
根据偏置电阻计算空闲差分电压,核心是分析 上拉电阻、下拉电阻和终端电阻 构成的分压网络。下面以最常见的单点偏置(主控端)和双终端电阻为例,给出计算方法和公式。
1. 电路模型
· 电源 VCC(通常 5V 或 3.3V)
· 上拉电阻 Ru :A 线接 VCC
· 下拉电阻 Rd:B 线接 GND
· 终端电阻:总线两端各一个 R_t (通常 120Ω),在计算空闲状态时,两个终端电阻通过总线并联,等效为 Rteq = R_t / 2
· A 与 B 之间通过 Rteq连接
2. 等效电路化简
将电路转化为两个节点(A 和 B),它们之间跨接 Rteq}
A 节点通过 Ru接 VCC,B 节点通过 Rd 接 GND。
设 A 点电压 V_A ,B 点电压 V_B 。
根据节点电流法(或分压关系),可以得到:
V_A = VCC *(Rteq + Rd)/(Ru+ Rteq+ Rd)
V_B = VCC *Rd/(Ru+ Rteq+ Rd)
3. 差分电压
VOD = V_A - V_B = VCC*Rteq/(Ru+ Rteq+ Rpd)
5. 多点偏置的简化处理
若总线上多个节点都加了偏置电阻,则将所有 Ru并联为一个等效上拉电阻 Rueq,所有 Rd并联为等效下拉电阻 Rdeq},代入上述公式即可。
6. 注意事项
· 如果只有一端有终端电阻(非标准用法),则 Rteq=R_t 。
· 空闲差分电压应至少 200mV(标准要求),实际工程中常设计在 0.5V~2V 之间。
· 偏置电阻过小会增加驱动器负载,可能导致通信异常,需综合考虑节点数和总线长度。
二、无120Ω匹配电阻时
当总线上没有120Ω终端电阻时,A和B线之间没有直接的电阻通路,空闲差分电压的计算会有所不同。此时,总线仅通过偏置电阻上拉至 V_{CC} 和下拉至 GND,同时接收器输入阻抗(通常 ≥12kΩ)可视为高阻,基本不影响直流偏置。
若实际电路因接收器输入阻抗或其他负载导致电压略低于 VCC,可使用万用表直接测量 A、B 线对地电压后相减得到精确值。
当两个节点的上拉电压分别为5v和3.3v时
当总线上存在不同电源电压(如 5V 和 3.3V)的上拉时,空闲差分电压需通过叠加原理或节点电压法计算。下面以常见情况(两个节点均有上拉/下拉,无终端电阻)为例,给出计算方法。
1. 电路模型
假设:
· 节点1:A线经 Ru1上拉至 5V,B线经 Rd1下拉至 GND。
· 节点2:A线经 Ru2上拉至 3.3V,B线经 Rd2下拉至 GND。
· 无终端电阻(A、B之间无直流通路)。
此时,A线的等效电路为两个电压源(5V和3.3V)通过各自上拉电阻并联;B线为两个下拉电阻并联接地。由于A、B之间无直接电阻连接,A点电压仅由上拉网络决定,B点电压仅由下拉网络决定。
2. 计算A点电压
将两个上拉支路等效为戴维南电路:
VAeq=(5/Ru1 + 3.3/Ru2)/【1/Ru1+ 1/Ru2】
由于A点空载(无终端电阻),实际 V_A = VAeq。
示例:取 Ru1=Ru2=1k,则
V_A =4.15V
3. 计算B点电压
B点只有下拉电阻到地,因此:
RBeq = 1/【1/Rd1 + 1/Rd2】
B点电压 V_B = 0V(因为下拉直接接地,无其他电源)。实际中,若下拉电阻不是直接接地而是通过其他电路,则需单独计算,但典型RS-485偏置中下拉直接接地,所以 V_B=0V。
4. 差分电压
VOD= V_A - V_B = V_A
按上例,VOD= 4.15V,远大于200mV要求。
5. 若有终端电阻
若总线上接有 Rt(通常120Ω),则A和B之间通过 Rt 连接(或者两端各一个,等效为 Rt/2),此时必须联立方程计算。
设等效上拉网络(戴维南)为 VAeq、RAeq,等效下拉网络为 VBeq=0、RBeq},终端电阻为 Rteq。则:
V_A = VAeq*(RBeq+Rteq)/{RAeq+RBeq+Rteq}
V_B = VAeq*(RBeq)/{RAeq+RBeq+Rteq}
差分电压 VOD=V_A-V_B = VAeq* Rteq
/{Rteq+RAeq+RBeq}。
6. 注意事项
· 电流倒灌:当不同电源通过上拉电阻并联时,电压较高的电源会向电压较低的电源灌电流,但只要电阻足够大(通常1kΩ以上),电流很小,不会损坏器件。
· 实际测量:理论计算后,建议用示波器或万用表实测A、B线对地电压,以验证实际焊接和接触情况。
· 标准要求:空闲时差分电压应≥200mV。混合电源时通常都能满足,但若偏置电阻过大(如10kΩ),终端电阻又存在,可能使差分电压过低。
RS485芯片的RO引脚和DI引脚是否需要上拉电阻。
TPT487芯片的RO(接收器输出)和DI(驱动器输入)引脚,一般不需要在外部强行加上拉电阻。但在特定应用场景下,RO引脚建议增加上拉电阻以提高稳定性。
1. RO引脚(接收器输出):建议增加上拉根据TPT487的数据手册,该芯片具备“完全故障保护”(Full Fail-Safe)功能。这意味着:
· 内部已集成偏置:当总线接口(A、B引脚)处于悬空、短路或空闲状态时,芯片内部电路会强制将RO引脚输出高电平,无需外部干预。
· 外部上拉的作用:尽管芯片内部保证了逻辑正确,但在强电磁干扰环境下,建议在RO引脚增加一个10kΩ的上拉电阻。这能增强高电平的驱动能力,防止干扰信号将RO引脚误拉到低电平,从而避免MCU接收端误触发中断。
2. DI引脚(驱动器输入):一般不需要
· 内部默认状态:DI引脚是标准TTL电平输入。当DI引脚悬空时,其电平状态不确定,可能导致总线输出乱码。
· 设计建议:DI引脚绝对不可以悬空。在实际电路中,DI引脚通常直接连接到MCU的TX(发送)引脚。只要MCU引脚不是高阻态(如上电复位期间),DI引脚就有确定电平。
3. 特殊情况说明
如果是使用自动收发电路(将RE和DE引脚直接并联后通过三极管反相控制),那么在发送高电平时,芯片会瞬间将发送器关断,使总线处于悬空状态。
· 此时,DI引脚虽然通过MCU输出了高电平,但收发器内部并未直接驱动总线,总线的“高电平”状态是靠总线上的上下拉电阻维持的。
· 在这种电路结构下,RO引脚反而容易出现异常:当发送器关断时,RO引脚会处于高阻状态。如果此时MCU的RX引脚内部有下拉配置,可能会将RO引脚拉低,导致数据“回环”误判。因此,在这种方案中,RO引脚的上拉电阻是必须的。
4.上拉电阻阻值选择
越小的电阻能提供更强的驱动能力,增强抗干扰
相比常用的10kΩ电阻,5.1kΩ的电阻值更小,这意味着它能提供更大的电流。
在5V供电下,5.1kΩ上拉电阻提供的电流约为 5V / 5.1kΩ ≈ 0.98mA。而10kΩ电阻提供的电流约为0.5mA。
这近1mA的电流能更有效地对抗外部电磁干扰,防止RO引脚上的高电平信号被噪声“拉低”,从而避免MCU(微控制器)的接收端产生误触发中断。这在工业电机驱动、通信基础设施等嘈杂环境中尤为重要。
5.满足MCU的输入电流要求
TPT487参数中,其输出引脚的拉电流(IOH)能力为8mA。
· 电流裕量:5.1kΩ上拉电阻产生的约1mA电流,远小于芯片8mA的驱动能力,处于非常安全的范围内,不会对芯片造成任何过载风险。
总结
RO 建议增加 增加 10kΩ 上拉电阻至VCC,可增强抗干扰能力,在自动收发电路中为必须项。
DI 不需要 直接连接MCU的TX引脚,由MCU驱动。
因此,如果你的系统环境干扰较小,且未使用自动收发电路,RO和DI都可以不加外部上拉,直接依赖TPT487的内部故障保护功能即可稳定工作。
RS485自收发电路

核心原理:利用TXD信号“兼职”控制收发状态
自动收发电路的核心思想,是省去MCU的一个专用I/O引脚,直接用TXD(发送数据)信号线来同时控制RS-485芯片是处于“发送”还是“接收”状态。
以一个典型的电路为例:
· 发送0(低电平):当TXD为低电平时,三极管截止。此时RE(接收使能)和DE(发送使能)引脚被上拉电阻拉为高电平,芯片进入发送模式。因为DI引脚接地,所以总线输出低电平。
· 发送1(高电平):当TXD为高电平时
高电平“1”的发送
当TXD从低电平变为高电平时,自动收发电路会执行以下一系列动作,完成从“芯片驱动”到“电阻驱动”的交接:
1. 芯片模式切换,驱动器“隐退”
· TXD高电平使三极管导通,将RE和DE引脚拉为低电平。
· 根据芯片真值表,DE为低电平意味着驱动器(Driver)被禁用,其输出引脚(A和B)立即呈现高阻状态。这相当于驱动器从总线上“隐退”了,不再主动为总线提供电流。
2. 外部偏置电阻“接管”,维持总线高电平
· 在驱动器“隐退”的同时,预先连接在电路中的外部上拉/下拉电阻开始发挥作用。A线通过上拉电阻连接到电源(VCC),B线通过下拉电阻连接到地(GND)。
· 这两个电阻形成了一个稳定的分压网络,将总线强制拉到一个确定的状态:A为高电平,B为低电平。由于RS-485标准规定 V_A > V_B 代表逻辑“1”,因此总线此时便呈现出高电平。
状态对比:驱动器 vs. 偏置电阻
为了更清晰地理解,可以看下这个对比表:
项目 发送 “0” (低电平) 发送 “1” (高电平)
TXD 电平 低电平 (0V) 高电平 (VCC)
三极管状态 截止 导通
RE/DE 引脚 高电平 (使能) 低电平 (禁用)
芯片驱动器 激活,直接驱动总线 高阻态
总线驱动源 RS-485 芯片 外部上/下拉电阻
总线电平 低电平 (B > A) 高电平 (A > B)
这种机制的优缺点
· 优点:最大的优势是节省MCU的I/O资源,并且软件编程可以像操作UART一样简单,无需额外控制收发切换引脚。
· 缺点与挑战:
· 通信速率受限:依靠电阻上拉来产生高电平,其上升沿会比芯片直接驱动的要缓慢。同时,三极管本身也存在开关延迟,这两者都会限制最高通信速率。
· 驱动能力较弱:外部电阻的驱动能力远不如芯片内部的推挽输出级。尤其在长距离通信或总线上挂载多个设备时,高电平信号的幅值可能会下降,甚至低于接收器所需的200mV门限,导致通信失败。
· 高波特率下的误码风险:在从发送“0”切换到发送“1”的瞬间,由于总线电平上升需要时间,在电平还未达到高电平门限前,接收器可能会短暂地误判为一个低电平,从而在RXD引脚上产生一个错误的窄脉冲,增加通信误码率。
总结
当MCU发送高电平“1”时,自动收发电路会让RS-485芯片的驱动器进入高阻状态,然后将总线的控制权“无缝交接”给外部的上拉/下拉电阻网络,由它们来负责维持总线的高电平状态。
这个过程实现了无需额外I/O引脚控制的目的,但代价是牺牲了一部分驱动能力和通信速率。因此,这种电路更适合于对通信速率要求不高、总线距离较短、节点数量较少的应用场景。

375

被折叠的 条评论
为什么被折叠?



