[具身智能-792]:SBUS 总线(Serial‑Bus)完整详解
2026/8/5 15:31:04 网站建设 项目流程

SBUS 总线(Serial‑Bus)完整详解

SBUS 是 Futaba 推出的航模 / 机器人遥控数字串行总线,接收机通过1 根信号线 + GND传输全部遥控器通道数据,广泛用于无人机、移动机器人、云台舵机、ROS 机器人底层 STM32 单片机接收遥控手柄信号。 对比传统 PWM:PWM 每一路通道需要一根线;SBUS 单根线输出 16 路比例通道,布线简单、抗干扰更强。

一、物理层 & 串口关键参数(极易踩坑)

SBUS 底层基于 UART(单片机一侧使用Uart RX通信, 传输一个个独立的字符)但不是普通TTL‑UART,核心坑点:负逻辑(信号反相)

表格

项目参数
波特率100000 bps(100k),不是 115200
帧格式8E2:8 数据位,偶校验 Even,2 停止位
电平

TTL 3.3V/5V,反向逻辑:物理低电平 = 逻辑 1;物理高电平 = 逻辑 0。这是关键!!!

帧周期普通模式 10ms (100Hz);高速模式 4ms (250Hz)

⚠️重点:信号反向,STM32 普通 UART 直接读取 SBUS 信号会全部乱码。 三种解决反相的方案:

  1. 硬件反相电路三极管 NPN、74HC04 反相芯片,把信号翻转成正常 TTL 给 MCU 的 RX 引脚。
  2. STM32 串口硬件反相寄存器(部分芯片支持 USART_CR1 bit20 INVERT),软件内部自动翻转电平,不需要外部元件。
  3. 绝对不推荐软件取反:时序紧张,极易丢帧。

很多成品飞控已经板载反相电路,接收机 SBUS 输出可以直连;

自己做 STM32 底板必须处理反相。

二、帧结构:固定 25 字节一帧

plaintext

Byte0 | Byte1‑22 | Byte23(标志位) | Byte24 0x0F(帧头) | 16通道数据 | Flag | 0x00(帧尾)
  1. Byte0 = 0x0F,固定帧头,用于帧同步。
  2. Byte1~Byte22(共 22 字节):存放 CH1‑CH16,每个通道11bit。
    • 16×11bit = 176bit = 22 字节;bit 打包存储,不是每个通道占一个字节。
    • 通道数值范围:0 ~ 2047;遥控器摇杆常用有效区间:350 ~ 1700,中间点约 1024GitHub。
  3. Byte23 标志字节 Flag
    • bit0:CH17(数字开关)
    • bit1:CH18(数字开关)
    • bit2:Frame Lost,1 = 丢帧(遥控信号变差)
    • bit3:Failsafe,1 = 接收机进入失控保护模式(非常重要,机器人底层要检测这个位,触发急停)CSDN博...
  4. Byte24 = 0x00,帧尾。

注意:SBUS 只有每字节 UART 硬件偶校验,没有全局 CRC 校验,没有帧校验和,依靠帧头 0x0F 做同步,所以硬件信号质量很关键。

三、SBUS vs PWM vs PPM 对比

表格

项目PWM 单路PPMSBUS
布线每通道一根信号线单根线单根信号线 + GND
通道上限由接收机输出口数量决定最多 8‑10 通道16 路比例 + 2 路数字开关
信号类型模拟脉宽信号模拟脉冲数字串行 UART(反相)
单片机资源多路定时器输入捕获定时器捕获1 路 UART 串口
抗干扰中等优秀
刷新周期20ms~20ms10ms /4ms 高速模式

机器人开发选型:底层 STM32 读取遥控器,优先使用 SBUS,节省 IO 口。

解析得到 16 个通道值,可以转发给 ROS2(例如映射为/joy手柄话题)。

四、STM32 工程开发要点(实操)

  1. 串口配置:波特率严格 100000,模式 8E2;时钟源必须 HSE 外部晶振,HSI 内部 RC 时钟分频误差大,会导致偶校验出错、丢帧。
  2. 接收方式:空闲中断 + DMA 接收 25 字节,检测帧头0x0F做帧同步。
  3. 解析:对 Byte1‑Byte22 做位解包,取出 16 个 11bit 通道。
  4. 安全逻辑必做:检测 Flag 字节 Failsafe 位,如果置 1,机器人立刻急停,禁止执行运动输出。
  5. 电平注意:接收机输出如果是 5V SBUS,不能直接接到只支持 3.3V 的 STM32 RX,需要分压 / 反相电路做电平转换,防止烧坏 MCU 引脚CSDN博...。

五、典型故障现象

  1. 串口收到大量乱码,找不到 0x0F 帧头
    • 排查:反相电路有没有接、极性是否正确;波特率 100k,偶校验 2 停止位
  2. 偶尔能解析一帧,大部分帧错位
    • 排查:系统时钟精度不够;信号线过长,缺少滤波。
  3. 遥控器断电,机器人不会停机
    • 排查:代码没有解析 Byte23 的 Failsafe 失控保护标志位。

六、机器人系统数据流(STM32 底层 → ROS2 上层)

plaintext

遥控接收机 → SBUS(反相UART) → 反相电路 → STM32的UART RX STM32解析得到CH1‑CH16通道数值 ↓ ①底层:直接控制电机舵机; ②通过串口 / CAN把通道数据向上发给RDK/X5等机器人主控 ↓ ROS2层封装为joy消息,发布`/joy`话题,上层控制算法订阅,实现手柄遥控机器人。

补充拓展:i‑BUS / CRSF

  • SBUS:Futaba 标准;
  • i‑BUS:乐迪等接收机,正相 UART,不需要反相电路
  • CRSF(ELRS):新一代遥控协议,带 CRC 校验,更高刷新率,双向回传接收机电压信号。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询