【SBUS】一文看懂SBUS协议
【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’,实现了反向。
或者
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 解析方法
将数据解析为通道的方法
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]
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。
还没有评论,来说两句吧...