RS-232 vs RS-485 vs CAN:工业串行总线怎么选(物理层 vs 协议层是关键)
RS-232/RS-485/CAN 不是三个对打的协议,而是两种层级:RS-232(单端点对点)与 RS-485(差动多点)只有物理层,要自己叠协议(如 Modbus RTU);CAN 连数据链路层(帧/仲裁/错误处理)都内建。本文讲清这个关键差别,并对应 GD32 的 CAN-FD(G5/H7/F5)与古典 CAN(L235)。
不是三个对打,是两种层级
RS-232、RS-485、CAN 常被当成「三个互相竞争的协议」,但更准确的理解是:它们其实落在两种不同的决定层级上。RS-232 与 RS-485 只是「电气层/物理层」——它们只规定电压怎么在线上跑,你还得自己在上面叠一层通讯协议(例如 Modbus RTU)才能沟通。CAN 则是「物理层 + 数据链路层(协议层)」一起给——帧格式、多主机仲裁、错误处理都写进标准、由控制器硬件完成。这个「层级」差别,是工业界最常被搞混、也是选型最关键的一点:距离与节点数把你从 RS-232 推向 RS-485;需要内建实时多主机 + 错误处理,就把你推向 CAN。
RS-232 vs RS-485:单端点对点 vs 差动多点
先看两个「纯物理层」的。RS-232 是单端(single-ended)信号:每条信号的电压都对共同地参考,地电位一漂、线一拉长就容易出错,所以它是短距(约 15 公尺)、低速、一对一(1 驱动 ↔ 1 接收)的点对点接口,典型用在主控台、仪器、传统 PC 串口。RS-485 改用差动(differential)信号:用一对双绞线上两条互补线的电压差来判读,共模噪声会在两线同时出现而被抵消,所以抗噪强、能拉到约 1200 公尺,而且是多点总线——标准是 32 个单位负载,改用低负载(⅛-UL)收发器最多可挂到约 256 颗(再用中继器可更多)。速度最高约 10 Mbit/s,但距离越长越慢(经验法则:位元率×距离 ≤ 10⁸)。预设半双工(2 线),要同时收发就用 4 线全双工。重点:RS-485 标准明文「不规定任何通讯协议」,所以它是工业 Modbus RTU 的物理层——RS-485 回答「线怎么接」,Modbus 回答「消息怎么讲」。
CAN:差动 + 多主机 + 内建仲裁/错误处理
CAN 跟前两者本质不同:它是差动信号(CAN_H / CAN_L,物理层在 ISO 11898-2),但标准本身还含数据链路层(ISO 11898-1)——所以它是多主机、消息式的总线:任何节点在总线空闲时都能发话,帧用「消息标识符」寻址而非节点地址。最关键的是它有「非破坏性逐位仲裁」:两个节点同时发话时,标识符数值较小(较优先)的那则会赢、而且不会被撞坏或延迟;再加上 CRC、位填充、ACK、错误帧等硬件级错误侦测与故障界定。换句话说,RS-485 给你的是「光有电气层、协议自己加」,CAN 给你的是「电气层 + 协议层一起、仲裁与错误处理都内建」。这就是为什么车用与需要实时优先权、错误处理的工业控制偏好 CAN。
⚠️ CAN vs CAN-FD 与 GD32 对照(L235 只有古典 CAN)
CAN 还分古典 CAN 与 CAN-FD。古典 CAN 每帧载荷最多 8 bytes、位元率最高约 1 Mbit/s(常跑 500 kbit/s);需要更大载荷(CAN-FD 到 64 bytes)或数据相更快(典型约 5~8 Mbit/s,视硬件而定,且只有数据字段那段提速)就上 CAN-FD(ISO 11898-1:2015)。落到 GD32 料号:支持 CAN-FD 的有 GD32G5(如 GD32G553)、GD32H7(如 GD32H759)、GD32F5(F503/F505)系列;⚠️ 而 GD32L235 只有古典 CAN 2.0、没有 CAN-FD——若你的需求是 CAN-FD,选型时务必避开 L235。另外提醒:古典 CAN 与 CAN-FD 节点不能透通混用(古典节点在 CAN-FD 帧出现时会报错),整条总线要全 CAN-FD 兼容。(各系列实际 CAN-FD 模块数量依料号而异,以该料号 datasheet 为准。)
怎么选
选型心法,先问「层级」:我需要的只是一条电气线(物理层),还是连帧/仲裁/错误处理都要(协议层)?这一题就把 RS-485 与 CAN 分开。具体:一对一、近距离、传统设备(主控台/仪器/老串口)→ RS-232。长距离(到约 1200 公尺)、多台设备挂同一条线、现场噪声大 → RS-485(记得只有物理层,上层通常配 Modbus RTU;要同时收发走 4 线全双工)。需要实时、多主机、消息有优先权、且要硬件级错误处理 → CAN;还要大载荷/更高吞吐 → CAN-FD。MCU 落地:决定走 CAN-FD 就从 GD32G5 / GD32H7 / GD32F5 挑;低功耗但只需古典 CAN 用 GD32L235;RS-485/Modbus 应用则搭外部 RS-485 收发器 + MCU 的 UART。傑聯特科技是 GigaDevice 授权代理商,从古典 CAN(GD32L235)到 CAN-FD(GD32G5/H7/F5)全系列供应;欢迎提供你的总线类型、距离、节点数与实时/载荷需求,我们协助选型并回复样品、规格书与报价。
文中提及的产品
GD32G553 Cortex-M33 数字电源 MCU
GD32G553 属 GigaDevice GD32G5 系列高效能 Arm Cortex-M33(含 DSP 与单精度 FPU)微控制器,主频 216MHz,256~512KB 双区 Flash、128KB SRAM(含 TCMRAM)。内置 4 组 12-bit ADC(最高 5.3MSPS)、4 组 DAC、8 颗高速比较器、3 组 CAN-FD,以及 16 通道高分辨计时器(145ps)与 TMU/FAC/FFT 数学加速器。支持安全启动/AES、IEC 61508 SIL2,适合数字电源、EV 充电、储能变流与伺服电机控制。
GD32H759 Arm Cortex-M7 600MHz 高性能 MCU
GD32H759 是 GigaDevice 高性能 Arm Cortex-M7 MCU,主频 600MHz(含 L1 缓存、双精度 FPU),Flash 最高 3840KB、SRAM 达 1024KB(含 ITCM/DTCM 与 ECC)。整合 3× CAN-FD、双 Ethernet MAC(含 EtherCAT)、2× USB HS/FS、6× SPI、2× OSPI、TFT-LCD 与 14-bit ADC,适合工业自动化、电机控制与图形 HMI。封装 LQFP100/144/176、BGA。
GD32L235 Cortex-M23 超低功耗 MCU
GD32L235 是 GigaDevice 超低功耗 32-bit Arm Cortex-M23 微控制器,主频 64MHz,64~128KB Flash/12~24KB SRAM。功耗极低:运行约 66µA/MHz、深睡 1.8µA(唤醒 <2µs)、待机 0.26µA,并具低功耗 LPUART 与 LPTIMER 支持常开任务。内置 12-bit ADC、DAC 与 2 颗比较器、USB 2.0 FS 与 CAN 2.0,封装含 LQFP/QFN 及 WLCSP25。相较已收录的 GD32L233,L235 增加 CAN 与更丰富的外设,适合智能门锁、计量、穿戴与电池管理。