📖 第 28 章:485实验(RS-485)

🔧 正点原子《DMF407 开发指南》V1.0 · Chapter 28
🗨️ 「RS-485:工业现场总线的常青树。」
这一章在干嘛? 485 实验:差分传输、半双工收发自动切换、SP3485 收发器、与串口助手的距离测试。学会后做 Modbus 通信就上手。
28.1 485 简介28.2 硬件设计28.3 程序设计28.4 下载验证

28.1 485 简介

RS-485 是工业总线标准:

原书图 28.1.1:RS-485 差分信号
原书图 28.1.1:RS-485 差分信号

电平标准:

电平A-B 电压
逻辑 1 (Mark)+2 V ~ +6 V
逻辑 0 (Space)-6 V ~ -2 V

SP3485 收发器:3.3V/5V 通用,自动收发切换(靠 TX/RX 信号互斥)。

485 与串口:485 只是一种物理层,协议层还是 UART(异步串口)。所以 485 程序基本就是串口程序 + 一个收发控制引脚。

28.2 硬件设计

USART2(PA2/PA3)接 SP3485,PG8 控制收发切换(高发低收)。

原书图 28.2.1:SP3485 接线图
原书图 28.2.1:SP3485 接线图

28.3 程序设计

28.3.1 CubeMX 配置

28.3.2 关键代码

// 发送
void rs485_send(uint8_t *buf, uint16_t len) {
    RS485_TX_MODE();    // PG8 = 1
    HAL_UART_Transmit(&huart2, buf, len, 100);
    while (__HAL_UART_GET_FLAG(&huart2, UART_FLAG_TC) == RESET);
    RS485_RX_MODE();    // PG8 = 0
}

// 接收(中断)
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {
    if (huart->Instance == USART2) {
        LED1_TOGGLE();
        HAL_UART_Receive_IT(&huart2, &rx_byte, 1);
    }
}

28.4 下载验证

两块开发板 A/B 对连,A 发 B 收:串口助手观察。开发板上 LED 闪烁表示收发正常。

必须用双绞线,且 120Ω 终端电阻在线缆两端各一个,否则长距离波形反射导致误码。

🧠 小测验
RS-485 用几根差分信号线?
2 根(A、B)。
485 是半双工还是全双工?
半双工,靠收发切换。
通信距离最远多少?
1200 m(典型值)。
← 上一篇🏠 顶层目录下一篇 →