Futaba SBUS协议解析

Futaba SBUS协议解析

S-bus为futaba使用的串行通信协议。实际上为串口通信。但是有几点需要注意:
  1. 在大端小端上,网上资料都说的不是很清楚;
  2. 跟TTL串口信号相比,S-bus的逻辑电平是反的,需用如下电路对电平反相,再借到串口接收的Rx管脚就可以了;

Futaba SBUS协议解析_第1张图片


一、协议说明:

串口配置为波特率100kbps( 100000 ),8位数据,偶校验(even),2位停止位,无流控。
链接 https://mbed.org/users/Digixx/ ... mbed/说明了S-bus帧格式。
每帧25个字节,按照如下顺序排列:

[startbyte] [data1] [data2] .... [data22] [flags][endbyte]

起始字节startbyte = 11110000b (0xF0),但实际上用STM32(据说ARM核)收到的是0x0F。中间22个字节就是16个通道的数据了,为什么是16个通道?因为22x8=11x16,每个通道用11bit表示,范围是0-2047。

两帧之间的时间间隔4ms(高速模式),约7ms一帧。

Futaba SBUS协议解析_第2张图片


Futaba SBUS协议解析_第3张图片


4.png


Futaba SBUS协议解析_第4张图片


Futaba SBUS协议解析_第5张图片


Futaba SBUS协议解析_第6张图片


基本而言,data1为ch1的低8位,data2的低3位为ch1的高三位,data2的高5位是ch2的低5位,data3的低6位是ch2的高6位,以此类推,如下图所示:

flags的结构如下所示:

flags:

bit7 = ch17 = digital channel (0x80)
bit6 = ch18 = digital channel (0x40)
bit5 = Frame lost, equivalent red LED on receiver (0x20)
bit4 = failsafe activated (0x10)
bit3 = n/a
bit2 = n/a
bit1 = n/a
bit0 = n/a

endbyte为0x04 0x14 0x24 0x34 循环。

头 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 fg 尾
0F 00 34 1F A8 09 08 6A 50 03 10 80 00 04 20 00 01 08 07 38 00 10 80 00 04
0F 00 34 1F A8 09 08 6A 50 03 10 80 00 04 20 00 01 08 07 38 00 10 80 00 14
0F 00 34 1F A8 09 08 6A 50 03 10 80 00 04 20 00 01 08 07 38 00 10 80 00 24
0F 00 34 1F A8 09 08 6A 50 03 10 80 00 04 20 00 01 08 07 38 00 10 80 00 34
0F 00 34 1F A8 09 08 6A 50 03 10 80 00 04 20 00 01 08 07 38 00 10 80 00 04
0F 00 34 1F A8 09 08 6A 50 03 10 80 00 04 20 00 01 08 07 38 00 10 80 00 14
0F 00 34 1F A8 09 08 6A 50 03 10 80 00 04 20 00 01 08 07 38 00 10 80 00 24
0F 00 34 1F A8 09 08 6A 50 03 10 80 00 04 20 00 01 08 07 38 00 10 80 00 34
0F 00 34 1F A8 09 08 6A 50 03 10 80 00 04 20 00 01 08 07 38 00 10 80 00 04
0F 00 34 1F A8 09 08 6A 50 03 10 80 00 04 20 00 01 08 07 38 00 10 80 00 14
0F 00 34 1F A8 09 08 6A 50 03 10 80 00 04 20 00 01 08 07 38 00 10 80 00 24

你可能感兴趣的:(飞控相关)