RS485收发器在FPGA中的应用及注意事项
1 前言
明确设计思路,精准定位问题,对于我们后期理解迭代工程有很大的帮助。
这就是我们常说的40%设计,20%编写和剩下的40%时间进行调试优化。
今天为大家带来的是如何解决RS485收发器使能转变引起的毛刺。
2 问题
Q1:什么时候需要用到RS485收发器?
Q2:为何RS485收发器使能转变会引起毛刺?
Q3:如何处理毛刺规避FPGA时序判断?
3 RS485收发器
3.1 硬件基础
3.1.1 标准收发器
RS485收发器是一类集成电路芯片,它的核心作用是在微控制器(如FPGA、MCU)的逻辑电平(如TTL电平,通常是0V/3.3V或0V/5V)与RS485差分信号之间进行双向转换。大多数RS485收发器还具备使能控制引脚(DE或RE),允许主控芯片灵活地切换其工作模式——发送或接收,从而支持半双工通信架构。
在实际应用中,微控制器输出的信号属于低电压、低电流的逻辑电平,适合短距离、高精度的内部电路通信,但无法直接用于长距离传输,容易受到电磁干扰、线路衰减等因素影响,导致信号失真甚至通信失败。

【差分传输】:RS485标准通过两根信号线(通常标记为A和B,或+和-)之间的电压差来表示数据,具有很强的抑制能力,能够在嘈杂的工业现场稳定工作
【阻抗匹配】:为了保证通信稳定性,通常在总线两端配置120欧姆的终端电阻,以匹配电缆特性阻抗,减少信号反射带来的干扰
【SP3485】:支持485和422,差分电压范围覆盖-7V~12V
3.1.2 自动方向控制收发器
当RS485收发器没有专用的DE(驱动器使能)或RE(接收器使能)控制引脚时,实现半双工通信的核心思路是:采用具备自动方向控制功能的收发器芯片。
这类芯片内部集成了智能逻辑,可以自动管理数据流的方向,如下图右侧:

| 特性 | 标准收发器(带DE/RE引脚) | 自动方向控制收发器(无DE/RE引脚) |
|---|---|---|
| 控制方式 | 软件手动控制:需要MCU的GPIO引脚和精确的时序代码 | 硬件自动控制:通过检测TXD信号的电平变化自动完成 |
| 硬件复杂度 | 较高(需要连接控制线) | 较低(只需要连接TXD/RXD和电源) |
| 软件复杂度 | 较高(需编程方向切换代码) | 较低(如同操作普通UART) |
| 可靠性 | 依赖软件时序的正确性 | 由硬件保证,时序更精确可靠 |
| 适用场景 | 几乎所有RS485应用,给予开发者完全的控制权 | 引脚资源紧张,追求开发简便性和可靠性的应用 |
3.2 软件协议
FPGA基于RS485收发器可以实现两大类协议:标准的、广泛应用的通用协议如UART、BissC、EnDat等以及自定义的、为特定应用优化的专用协议。
【BissC、EnDat】:需要两路RS485收发器,一路差分时钟,一路差分数据
4 异常现象
这里以EnDat协议时序进行说明,状态跳转如下:
- FPGA进入SEND_ORD状态,主机发送指令
- 指令发送后,FPGA进入WAIT状态,等待从机返回高电平起始位
- 检测到高电平返回,FPGA进入START_BIT状态

通过时序图和说明可以发现,在等待起始位的WAIT状态中,RXD出现了脉冲周期不符的高电平,而FPGA把这个毛刺当成起始位处理导致状态跳转异常。
5 问题分析
5.1 原因定位
经过复现发现,所使用的RS485收发器在改变EN使能方向时,对应的RXD/TXD会出现高电平毛刺,从而导致FPGA误判。
5.2 解决方案
5.2.1 硬件处理
- 原理:利用电阻(R)和电容(C)的充放电特性,电容两端的电压不能突变,需要一定的充电时间。一个快速的毛刺脉冲给电容充电时,由于能量小、持续时间短,在电容上的电压还没来得及建立时就消失了,因此输出端看不到明显的电压变化,从而被过滤掉。
- 优缺点:
- 优点:简单、成本极低、非常有效。
- 缺点:会延迟信号的正常跳变,RC时间常数(t = R * C)越大,过滤毛刺能力越强,但信号延迟也越严重。因此RC值根据信号频率和毛刺宽度权衡
5.2.2 软件处理
通过观察可以确定,从改变EN使能方向到出现毛刺的时间是固定的,因此可以增加状态延时,以此过滤掉高电平毛刺。

【DELAY】:该状态周期根据毛刺到来时间调整
6 参考
- EnDat2.2-位置编码器双向数字接口
- C8963_RS-485-422芯片SP3485EN-L-TR规格书_wj134995
- DeepSeek-R1