1. RS485通信基础与Linux内核支持解析
RS485作为一种工业级差分串行通信标准,凭借其抗干扰能力强、传输距离远(最长1200米)、支持多点通信(最多32个节点)等特性,在工业自动化、智能仪表等领域广泛应用。与RS232相比,RS485采用平衡传输方式,通过双绞线上的电压差表示逻辑状态,典型工作电压范围为-7V至+12V。
在Linux内核中,RS485功能通过串口子系统实现。自3.0内核版本开始,官方引入了标准的RS485 API,主要定义在include/uapi/linux/serial.h头文件中。关键数据结构serial_rs485包含了控制RS485模式的所有参数:
c复制struct serial_rs485 {
__u32 flags; // 控制标志位
__u32 delay_rts_before_send; // 发送前RTS延迟(ms)
__u32 delay_rts_after_send; // 发送后RTS延迟(ms)
__u32 padding[5]; // 保留字段
};
其中flags字段支持以下重要标志:
SER_RS485_ENABLED:启用RS485模式SER_RS485_RTS_ON_SEND:发送时拉高RTSSER_RS485_RTS_AFTER_SEND:发送后保持RTS状态SER_RS485_RX_DURING_TX:支持全双工通信
关键提示:不同厂商的UART控制器对RS485的支持程度不一,实际开发中需查阅具体芯片手册确认硬件能力。
2. 全志T113平台硬件特性分析
全志T113-i工业级处理器内置多个UART控制器,其中UART3通常设计为RS485接口。该平台RS485电路设计有两个关键点:
- 收发控制电路:采用SN65HVD72等标准收发器,通过GPIO控制收发状态
- 终端匹配电阻:在总线两端需接入120Ω终端电阻抑制信号反射
硬件连接示意图:
code复制T113 UART3_TX ---> 收发器DI
T113 UART3_RX <--- 收发器RO
T113 GPIO_PC13 --> 收发器/RE、DE(
