简介
全称是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)
扫描二维码关注公众号,回复:
13537207 查看本文章
|
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/