SBUS 协议
簡介
全稱是Serial Bus。
S.BUS是一個串行通信協議,S.BUS是FUTABA提出的舵機控制總線,
S.bus使用RS232C串口的硬件協議作為自己的硬件運行基礎。 使用TTL電平,即3.3V。 使用負邏輯,即低電平為“1”,高電平為“0”。 波特率:100000(100k),注意:不兼容波特率115200。
協議
參考 mbed 官網:
該協議長25字節,每14ms(模擬模式)或每7ms(高速模式)發送一次。
一個字節=1 起始位 +8 數據位+ 1 奇偶檢驗位 +2 停止位 (8E2) (11bits)
波特率=100000 bit/s 最高位先發送。 邏輯顛倒(在硬件上添加非門)
| 1起始字節 | 22數據字節(16個通道,16*11=22*8) | 1標志字節 | 1停止字節 |
| byte[0] | byte[1] - byte[22] | byte[23] | byte[24] |
| 0xf0 | 通道1 - 通道 16 | Flags | 0x00 |
起始字節
起始字節 =1111 0000b (0xf0)
數據字節
數據字節一共22字節,包含16個通道的數據,
每個通道數據占 11bit (低位在前一字節、高位在后一字節)
| 通道0 | byte[1] >> 0 | byte[2] << 8 & 0x7ff | |
| 通道1 | byte[2] >> 3 | byte[3] << 5 & 0x7ff | |
| 通道2 | byte[3] >> 6 | byte[4] << 2 | byte[5] << 10 & 0x7ff | |
| 通道3 | byte[5] >> 1 | byte[6] << 7 & 0x7ff | |
| 通道4 | byte[6] >> 4 | byte[7] << 4 & 0x7ff | |
| 通道5 | byte[7] >> 7 | byte[8] << 1 | byte[9] << 9 & 0x7ff | |
| 通道6 | byte[9] >> 2 | byte[10] << 6 & 0x7ff | |
| 通道7 | byte[10] >>5 | byte[11] << 3 & 0x7ff | |
| 通道8 | byte[12] >>0 | byte[13] << 8 & 0x7ff | |
| 通道9 | byte[13] >> 3 | byte[14] << 5 & 0x7ff | |
| 通道10 | byte[14] >> 6 | byte[15] << 2 | byte[16] << 10 & 0x7ff | |
| 通道11 | byte[16] >> 1 | byte[17] << 7 & 0x7ff | |
| 通道12 | byte[17] >> 4 | byte[18] << 4 & 0x7ff | |
| 通道13 | byte[18] >> 7 | byte[19] << 1 | byte[20] << 9 & 0x7ff | |
| 通道14 | byte[20] >> 2 | byte[21] << 6 & 0x7ff | |
| 通道15 | byte[21] >>5 | byte[22] << 3 & 0x7ff | |
標志字節
Flags :
bit7=數字通道17(0x80)
bit6 =數字通道18(0x40)
bit5 =幀狀態標志(0x20) 判斷是否丟幀、用于控制接收機上的 LED 狀態
bit4 = 失控保護激活位(0x10)判斷飛機是否失控
bit3 = n/a
bit2 = n/a
bit1 = n/a
bit0 = n/a
停止字節
停止字節 = 0000 0000b = 0x00
參考
接收機協議的分類簡介
http://www.5imx.com/portal.php?mod=view&aid=1351&_dsign=50c64f76
SBUS、DBUS、WBUS及為什么不能軟件對數據取反
https://blog.csdn.net/qq_36229876/article/details/104060243
協議
https://blog.csdn.net/Brendon_Tan/article/details/89854751
SBUS解析與合成
https://blog.csdn.net/peach_orange/article/details/52958385
mbed 官網參考
https://os.mbed.com/users/Digixx/notebook/futaba-s-bus-controlled-by-mbed/
總結
- 上一篇: idea java 非法字符_解决IDE
- 下一篇: 攻防比赛_2020年度泉州市大学生网络安