文章目录
- 前言
- [一、为啥STM32可以通过UART引脚转 RS-485](#一、为啥STM32可以通过UART引脚转 RS-485)
- 二、485芯片的核心特性
- 三、用法与典型应用电路
- 四、485终端120Ω电阻什么时候焊接什么时候不需要焊接?
-
- [1. 什么时候 必须焊接?](#1. 什么时候 必须焊接?)
- [2. 什么时候 可以不焊接?](#2. 什么时候 可以不焊接?)
- [3. 什么时候 绝对不能乱焊?](#3. 什么时候 绝对不能乱焊?)
- 4.实践建议与配置方法
- 五、RS-485的静电防护
- 总结
前言
不管是RS232还是485都是串口通讯的变种。
一、为啥STM32可以通过UART引脚转 RS-485
STM32 能通过 UART 引脚转换为 RS-485 进行通信,核心在于 RS-485 标准在物理层上采用了差分信号传输,但其协议层与 STM32 内置的 UART 模块兼容 。实现这一转换需要一个关键的"翻译官"------RS-485 收发器芯片

它们都使用相同的串行数据帧格式,包括起始位、数据位、校验位和停止位。因此,STM32 的 UART 外设只需要像配置普通串口一样,设置好波特率、数据位长度、校验位等参数,即可处理 RS-485 通信中的数据打包和解包任务
核心转换器件:RS-485 收发器
STM32 的 UART 引脚(TX 和 RX)输出的是 TTL 电平信号,而 RS-485 总线使用差分信号。直接连接是不可能的,因此需要一个 RS-485 收发器芯片 (如 MAX485、SP3485 等)作为中间桥梁

这个芯片的核心作用有两点:
1. 电平转换 :将 STM32 UART TX 引脚输出的 TTL 电平信号转换成 RS-485 的差分信号发送到总线上;同时,将总线上收到的差分信号转换成 TTL 电平送给 UART 的 RX 引脚
。
2. 收发方向控制 :由于 RS-485 是半双工通信(同一时刻只能发送或接收),收发器上有专门的控制引脚(如 DE/RE)。STM32 需要通过一个普通的 GPIO 引脚来控制它
。
• 发送数据时 :STM32 先将该 GPIO 置为高电平,使收发器进入发送模式,然后才能通过 UART 的 TX 引脚送出数据
。
• 接收数据时 :STM32 将该 GPIO 置为低电平,使收发器进入接收模式,才能通过 UART 的 RX 引脚读取总线上的数据
•
⚙️ 软件配置要点
在软件层面,除了标准的 UART 初始化(使能时钟、配置 GPIO 为复用功能、设置波特率等参数)
,关键点在于对收发器方向控制引脚(DE/RE)的操控:
• 在发送数据前,先将控制引脚设置为发送模式,等待发送完成后,再迅速切换回接收模式,以监听总线上的响应
• 这种切换需要与 UART 的发送和接收操作精确配合。
💡 为何要这么做?
STM32 结合 RS-485 收发器的方式,成功地将自身强大的处理能力和灵活的外设控制,与 RS-485 标准的远距离传输、强抗干扰能力和支持多点组网的工业级物理特性结合了起来
。这使得STM32能够非常经济且高效地应用于复杂的工业自动化、楼宇控制等场景。
二、485芯片的核心特性
微控制器的UART接口输出的是0V/3.3V(或0V/5V)的单端信号 ,这种信号抗干扰能力差,传输距离短。485芯片将这些单端信号转换成符合RS-485标准的差分信号 ,从而可以实现长达1200米的远距离、抗干扰通信。
核心:差分信号传输
• 普通串口(如UART/TTL): 使用一根信号线(TX)和一根地线(GND)。接收端通过判断信号线电压相对于GND的高低来识别0和1。长距离传输时,地线电位差和空间电磁干扰会叠加在信号线上,导致数据错误。
• RS-485: 使用一对双绞线(A线和B线)来传输一个信号。
o 发送端:芯片将数据转换成一对相位相反、幅度相等的差分电压,分别加载到A和B线上。
逻辑 1:B线电压比A线电压高(通常定义 B-A > +200mV)。
逻辑 0:A线电压比B线电压高(通常定义 B-A < -200mV)。
o 接收端:只关心A和B线之间的电压差,而忽略它们对地的电压
优势:
抗共模干扰能力强: 外部干扰(如电机噪声)会几乎同等地耦合到A和B两条线上。接收器检测的是电压差,这些共模干扰会被抵消掉。
传输距离远: 可达1200米。
支持多点网络: 一条RS-485总线可以挂接多达32个(或更多,取决于芯片驱动能力),什么时候需要两个485总线,原因就是一根总线挂在多个的话软件协议就比较复杂,然后还要单独控制,,半双工,如果两个设备需要实时的收发,还有一个就是两个都是主设备,没有地址,这个时候就可能需要每个设备一根485总线了
485芯片这样的收发器,实现多设备组网。这是它相对于RS-232的点对点通信的巨大优势
引脚功能描述


核心特性:
- 半双工操作:
o 发送数据 : 将DE引脚拉高,同时将/RE拉高(或置之不理,因为DE为高时发送器会强制接收器输出高阻态)。此时,DI上的逻辑电平会控制A、B线上的差分电压。
o 接收数据 : 将DE引脚拉低,同时将/RE拉低。此时,芯片内部的驱动器被禁用(输出高阻态,不影响总线),接收器开始工作,将A、B线上的差分电压转换为逻辑电平从RO输出。
重要规则:DE和/RE绝不能同时有效(即DE为高,/RE为低),通常将DE和/RE连接在一起,用一个MCU引脚控制,高电平发送,低电平接收。
三、用法与典型应用电路
一个典型的半双工RS-485网络连接如下图所示。MCU通过两个GPIO控制收发使能,通过UART的TX和RX连接485芯片。
电路连接步骤:
1. 电源 : 将VCC接+3.3V或+5V,GND接地。强烈建议在VCC和GND之间靠近芯片引脚处放置一个0.1μF的去耦电容。
2. MCU连接 :
• DI -> 连接MCU的UART TX 引脚。
• RO -> 连接MCU的UART RX 引脚。
• DE 和 /RE -> 连接在一起,并连接到MCU的一个GPIO引脚(如CTRL_PIN)。
3. 总线端(A, B):
• 在芯片的A和B引脚上,通常需要**串联一个小电阻(如22Ω)**作为短路保护或者PTC,但是PTC成本比较高。
• 在总线远端(电缆的尽头),需要在A和B之间并联一个终端电阻(通常是120Ω) ,以消除信号反射。如果传输距离很短或波特率很低,可以省略。
• 为了增加抗干扰能力,通常在A线和B线到地之间各接一个ESD保护二极管(很多芯片已内置)和一个上拉/下拉电阻网络(例如,A线上拉至VCC,B线下拉至GND),以确保总线在空闲时处于一个确定的失效安全状态。

为什么通常在A线和B线和一个上拉/下拉电阻网络,A线上拉至VCC,B线下拉至GND)?
- 核心原理:为什么要建立偏置电压?
回忆一下RS-485的逻辑电平定义:
逻辑 1: B线电压 - A线电压 > +200mV
逻辑 0: A线电压 - B线电压 > +200mV
无效状态: -200mV < B线电压 - A线电压 < +200mV
现在考虑一种情况:当总线上没有任何一个发送器在驱动总线时(即所有发送器都处于高阻态),总线处于"空闲"状态。 这时,A和B两条线都处于浮空状态,电压不确定,容易受到外部电磁干扰。这会导致A、B之间的电压差在-200mV到+200mV这个"无效区间"内随机波动,接收器(如485芯片)的输出RO也会变得不确定,可能会向MCU输出乱码,导致UART帧错误。
解决方案: 通过外部电阻,在总线空闲时,主动为A和B线建立一个稳定的、大于+200mV的差分电压。
将A线通过一个电阻上拉到VCC(或逻辑高电平),迫使A线处于一个高电位。
将B线通过一个电阻下拉到GND,迫使B线处于一个低电位。
这样,在总线空闲时,我们人为地创造了一个条件:B线电压 - A线电压 = (一个低电位 - 一个高电位) = 一个明显的负电压差。这个负电压差的绝对值必须大于200mV,从而使接收器能明确地判断出这是一个逻辑0。
而对于UART协议来说,线路空闲时(没有数据传输)的电平应该是高电平(逻辑1)。这里似乎产生了矛盾?请注意以下关键点:
RS-485是电平标准,UART是数据协议。
UART期望在空闲时TX和RX线为高电平(逻辑1,对应RS-485的B>A)。
但我们刚才建立的偏置是 A > B(逻辑0)。
这里有一个常见的误解点: 这个偏置的目的首要是防止总线进入不确定状态,而不是为了匹配UART的空闲状态。具备失效保护功能的接收器在检测到 A > B 的逻辑0时,其RO引脚会输出高电平。这样,就完美地匹配了UART的空闲高电平要求。
简而言之:偏置电阻确保总线空闲时 VA > VB,接收器检测到这个确定的"0"状态后,输出高电平RO=1,使得MCU的UART RX引脚收到高电平,正确识别为空闲状态。
电阻值如何取值
常用4.7kΩ(弱偏置,省电)或1kΩ(强偏置,抗干扰更好) 。具体值需根据终端电阻、节点数、电源电压和功耗要求权衡。
但要注意,上拉电阻电源要做好防倒灌措施
这是最简单、最经济的防倒灌方法。
• 做法: 在偏置上拉电阻Rup和本地VCC之间,串联一个普通的开关二极管(如1N4148)。二极管的正极接VCC,负极接Rup电阻。
• 原理:
o 当设备正常供电时,VCC电压高于总线电压,二极管正向导通,为总线A线提供上拉偏置。
o 当设备断电时,本地VCC=0V。总线A线上的电压会使二极管处于反向偏置状态,从而切断了电流倒灌的路径。
• 优点: 成本极低,电路简单。
• 缺点:
o 二极管有正向压降(约0.7V),会降低实际加到总线上的偏置电压。计算偏置电压时需要将这个压降考虑进去(例如,VCC=5V,则实际上拉电源约为4.3V)。
o 无法解决不同电源域电压不一致的问题。
在许多应用中,为了简化从设备设计,会采用一种更简单的方法:
• 做法: 在整个RS-485网络中,只在主设备(或一个始终在线的设备)上安装一套偏置电阻(Rup和Rdown),而所有从设备完全不安装偏置电阻。
• 原理: 由一个可靠的、永不掉线的电源(主设备电源)来建立整个总线的偏置。从设备只负责通信,不参与提供偏置。
• 优点:
o 从根本上避免了从设备掉电带来的倒灌问题。
o 简化了从设备的电路设计和PCB布局。
o 降低了整体网络功耗。
• 要求: 必须确保主设备稳定可靠,永不掉电。如果主设备掉电,整个总线将失去偏置。
四、485终端120Ω电阻什么时候焊接什么时候不需要焊接?
一句话总结
120Ω终端电阻应该在RS-485通信电缆的物理两端(最远的两端) 的设备上焊接,而在总线上的所有其他设备上都不应该焊接。它的核心目的是匹配电缆的特性阻抗,消除信号反射。
1. 什么时候 必须焊接?
当通信电缆的长度接近或超过 "电气长度" 的临界值时,必须在总线的物理始端和末端设备上焊接120Ω终端电阻。
什么是"电气长度"临界值?
这个临界值取决于信号的上升/下降时间和波特率。一个工程上常用的简化经验法则是:
当电缆长度 L(米)满足 L>传输延迟(ns/m)信号上升时间(ns) 时,就必须考虑终端匹配。
对于常见的RS-485通信(使用双绞线电缆,信号传播速度约为光速的2/3,即 ~0.2m/ns),这个经验法则可以简化为:
通信波特率 > 100 kbps 或 电缆长度 > 100米时,强烈建议焊接终端电阻。
为什么?
信号在电缆中是以电磁波的形式传播的。当电缆长度相对于信号的波长(与波特率和上升时间有关)足够长时,信号到达电缆末端会因为阻抗不连续而发生反射,反射波会与原信号叠加,造成波形严重畸变,导致数据错误。120Ω电阻的作用就是吸收信号能量,防止其反射。
2. 什么时候 可以不焊接?
当通信电缆很短,且通信波特率较低时,信号反射的影响很小,可以不焊接终端电阻。不焊接的好处是简化布线,并降低功耗(终端电阻会形成分压,消耗少量功率)。
典型场景:
电缆长度只有几米或十几米。
波特率在9600bps以下。
通信环境良好,没有强烈的电磁干扰。
注意: 即使电缆很短,如果通信不稳定(误码率高),尝试焊接终端电阻是首要的排查手段之一,因为可能是其他因素(如连接器、支线)导致了阻抗不匹配和反射。
3. 什么时候 绝对不能乱焊?
绝对不能在总线上的每一个设备都焊接120Ω电阻!
RS-485总线的特性阻抗约为120Ω。根据电阻并联公式,如果在总线上并联了N个120Ω电阻,总负载电阻会变为 120Ω/N。
挂接2个设备:总电阻 = 120Ω / 2 = 60Ω
挂接4个设备:总电阻 = 120Ω / 4 = 30Ω
...
芯片驱动器有最小负载电阻的要求(通常为54Ω至60Ω)。如果总负载电阻过小,会导致驱动器过载、发热,甚至无法产生足够的差分电压,使整个网络通信失败。
正确做法: 只在物理上处于总线最远两端的那个设备上焊接120Ω电阻。这样,整个总线只有一个120Ω的终端负载。
4.实践建议与配置方法
使用连接器或跳线: 在设备PCB设计时,最好的做法是将120Ω电阻的位置预留出来,但不直接焊接,而是通过一个2PIN的插针跳线帽或者一个0Ω电阻来选择是否连接。
当判断这个设备处于网络末端时,插上跳线帽或焊上120Ω电阻。
当设备处于网络中间时,保持断开或焊上0Ω电阻(仅作连通之用)。
这种做法最灵活,便于现场调试。
如何判断我的设备是否在末端?
查看物理布线,你的设备是否在RS-485总线电缆的起点或终点。
如果你的设备后面再也没有其他设备连接,那么它可能就是末端设备。
五、RS-485的静电防护
方案1:基础防护(必需)
这是最低要求,即使是最简单的应用也建议加上。
• 元件 : 在A线对GND、B线对GND之间各加一个TVS二极管 ,或者在A和B之间加一个双向TVS二极管阵列(如SMBJ6.5CA 或 SMAJ6.5CA)。
• 作用 : TVS响应速度比内部ESD二极管更快,钳位电压更低,能吸收比ESD能量更大的瞬态脉冲(如EFT),为内部芯片提供第一道屏障。
• 接线 : TVS应尽可能靠近485芯片的A、B引脚放置。
方案2:标准防护(推荐用于工业环境)
这是最常见、最具有性价比的方案,能应对绝大多数工业场景。
• 元件 : 在TVS二极管的前端(靠近电缆接口一侧),串联PTC自恢复保险丝 或电阻。
• 作用 : 这是一个经典的"限压+限流"组合。
o TVS管负责限压,将瞬态高压钳位在安全范围。
o PTC负责限流,当有大电流(如浪涌)通过时,PTC电阻急剧变大,从而限制流入TVS和芯片的电流,保护它们不被烧毁。故障消除后,PTC能自动恢复。
• 布局顺序(从接口到芯片): 电缆 -> PTC -> TVS管 -> 485芯片芯片。
方案3:高强度防护(用于极端恶劣环境)
如果设备用于户外、变电站等可能有雷击感应浪涌的区域,需要最高级别的保护。
• 元件: 在方案2的基础上,在最前端增加一个气体放电管。
• 作用: GDT能泄放巨大的雷击浪涌电流(如10kA以上),但它的响应速度较慢(微秒级),残压较高。TVS响应快,但通流能力小。两者结合,GDT先承受大部分大能量,TVS再将电压进一步钳位到芯片可承受的水平。PTC则提供过流保护。
• 布局顺序: 电缆 -> GDT -> PTC -> TVS -> 485芯片芯片。

如果设备为金属外壳,同时单板可以独立的划分出接口地,那么金属外壳与接口地直接电气连接,且单板地与接口地通过1000pF电容相连;
如果设备为非金属外壳,那么接口地PGND与单板数字地GND直接电气连接。
总结
以上就是今天要讲的内容
参考博文RS485接口6KV防雷电路设计方案