MAX3485 引脚定义、原理、硬件接线、时序完整使用指南
一、MAX3485 基础说明
- 供电:3.3V 单电源,完美匹配 RDK X5 3.3V TTL UART,无需电平分压;
- 总线标准:半双工 RS485 差分总线(A、B);
- 最大速率:10Mbps;
- 传输距离:1200 米(9600bps 低速);
- 核心特点:DE/RE 两个使能引脚控制收发模式。
二、8 引脚 DIP/SOP 标准引脚定义(主流封装)
表格
| 引脚号 | 引脚名称 | 全称 | 类型 | 功能说明 |
|---|---|---|---|---|
| 1 | RO | Receiver Output | 输出 | 差分总线转 TTL 接收输出→ 接主控 UART_RX(RDK PIN10) |
| 2 | /RE | Receiver Enable | 输入, 低有效 | 低电平 = 芯片开启接收;高电平 =关闭接收 |
| 3 | DE | Driver Enable | 输入, 高有效 | 高电平 = 芯片开启发送;低电平 =关闭发送 |
| 4 | DI | Driver Input | 输入 | TTL 发送数据输入→ 接主控 UART_TX(RDK PIN8) |
| 5 | GND | Ground | 电源地 | 必须与 RDK 共地 |
| 6 | A | Bus A | 差分总线正极 | 外接 RS485 总线 A 线 |
| 7 | B | Bus B | 差分总线负极 | 外接 RS485 总线 B 线 |
| 8 | VCC | Power Supply | 电源 | 接 3.3V(严禁 5V 直连 RDK IO 场景) |
电平逻辑真值表(DE、/RE 组合控制收发)
表格
| DE | /RE | 芯片工作模式 |
|---|---|---|
| 1 | 1 | 发送模式:DI 数据转为 A/B 差分输出;RO 高阻(无法接收) |
| 0 | 0 | 接收模式:A/B 差分转为 RO TTL 输出;驱动器关闭,总线释放 |
| 0 | 1 | 总线高阻,收发全部关闭(闲置不推荐) |
| 1 | 0 | 非法组合,禁止使用 |
DE与/RE是同相信号,因此可以使用一个GPIO就可以实现方向控制!!!
三、最简标准接法(工程通用,只占用 1 路 GPIO)
关键技巧:DE 和 /RE 短接在一起,共用一个 GPIO 控制
- 引脚 2
/RE与引脚 3DE直接短接; - 短接点接 RDK 任意 GPIO(如 BOARD PIN16);
逻辑简化:
- GPIO =高电平→ DE=1、/RE=1 → 发送模式
- GPIO =低电平→ DE=0、/RE=0 → 接收模式
RDK X5 完整硬件接线示例(UART1 /dev/ttyS1)
表格
| RDK 40PIN BOARD 引脚 | 信号 | MAX3485 引脚 |
|---|---|---|
| PIN8 | UART1_TX | 4 DI |
| PIN10 | UART1_RX | 1 RO |
| PIN16 | GPIO (DIR 控制) | 2/RE + 3 DE(两引脚短接后接入) |
| PIN1 | 3.3V | 8 VCC |
| PIN6 | GND | 5 GND |
外部总线: MAX3485 6 (A) ↔ 外设 485 A MAX3485 7 (B) ↔ 外设 485 B
四、外围配套电路设计要点
- 电源去耦电容VCC 与 GND 之间紧贴芯片并联 0.1μF 陶瓷电容,滤除电源高频噪声,防止总线乱码。
- 总线终端 120Ω 电阻通信线缆>10m、波特率≥19200 时,在总线最末端设备 A、B 之间焊接 120Ω 电阻,消除信号反射; 短距离(<5 米)低速 9600bps 可省略。
- 总线上下拉(可选,抗干扰)A 上拉 10k 到 VCC,B 下拉 10k 到 GND;总线空闲时固定 A>B,避免浮空乱码。
- 禁止 5V 供电MAX3485 分 3.3V/5V 版本,RDK 场景必须选用 3.3V 型号;5V 芯片 RO 输出 5V 会击穿 RDK 3.3V IO。
五、收发时序操作规范(丢包核心关键点)
RS485 半双工,切换时序错误会丢前导字节 / 末尾字节:
- 发送流程① GPIO 拉高 DIR(DE+/RE=1) ② 延时 ≥100us:等待芯片驱动电路稳定 ② UART 写入待发送字节,执行
flush()清空缓冲区 ③ 根据波特率计算整帧传输时间,等待所有 bit 移位完成 ④ GPIO 拉低 DIR,切回接收模式 - 空闲常态程序初始化、循环等待应答时,DIR 永久低电平,保持接收模式。
传输延时计算公式
1 个 UART 字节 = 10bit(1 起始 + 8 数据 + 1 停止) 单 bit 时间 =1 / 波特率总等待时间 = 字节数量 × 10 / 波特率 + 100us 裕量
例:9600bps,发送 8 字节 单 bit = 1/9600 ≈ 0.000104s 总 bit=8×10=80bit 传输时间≈ 80/9600 ≈ 0.0083s,额外加 0.0001s 裕量。
六、典型硬件故障现象与原因
- 能发数据,外设无应答
- DE、/RE 未短接;DIR 引脚发送时无高电平;TX/DI、RX/RO 接反。
- 发送后收不到返回帧 发送完成未等待数据传输完就拉低 DIR,截断最后几个字节。
- 接收全部乱码 缺少共地、长线无 120Ω 终端电阻、波特率参数不匹配、A/B 接反。
- 短距离正常,长线无通信 未使用双绞线、无终端电阻、缺少总线上下拉电阻。
- IO 损坏 使用 5V 版 MAX3485 直连 RDK 3.3V RX 引脚。
七、极简控制逻辑伪代码(Python)
python
运行
# 初始化默认接收 GPIO.output(DIR_PIN, LOW) # 发送函数 def send(data): GPIO.output(DIR_PIN, HIGH) time.sleep(0.0001) # 建立延时 ser.write(data) ser.flush() # 等待传输完成 delay = len(data)*10 / BAUD + 0.0001 time.sleep(delay) GPIO.output(DIR_PIN, LOW) # 接收函数(常态自动接收) def recv(): return ser.read(32)