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。烧录流程如下:
- 获取固件:访问 roboto_usb2can release 下载最新固件二进制文件。
- 连接烧录器:使用 ST-Link V2 或兼容工具,配合 1.25mm 间距的烧录针(pogo pin)接触 SWD 焊盘。
- 顺序烧录:依次对 4 个 SWD 口执行烧录,每次烧录对应一颗 STM32G431。注意保持供电稳定,避免烧录过程中断电。
- 状态验证:烧录完成后,模块正面的 LED 指示灯应呈现对应的通道状态闪烁。
Sources: README_cn.md, README.md
Linux 系统识别
ATOM01 的 USB2CAN 模块目前 仅支持 Linux 系统 识别与使用。固件在上位机侧枚举为 USB 设备,Orange Pi 5 Plus 等 Linux 主机通过标准的 usbserial 或厂商提供的驱动层与其交互。开发者无需手动安装内核模块,但需确保系统具备 USB 设备读写权限(通常将用户加入 dialout 或 plugdev 组即可)。在终端中执行 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 的协议转换原理、四路拓扑规划与电气规范后,建议根据你的开发阶段选择以下纵深路径继续学习:
- 若准备开始实际装机与线束制作,请阅读 电气走线与接线规范,获取线束长度、绑扎方式与应力释放的工程建议。
- 若需回溯 V2.0 集成主板的完整布局、降压电路与电磁兼容设计,请阅读 RBE_Board V2.0 集成主板架构。
- 若使用 V1.0 老硬件进行维护或教学拆解,请参考 V1.0 分立模块参考(Power 与 USB2CAN)。
- 若需了解整机电源分配逻辑与接口电气定义,请阅读 电源管理与接口定义。