[具身智能-577]:RDK X5:UART转485芯片MAX3485管脚定义和使用

发布时间:2026/7/19 15:41:17
[具身智能-577]:RDK X5:UART转485芯片MAX3485管脚定义和使用 MAX3485 引脚定义、原理、硬件接线、时序完整使用指南一、MAX3485 基础说明供电3.3V 单电源完美匹配 RDK X5 3.3V TTL UART无需电平分压总线标准半双工 RS485 差分总线A、B最大速率10Mbps传输距离1200 米9600bps 低速核心特点DE/RE 两个使能引脚控制收发模式。二、8 引脚 DIP/SOP 标准引脚定义主流封装表格引脚号引脚名称全称类型功能说明1ROReceiver Output输出差分总线转 TTL 接收输出→ 接主控 UART_RXRDK PIN102/REReceiver Enable输入低有效低电平 芯片开启接收高电平 关闭接收3DEDriver Enable输入高有效高电平 芯片开启发送低电平 关闭发送4DIDriver Input输入TTL 发送数据输入→ 接主控 UART_TXRDK PIN85GNDGround电源地必须与 RDK 共地6ABus A差分总线正极外接 RS485 总线 A 线7BBus B差分总线负极外接 RS485 总线 B 线8VCCPower Supply电源接 3.3V严禁 5V 直连 RDK IO 场景电平逻辑真值表DE、/RE 组合控制收发表格DE/RE芯片工作模式11发送模式DI 数据转为 A/B 差分输出RO 高阻无法接收00接收模式A/B 差分转为 RO TTL 输出驱动器关闭总线释放01总线高阻收发全部关闭闲置不推荐10非法组合禁止使用DE与/RE是同相信号因此可以使用一个GPIO就可以实现方向控制三、最简标准接法工程通用只占用 1 路 GPIO关键技巧DE 和 /RE 短接在一起共用一个 GPIO 控制引脚 2/RE与引脚 3DE直接短接短接点接 RDK 任意 GPIO如 BOARD PIN16逻辑简化GPIO 高电平→ DE1、/RE1 → 发送模式GPIO 低电平→ DE0、/RE0 → 接收模式RDK X5 完整硬件接线示例UART1 /dev/ttyS1表格RDK 40PIN BOARD 引脚信号MAX3485 引脚PIN8UART1_TX4 DIPIN10UART1_RX1 ROPIN16GPIO (DIR 控制)2/RE 3 DE两引脚短接后接入PIN13.3V8 VCCPIN6GND5 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 到 VCCB 下拉 10k 到 GND总线空闲时固定 AB避免浮空乱码。禁止 5V 供电MAX3485 分 3.3V/5V 版本RDK 场景必须选用 3.3V 型号5V 芯片 RO 输出 5V 会击穿 RDK 3.3V IO。五、收发时序操作规范丢包核心关键点RS485 半双工切换时序错误会丢前导字节 / 末尾字节发送流程① GPIO 拉高 DIRDE/RE1 ② 延时 ≥100us等待芯片驱动电路稳定 ② UART 写入待发送字节执行flush()清空缓冲区 ③ 根据波特率计算整帧传输时间等待所有 bit 移位完成 ④ GPIO 拉低 DIR切回接收模式空闲常态程序初始化、循环等待应答时DIR 永久低电平保持接收模式。传输延时计算公式1 个 UART 字节 10bit1 起始 8 数据 1 停止 单 bit 时间 1 / 波特率总等待时间 字节数量 × 10 / 波特率 100us 裕量例9600bps发送 8 字节 单 bit 1/9600 ≈ 0.000104s 总 bit8×1080bit 传输时间≈ 80/9600 ≈ 0.0083s额外加 0.0001s 裕量。六、典型硬件故障现象与原因能发数据外设无应答DE、/RE 未短接DIR 引脚发送时无高电平TX/DI、RX/RO 接反。发送后收不到返回帧 发送完成未等待数据传输完就拉低 DIR截断最后几个字节。接收全部乱码 缺少共地、长线无 120Ω 终端电阻、波特率参数不匹配、A/B 接反。短距离正常长线无通信 未使用双绞线、无终端电阻、缺少总线上下拉电阻。IO 损坏 使用 5V 版 MAX3485 直连 RDK 3.3V RX 引脚。七、极简控制逻辑伪代码Pythonpython运行# 初始化默认接收 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)