【黑金云课堂】FPGA技术教程FPGA基础:串行接口RS422 & RS485通信

一、核心通信原理

1. 定义与特点

  • RS422 / RS485 是美国电子工业协会(EIA)制定的串行通信接口标准,仅定义物理层电气特性,需配合 UART、Modbus RTU 等高层协议使用。
  • 两者均采用差分信号传输 ,与 RS232 单端信号显著不同,具备极强的抗干扰能力和长距离传输能力(最远 1200 米)。

2. 差分信号优势

  • 使用一对互补信号线(A/B 或 Y/Z),接收端比较两线电压差还原数据。
  • 共模噪声同时作用于两根线,通过减法抵消,不受地电位偏移影响,适合工业复杂电磁环境。

3. RS422 标准(全双工 · 点对多点)

  • 通信方式:全双工,可同时收发。
  • 物理接口:4 线(两组差分对:TX+/-、RX+/-)。
  • 拓扑结构:一主多从,但节点数有限(通常一主一从或少量从机)。
  • 典型应用:运动控制器与伺服驱动、工业相机高速数据传输。

4. RS485 标准(半双工 · 总线型)

  • 通信方式:半双工,需通过 DE/RE 引脚切换收发模式。
  • 物理接口:2 线(一对差分线 A/B)。
  • 拓扑结构 :总线型,可挂载 32 个标准负载(可扩展更多)。
  • 关键要求 :总线两端必须接 120Ω 终端电阻,消除信号反射。
  • 典型应用:Modbus RTU 工业控制网络、智能楼宇、传感器数据采集。

5. RS422 vs RS485 对比

特性 RS422 RS485
通信方式 全双工 半双工
物理连接 4 线 2 线
节点数量 少(点对多点) 多(32+)
控制复杂度 简单 需方向控制
最大距离 1200m @ 100kbps 1200m @ 100kbps
最大速率 10 Mbps(短距) 10 Mbps(短距)

二、FPGA 实践与验证

1. 实验目标

  • 掌握 FPGA 与 RS485 电平转换芯片(如 MAX3485)的硬件连接。
  • 实现 Verilog HDL 控制的 RS485 半双工收发逻辑。
  • 完成自发自收(回环)测试及与 PC 上位机的双向通信。

2. 硬件平台

  • FPGA 开发板:Alinx ZYNQ-7000 (AX7020)
  • 通信模块:RS232/485/422 扩展模块
  • 电平转换芯片:MAX3485(3.3V,兼容 RS485)
  • PC 连接:USB 转 RS485 转换器 + 串口调试助手

3. 硬件连接要点

FPGA ↔ MAX3485

  • FPGA_TXDDI
  • FPGA_RXDRO
  • DERE 短接,由 FPGA IO 统一控制(高电平发送、低电平接收
  • 共地连接(GND)

MAX3485 ↔ 总线

  • A(+)/B(-) 接 RS485 总线
  • 总线另一端通过 USB 转 RS485 接 PC

4. FPGA 逻辑设计

发送(TX)流程
  1. 数据准备(存入发送缓冲区)
  2. 切换模式:DE/RE = 1(高电平,发送模式)
  3. 启动 UART 发送(逐位移出)
  4. 等待发送完成标志,然后拉低 DE/RE 恢复接收

关键:必须先在发送模式再发数据;发完后立即切回接收,避免总线冲突。

接收(RX)流程
  1. 持续监听 RXD,检测起始位(高→低跳变)
  2. 按预设波特率在每位中点采样
  3. 校验停止位/校验位
  4. 校验无误则将并行数据存入接收缓冲区

接收时 DE/RE = 0,被动监听总线即可。

5. 实验测试

  • RS422 测试:将模块的 Y/Z 接转换器的 R+/R-,A/B 接 T+/T-,串口工具验证收发一致。
  • RS485 测试 :模块的 A/B 直连转换器的 A/B,发送以 0x55 开头的数据,观察回环结果。
  • PC 双向通信:FPGA 按键发送数据到 PC 串口助手;PC 发送指令控制 FPGA 板载 LED 或数码管。

6. 总结与展望

  • 核心优势:差分信号抗干扰强,适合工业长距离通信。
  • 实现关键:正确连接硬件、匹配波特率、精确控制收发方向。
  • 应用扩展:PLC/DCS 系统、分布式传感器采集、智能楼宇、Modbus RTU 协议等。

💡 完整视频讲解可前往 ALINX 视频号进行直播回看

更多细节欢迎关注我们黑金云课堂全年免费直播课

黑金云课堂六月直播日历 我们将在每周二、三、四,同步推进 Verilog开发、Vitis开发、Linux开发三大系列,带你从零开始,稳扎稳打掌握 FPGA 开发全流程!

系列 内容定位
Verilog开发 硬件描述语言基础、逻辑设计、仿真调试
Vitis开发 Zynq软硬件协同、外设驱动、网络协议栈
Linux开发 嵌入式Linux系统移植、驱动编写、应用开发