【STM32】485接口原理
485 通信实验
这篇文章是对 RS485通信 的原理、硬件连接、接口芯片(SP3485)、总线结构等都有详尽的说明。我们在此处进行清晰有条理的讲解整理,便于学习和实验操作。
在了解485接口通信原理之前,我们先复习一下串口:
串口是一种接口标准,它规定了接口的电气标准,简单说只是物理层的一个标准。没有规定接口插件电缆以及使用的协议,所以只要我们使用的接口插件电缆符合串口标准就可以在实际中灵活使用,在串口接口标准上使用各种协议进行通讯及设备控制。
典型的串行通讯标准是
RS232
和RS485
,它们定义了电压,阻抗等,但不对软件协议给予定义。
RS232接口缺陷:
(1)接口的信号电平值较高(+/-12V),易损坏接口电路的芯片。
(2)传输速率较低,在异步传输时,波特率为20Kbps。
(3)接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。
(4)传输距离有限,最大传输距离标准值为50英尺,实际上也只能用在50米左右。
🔹 第一部分:RS485 接口原理
RS485 是什么?
485(一般称作RS485/EIA-485)是隶属于OSI模型物理层的电气特性规定为2线,半双工,多点通信的标准。它的电气特性和RS-232大不一样。用缆线两端的电压差值来表示传递信号。RS485仅仅规定了接受端和发送端的电气特性。它没有规定或推荐任何数据协议。
简单点说,RS485 是一种用于串行通信的物理层标准,主要特性包括:
- 差分传输(A/B 两线电压差)
- 半双工通信(收发不能同时)
- 多点通信(支持多个节点)
- 传输距离远(可达 1200 米)
- 抗干扰能力强
📏 RS485 与 RS232 对比简表:
特性 | RS232 | RS485 |
---|---|---|
信号类型 | 单端信号 | 差分信号 |
电平 | ±12V | ±2~6V |
接口形式 | 点对点 | 多点总线 |
通信距离 | < 50 米 | > 1200 米 |
抗干扰性 | 差 | 强 |
通信方式 | 全双工 | 半双工 |
RS485的特点包括:
① 接口电平低,不易损坏芯片。 RS485的电气特性:逻辑“1” 以两线间的电压差为+(2~6)V 表示;逻辑“0” 以两线间的电压差为-(2~6)V 表示。接口信号电平比RS232降低了,不易损坏接口电路的芯片。
② 传输速率高。 10米时,RS485的数据最高传输速率可达35Mbps,在1200m时,传输速度可达100Kbps。
③ 抗干扰能力强。 RS485接口是采用平衡驱动器和差分接收器的组合,抗共模干扰能力增强,即抗噪声干扰性好。
④ 传输距离远,支持节点多。 RS485总线最长可以传输1200m以上(速率≤100Kbps)一般最大支持32个节点,如果使用特制的485芯片,可以达到128个或者256个节点,最大的可以支持到400个节点。
🔹 第二部分:RS485 硬件结构与连接
RS485推荐使用在点对点网络中,线型,总线型,不能是星型,环型网络。理想情况下RS485需要2个匹配电阻,其阻值要求等于传输电缆的特性阻抗(一般为120Ω)。没有特性阻抗的话,当所有的设备都静止或者没有能量的时候就会产生噪声,而且线移需要双端的电压差。没有终接电阻的话,会使得较快速的发送端产生多个数据信号的边缘,导致数据传输出错。485推荐的连接方式:
总线拓扑结构图:
总线型拓扑
A连A,B连B
首尾两端需加终端电阻(120Ω) → 抑制反射
避免星型/分支结构 → 增加干扰、波形反射
√ 在上面的连接中,如果需要添加匹配电阻,我们一般在总线的起止端加入,也就是主机和设备4上面各加一个120Ω的匹配电阻。
收发器SP3485
SP3485 收发器结构图:
图中A、B总线接口,用于连接485总线。RO是接收输出端,DI是发送数据收入端,RE是接收使能信号(低电平有效),DE是发送使能信号(高电平有效)。
引脚 | 名称 | 功能说明 |
---|---|---|
1 | RO | 接收输出(接到 MCU RX) |
2 | RE | 接收使能(低有效) |
3 | DE | 发送使能(高有效) |
4 | DI | 发送输入(接到 MCU TX) |
6/7 | A/B | 差分数据线 |
8/5 | VCC / GND | 电源和地 |
✅ 控制方式(DE / RE):
发送模式:DE = 1, RE = 1
(关闭接收)
接收模式:DE = 0, RE = 0
(开启接收)
可将 DE 和 RE 连接到同一IO口控制
RS485 实际硬件原理图
注意:
1)R14和R17是两个偏置电阻,用来保证总线空闲时,AB之间的电压差都会大约200mV,避免总线空闲时压差不定逻辑混乱。
2)两个485接口连接,A连接A,B连接B。
💡 说明:
- MCU 使用 USART2 (PA2/PA3) 进行串口通信
PD7
控制 DE/RE 引脚,实现收发模式切换SP3485
芯片将 TTL 串口电平转换为 RS485 差分信号- R14/R17:偏置电阻(保持总线空闲时有稳定电压)
- R20(120Ω):终端匹配电阻(抑制反射)
🔹 第三部分:实验程序讲解要点
🧱 1. 初始化串口(USART)
void USART2_Init(void) {// 配置PA2(TX),PA3(RX),波特率等
}
🧱 2. 初始化控制引脚(DE / RE)
void RS485_DIR_Init(void) {// PD7 设置为输出模式
}
🧱 3. 控制收发方向的宏定义
#define RS485_TX_EN() GPIO_SetBits(GPIOD, GPIO_Pin_7) // 发
#define RS485_RX_EN() GPIO_ResetBits(GPIOD, GPIO_Pin_7) // 收
🧱 4. 发送函数
void RS485_Send(uint8_t *data, uint16_t len) {RS485_TX_EN(); // 切换到发送模式for (int i = 0; i < len; i++) {USART_SendData(USART2, data[i]);while (USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);}RS485_RX_EN(); // 切换回接收
}
🧱 5. 接收处理
可以使用中断 / 查询方式接收数据
接收模式时要保证 DE = 0,RE = 0
注意事项:
- 发送和接收需要控制方向切换(半双工)
- 匹配电阻必须加在总线两端(主机 + 末端设备)
- 偏置电阻保证空闲时有稳定电平差
- A对A、B对B连接,切勿反接
- 如果多个设备通信,要采用 协议约定主从通信(如
Modbus
)
RS485 是一种稳定、高抗干扰、长距离的通信方式,广泛应用于工业控制、仪表、智能电网等场景。通过 USART + SP3485 可以实现基于 STM32 的 485 通信实验。如果说RS232 简单点对点;那么,RS485 则为差分长距离;CAN 差分 + 协议智能总线。这些通信方式都可以用于串口通信,但差分通信(RS485/CAN) 更适合工业场景,特别是在噪声干扰强、距离长、设备多的环境中。
以上,欢迎有从事同行业的电子信息工程、互联网通信、嵌入式开发的朋友共同探讨与提问,我可以提供实战演示或模板库。希望内容能够对你产生帮助!