【SBUS】一文看懂SBUS协议

今天 3479阅读 0评论

【STM32】STM32单片机总目录

1、简介

S.BUS是一个串行通信协议,S.BUS是FUTABA提出的舵机控制总线,

S.bus使用RS232C串口的硬件协议作为自己的硬件运行基础。 使用TTL电平,即3.3V。 使用负逻辑,即低电平为“1”,高电平为“0”。 波特率:100000(100k),注意:不兼容波特率115200。

2、硬件电路

硬件取反电路如下,实际上就是一个很简单的三极管电路。Sbus的信号从基极输入,从集电极输出。基极输入 ‘0’,集电极上拉输出 ‘1’;基极输入 ‘1’,三极管导通,输出被拉低为 ‘0’,实现了反向。

【SBUS】一文看懂SBUS协议 第1张

或者

【SBUS】一文看懂SBUS协议 第2张

3、协议格式

协议帧很简洁,一帧包括25字节数据

首部(1字节)+ 数据(22字节)+ 标志位(1字节)+ 结束符(1字节)
首部:起始字节 =0000 1111b (0x0f)
数据:22 字节的数据,分别代表16个通道的数据,也即是每个通道的值用了 11 位来表示,22x8/16 = 11
	这样,每个通道的取值范围为 0~2047,低位在前、高位在后
标志位:1字节,高四位从高到低依次表示:
	bit7:CH17数字通道
	bit6:CH16数字通道
	bit5:帧丢失(Frame lost)
	bit4:安全保护(Failsafe):失控保护激活位(0x10)判断飞机是否失控
	bit3~bit0:低四位不用
结束符:0x00

4、协议解析

4.1 解析方法

将数据解析为通道的方法

【SBUS】一文看懂SBUS协议 第3张

4.2 示例一

void Sbus_Data_Count(uint8_t *buf)
{
	CH[ 0] = ((int16_t)buf[ 2] >> 0 | ((int16_t)buf[ 3] > 3 | ((int16_t)buf[ 4] > 6 | ((int16_t)buf[ 5]  1 | ((int16_t)buf[ 7] > 4 | ((int16_t)buf[ 8] > 7 | ((int16_t)buf[ 9]  2 | ((int16_t)buf[11] > 5 | ((int16_t)buf[12]  6 | ((int16_t)buf[16]  1 | ((int16_t)buf[18] > 4 | ((int16_t)buf[19] > 7 | ((int16_t)buf[20]  2 | ((int16_t)buf[22] > 5 | ((int16_t)buf[23] 

免责声明
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明。
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所
提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何
损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在
转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并白负版权等法律责任。

手机扫描二维码访问

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,3479人围观)

还没有评论,来说两句吧...

目录[+]