🤖 roboto_origin_03 Wiki
首页 / 硬件 / USB 转 CAN 通讯协议与拓扑

ATOM01 人形机器人的运动控制建立在 CAN(Controller Area Network)总线之上,而上位机(如 Orange Pi 5 Plus)原生仅提供 USB 接口。因此,USB 转 CAN 模块 构成了连接高层算法与底层伺服电机之间的关键协议桥梁。本文档面向具备嵌入式基础的中级开发者,系统解析 ATOM01 的 USB2CAN 信号链路、硬件架构、四路 CAN 拓扑规划以及固件烧录与电气规范。内容同时覆盖 V1.0 独立通讯模块(Roboto_Usb2Can)V2.0 集成主板(RBE_Board V2.0) 两种硬件形态,帮助你理解其共通的设计哲学与差异化的物理接口。

Sources: README_cn.md, README_cn.md

协议转换架构与信号链路

ATOM01 的 USB2CAN 方案并未采用单芯片协议转换的简化思路,而是选择了 "USB Hub + 四路独立 MCU" 的星型架构。这种设计的核心动机在于:四足/双足机器人的每条肢体在物理上天然独立,若采用单路 CAN 总线挂载所有电机,一旦某关节的伺服驱动器发生总线故障(如短路或持续错误帧),将直接瘫痪整条总线,导致机器人失控甚至摔倒。通过为每路肢体分配独立的 CAN 控制器与隔离收发器,某一肢体的通讯故障可以被限制在本地,不会波及其他肢体,从而显著提升系统的故障隔离能力与安全性。

从信号链路的角度观察,数据流向呈严格的分层结构。上位机通过 USB 2.0 差分对将高层控制指令发送至 CoreChips SL2.1A(U60)USB Hub,该芯片将一路 USB 上行端口扩展为四路独立的 USB 下行端口,每一路对应一颗 STM32G431C8T6 MCU。STM32G431 内置 FDCAN 外设,负责将 USB 报文解析并封装为 CAN 2.0B 帧格式;随后,帧数据经 TI ISO1050DWR 隔离式 CAN 收发器 驱动至物理差分总线。ISO1050 的数字隔离屏障将 MCU 侧的低压逻辑地(GND)与 CAN 总线侧的隔离地完全分割,配合隔离电源网络,构成了完整的电气隔离边界。

graph LR
    subgraph Host[上位机侧]
        OP[Orange Pi 5 Plus<br/>Linux 主机]
    end
    
    subgraph USB_Layer[USB 协议层]
        USB[USB 2.0 Type-C<br/>差分信号]
        HUB[SL2.1A USB Hub<br/>1 扩 4]
    end
    
    subgraph MCU_Layer[MCU 协议层]
        MCU1[STM32G431 #1<br/>FDCAN 控制器]
        MCU2[STM32G431 #2<br/>FDCAN 控制器]
        MCU3[STM32G431 #3<br/>FDCAN 控制器]
        MCU4[STM32G431 #4<br/>FDCAN 控制器]
    end
    
    subgraph PHY_Layer[物理层与隔离]
        ISO1[ISO1050 #1<br/>隔离收发器]
        ISO2[ISO1050 #2<br/>隔离收发器]
        ISO3[ISO1050 #3<br/>隔离收发器]
        ISO4[ISO1050 #4<br/>隔离收发器]
        PWR[隔离电源网络<br/>VPS8505 + 变压器]
    end
    
    subgraph Bus_Layer[CAN 总线层]
        CAN1[CAN1 总线<br/>左腿]
        CAN2[CAN2 总线<br/>右腿+腰]
        CAN3[CAN3 总线<br/>左臂]
        CAN4[CAN4 总线<br/>右臂]
    end

    OP --> USB
    USB --> HUB
    HUB --> MCU1
    HUB --> MCU2
    HUB --> MCU3
    HUB --> MCU4
    MCU1 --> ISO1
    MCU2 --> ISO2
    MCU3 --> ISO3
    MCU4 --> ISO4
    PWR --> ISO1
    PWR --> ISO2
    PWR --> ISO3
    PWR --> ISO4
    ISO1 --> CAN1
    ISO2 --> CAN2
    ISO3 --> CAN3
    ISO4 --> CAN4

Sources: SCH_RBE_PWR_HUB_V2.1_2026-04-09.pdf, SCH_Roboto_Usb2Can_V1.0_1.pdf

电气隔离设计

在机器人这种大功率电机与敏感数字电路共存的电磁环境中,电气隔离 并非可选增强项,而是通讯可靠性的硬性要求。ATOM01 的 USB2CAN 子系统在每一路 CAN 通道上均实施了两级隔离:数字信号隔离电源隔离。数字隔离由 ISO1050DWR 完成,该器件通过 TI 的电容隔离技术在 CAN 发送与接收路径上提供高达 2500 VRMS 的隔离耐压,同时集成符合 ISO 11898-2 标准的 CAN 驱动器。电源隔离则通过 VPSC VPS8505 推挽变压器驱动器 配合 VPT85BB-01A 微型变压器 实现,将主板侧的 5V 电源转换为隔离侧的浮动电源,再经 TPS76350DBVR-TP LDO 稳压为 3.3V,专供隔离侧的 ISO1050 与 CAN 总线终端网络使用。这种 "信号 + 电源" 双隔离架构确保了即使某一路电机的 48V 功率地发生浪涌或短路,也无法通过 CAN 总线反灌至上位机侧。

Sources: BOM_三合一V2.1_RBE_PWR_HUB_V2.1_2026-04-09.xlsx, BOM_Roboto_uUsb2Can_V1.0_1_2026-4-8.xlsx

V1.0 与 V2.0 拓扑对比

虽然 V1.0 的独立通讯模块与 V2.0 的集成主板在芯片级架构上高度一致,但二者在物理拓扑、接口形态与系统集成度上存在显著差异,直接决定了机内走线复杂度与装配体验。

对比维度 V1.0 Roboto_Usb2Can V2.0 RBE_Board V2.0
功能形态 独立通讯转换模块 集成于三合一主板(电源 + 降压 + USB2CAN)
上行接口 USB-C(数据 + 5V 供电) USB 2.0 Type-C(仅数据,接主控板)
CAN 物理接口 GH1.25 卧贴端子 × 4 XT30 (2+2) 端子 × 4(电源与 CAN 合一)
功率与信号关系 CAN 信号与 48V 功率分离,需额外线束连接 Roboto_Power 48V 与 CAN_H/CAN_L 集成于同一连接器
机内线束 较复杂,USB2CAN ↔ Power 之间需 GH1.25 飞线 极简,单条 XT30 (2+2) 线缆同时输送功率与信号
尺寸 独立小板,未明确标注 80mm × 60mm 紧凑集成
固件烧录 背部 4 组 SWD 口,需 1.25mm 烧录针 板载 4 组 SWD 口,位号 U11/U13/U16/U17

从系统拓扑的角度审视,V1.0 的能量流与数据流在物理上是分离的:48V 电池 → Roboto_Power 分电板 → 电机;上位机 → Roboto_Usb2Can → GH1.25 飞线 → Roboto_Power 的 CAN 集线器 → 电机。V2.0 则通过 RBE_Board 的单板集成,将这两条路径压缩为同一物理载体,电池 → RBE_Board → XT30 (2+2) → 电机,同时主控板通过 Type-C 与 RBE_Board 完成 USB2CAN 通讯。这种集成化设计不仅减少了接插件失效点,更在高频振动的双足运动场景下提升了电磁兼容性与长期可靠性。

graph TB
    subgraph V1_0["V1.0 分立拓扑"]
        B1[48V 电池组]
        P1[Roboto_Power<br/>分电板 + CAN 集线]
        U1[Roboto_Usb2Can<br/>独立通讯模块]
        C1[Orange Pi 5 Plus]
        M1[电机群]
        
        C1 -->|USB-C| U1
        U1 -->|GH1.25 CAN 线| P1
        B1 -->|XT60| P1
        P1 -->|XT30 48V| M1
        P1 -->|CAN_H/L| M1
    end
    
    subgraph V2_0["V2.0 集成拓扑"]
        B2[48V 电池组]
        R1[RBE_Board V2.0<br/>三合一主板]
        C2[Orange Pi 5 Plus]
        M2[电机群]
        
        B2 -->|XT60| R1
        C2 -->|USB Type-C| R1
        R1 -->|XT30 (2+2)<br/>48V + CAN| M2
    end

Sources: README_cn.md, README_cn.md, README_cn.md

四路 CAN 拓扑规划

ATOM01 全身共配置约 16 个关节电机(视具体自由度版本而定),若将全部电机挂载于单条 CAN 总线,不仅总线负载率过高,且一旦总线故障即导致全身瘫痪。因此,USB2CAN 模块将电机按肢体划分为 四路完全独立的 CAN 总线,每一路由独立的 MCU 与隔离收发器管理。基于人体运动学的控制逻辑与线束走线便利性,推荐按以下规则分配:

CAN 通道 推荐连接肢体 典型关节覆盖 备注
CAN 1 左腿 髋关节、膝关节、踝关节等 独立总线,便于左腿运动学解耦控制
CAN 2 右腿(含腰部) 髋关节、膝关节、踝关节、腰部关节 腰关节与右腿在物理结构上靠近,共享线束更简洁
CAN 3 左臂 肩、肘、腕等关节 上肢负载较轻,总线负载相对较低
CAN 4 右臂 肩、肘、腕等关节 与左臂对称,便于控制逻辑镜像复用

每路 CAN 总线遵循标准 ISO 11898-2 规范,采用差分信号传输,波特率通常配置为 1 Mbps(具体以伺服电机驱动器规格为准)。需要特别强调的是,CAN_H 与 CAN_L 必须严格同组对接,板上丝印以 H 标识 CAN_H、L 标识 CAN_L。反接或交叉将导致总线显性电平异常,控制器迅速进入错误被动状态(Error Passive)甚至总线关闭(Bus Off)。

Sources: README_cn.md, README_cn.md

固件烧录与 Linux 驱动

USB2CAN 模块的四颗 STM32G431 MCU 出厂时均需预烧录固件方可工作。该固件实现了 USB 虚拟串口(或自定义 USB 设备类)到 FDCAN 的协议桥接逻辑。

固件烧录步骤

无论是 V1.0 的独立模块还是 V2.0 的集成主板,均预留了 4 组 SWD 调试接口,每组对应一路 CAN 通道的 MCU。烧录接口的引脚定义从左至右依次为:GND、3V3、CLK、DIO。烧录流程如下:

  1. 获取固件:访问 roboto_usb2can release 下载最新固件二进制文件。
  2. 连接烧录器:使用 ST-Link V2 或兼容工具,配合 1.25mm 间距的烧录针(pogo pin)接触 SWD 焊盘。
  3. 顺序烧录:依次对 4 个 SWD 口执行烧录,每次烧录对应一颗 STM32G431。注意保持供电稳定,避免烧录过程中断电。
  4. 状态验证:烧录完成后,模块正面的 LED 指示灯应呈现对应的通道状态闪烁。

Sources: README_cn.md, README.md

Linux 系统识别

ATOM01 的 USB2CAN 模块目前 仅支持 Linux 系统 识别与使用。固件在上位机侧枚举为 USB 设备,Orange Pi 5 Plus 等 Linux 主机通过标准的 usbserial 或厂商提供的驱动层与其交互。开发者无需手动安装内核模块,但需确保系统具备 USB 设备读写权限(通常将用户加入 dialoutplugdev 组即可)。在终端中执行 lsusb 应当能看到对应的 USB Hub(SL2.1A 枚举为 Generic USB Hub)及下游的四个 MCU 设备节点。

Sources: README_cn.md, README_cn.md

CAN 总线电气规范

CAN 总线的物理层可靠性直接决定了整机运动控制的稳定性。以下规范必须在装机与调试阶段严格执行。

终端电阻

CAN 总线规范要求总线两端各放置一枚 120Ω 终端电阻,以抑制差分信号线上的高频反射。在 ATOM01 系统中,终端电阻通常集成于肢体末端的伺服电机内部。若你的电机型号未内置终端电阻,则必须在每路 CAN 总线的最远端(即物理链路的最后一个电机)并联一枚 120Ω 电阻。调试前的快速验证方法:使用万用表测量总线空闲状态下 CAN_H 与 CAN_L 之间的直流电阻,理论值应约为 60Ω(两个 120Ω 电阻并联)。若读数为开路或远高于 60Ω,说明终端电阻缺失,需立即补装。

ESD 与浪涌防护

每路 CAN 总线在物理层出口处均配备了 ESDA6V1L 瞬态抑制二极管(TVS 阵列),用于吸收人体静电放电或线束插拔过程中引入的瞬态高压。该器件将 CAN_H 与 CAN_L 的差模/共模过压钳制在安全范围内,保护后级的 ISO1050 收发器。尽管板级已做防护,装机时仍应避免在干燥高静电环境下徒手插拔 CAN 线束。

5V 供电限制(V1.0 特别注意事项)

对于 V1.0 的独立 Roboto_Usb2Can 模块,其 USB-C 接口仅接受 5V 供电。严禁将任何高于 5V 的电源接入该接口,否则将立即烧毁 Hub 芯片与 MCU 的 VBUS 保护电路。Type-C 线缆插入时应注意防呆,避免反向暴力插拔。

Sources: README_cn.md, BOM_Roboto_uUsb2Can_V1.0_1_2026-4-8.xlsx, BOM_三合一V2.1_RBE_PWR_HUB_V2.1_2026-04-09.xlsx

故障排查指南

在整机调试阶段,USB2CAN 相关故障通常表现为 "上位机无法识别设备" 或 "CAN 报文丢包/断连"。以下排查表按症状分类,提供可操作的诊断路径。

故障现象 可能根因 排查步骤
Linux 下 lsusb 无设备 USB 线缆仅充电无数据、Hub 未供电、固件未烧录 更换支持数据通讯的屏蔽 USB 线;确认模块已上电;重新烧录 4 路 MCU 固件
CAN 总线完全无响应 CAN_H/L 反接、终端电阻缺失、电机未上电 万用表确认 H/L 线序;测量总线电阻是否为 60Ω;确认电机 48V 供电正常
某一路 CAN 频繁断连 该路 ISO1050 或隔离电源损坏、线束接触不良 单独测量该路 CAN_H/L 对地阻抗;检查 XT30/GH1.25 连接器是否松动
报文延迟高或丢包 总线负载过高、波特率不匹配、线缆过长 确认单路挂载电机数不超过推荐值;核对驱动器与 MCU 侧波特率一致;缩短 CAN 线束至 1m 以内
烧录失败 SWD 针接触不良、供电不足、芯片锁死 检查 1.25mm 烧录针是否对准焊盘;确认 3V3 稳定;尝试在 BOOT0 拉高后复位再烧录

Sources: README_cn.md, README_cn.md

核心元器件速查表

为了便于维修、替换或二次开发,下表汇总了 USB2CAN 子系统的核心元器件及其在 V1.0 与 V2.0 中的对应关系。

功能角色 器件型号 制造商 V1.0 位号 V2.0 位号 备注
USB Hub SL2.1A CoreChips U60 U60 1 扩 4 USB 2.0
MCU STM32G431C8T6 ST 4 颗 U22/U29/U41/U49 四路独立 FDCAN
隔离 CAN 收发器 ISO1050DWR TI 4 颗 U28/U40/U48/U50 数字隔离 + CAN 驱动
隔离电源变压器 VPT85BB-01A VPSC 1~2 组 T3/T4 微型推挽变压器
隔离电源驱动 VPS8505 VPSC 1~2 颗 U26/U38 推挽变压器驱动
隔离侧 LDO TPS76350DBVR-TP TECH PUBLIC 4 颗 U27/U39 5V → 3.3V
Hub 侧 LDO TLV75733PDBVR TI U55 U55 VBUS → 3.3V
CAN ESD 防护 ESDA6V1L TECH PUBLIC 4 路 D7-D10 四路静电保护

Sources: BOM_Roboto_uUsb2Can_V1.0_1_2026-4-8.xlsx, BOM_三合一V2.1_RBE_PWR_HUB_V2.1_2026-04-09.xlsx

后续阅读指引

在掌握 USB 转 CAN 的协议转换原理、四路拓扑规划与电气规范后,建议根据你的开发阶段选择以下纵深路径继续学习: