Futaba SBUS協議解析

Futaba SBUS協議解析

S-bus爲futaba使用的串行通信協議。實際上爲串口通信。但是有幾點需要注意:
  1. 在大端小端上,網上資料都說的不是很清楚;
  2. 跟TTL串口信號相比,S-bus的邏輯電平是反的,需用如下電路對電平反相,再借到串口接收的Rx管腳就可以了;

1.png


一、協議說明:

串口配置爲波特率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一幀。

2.png


3.png


4.png


5.png


6.png


7.png


基本而言,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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章