STM32 解析futaba S-bus协议
S-bus為futaba使用的串行通信協(xié)議。實(shí)際上為串口通信。但是有幾點(diǎn)需要注意:
- 在大端小端上,網(wǎng)上資料都說(shuō)的不是很清楚;
- 跟TTL串口信號(hào)相比,S-bus的邏輯電平是反的,需用如下電路對(duì)電平反相,再借到串口接收的Rx管腳就可以了
?
一、協(xié)議說(shuō)明:串口配置為波特率100kbps,8位數(shù)據(jù),偶校驗(yàn)(even),2位停止位,無(wú)流控。
鏈接https://mbed.org/users/Digixx/notebook/futaba-s-bus-controlled-by-mbed/說(shuō)明了S-bus幀格式。
每幀25個(gè)字節(jié),按照如下順序排列: [startbyte] [data1] [data2] .... [data22] [flags][endbyte]
起始字節(jié)startbyte = 11110000b (0xF0),但實(shí)際上用STM32(據(jù)說(shuō)ARM核)收到的是0x0F。
中間22個(gè)字節(jié)就是16個(gè)通道的數(shù)據(jù)了,為什么是16個(gè)通道?因?yàn)?2x8=11x16,每個(gè)通道用11bit表示,范圍是0-2047。
?
flags的結(jié)構(gòu)如下所示:
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為0x00。
endbyte為0x04 0x14 0x24 0x34 循環(huán)。
頭 ?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
?
轉(zhuǎn)載于:https://www.cnblogs.com/qiyuexin/p/7073388.html
總結(jié)
以上是生活随笔為你收集整理的STM32 解析futaba S-bus协议的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: MAC OS上JAVA1.6 升级1.7
- 下一篇: centos7如何安装cloud-ini