SBUS协议

SBUS

1.串口配置:

100k波特率,
8位数据位(在stm32中要选择9位),
偶校验(EVEN),
2位停止位,
无控流,25个字节,

2.协议格式:(8字节)

[startbyte] [data1][data2]…[data22] [flags] [endbyte]
startbyte=0x0f;
endbyte=0x00;
flags标志位我没有用到;
data1…data22:对应16个通道(ch1-ch16),每个通道11bit(228=1611=176);
数据范围在0-2047之间,基本上是1102~1927,中值为1500;ch1的11位=data2的低3位+data1的8位;
例如:data1=00110110,data2=11001111;
这时ch1=111 00110110=1846;通道1 的值就为1846;
ch2=data3的低6位+data2的高5位;
ch3=data5的低1位+data4的8位+data3的高2位;
ch4=4 7;
ch5=7 4;
ch6=2 8 1;
ch7=5 6;
ch8=8 3;
ch9=6 5;
ch10=1 8 2;
ch11=4 7;
ch12=7 4;
ch13=2 8 1;
ch14=5 6;
ch15=8 3;
ch16=6 5;

   //12通道遥控器代码
	rc->ch1 = (buff[2]<<8 | buff[1]    )                              & 0x07FF;
   rc->ch1 -= 1002;
	rc->ch2 = (buff[2]>>3 | buff[3]<<5 )                           & 0x07FF;
	rc->ch2 -= 1002;
	rc->ch3 = (buff[3]>>6 | buff[4]<<2 | buff[5]<<10)          & 0x07FF;
	rc->ch3 -= 1002;
	rc->ch4 = (buff[5]>>1 | buff[6]<<7)                             & 0x07FF;		
	rc->ch4 -= 1002;
	
	rc->switch_E = (buff[6]>>4 | buff[7]<<4 )                      & 0x07FF;
	rc->switch_E = (rc->switch_E-20 ) /100;
	rc->switch_G = (buff[9]<<9 | buff[8]<<1 | buff[8]>>7)       & 0x07FF ;
	rc->switch_G = (rc->switch_G-20 ) /100;

	rc->switch_H = (buff[9]>>2 | buff[10]<<6)                      & 0x07FF;
	rc->switch_H=(rc->switch_H-20)/100;
	rc->switch_F =(buff[11]<<3 | buff[10]>>7)                       & 0x07FF ;
	rc->switch_F=(rc->switch_F-20)/100;
	
	rc->Key.A = ( buff[12] <<5  | buff[11] >> 3 )                    & 0x07FF ;	
	rc->Key.A /=1600;
	rc->Key.B = ( buff[14] <<10 | buff[13] << 2 | buff[12] >>6 ) & 0x07FF ;
	rc->Key.B /=1600;
	rc->Key.C = ( buff[15] <<7  | buff[14] >> 1 )                     & 0x07FF ;
	rc->Key.C /=1600;
	rc->Key.D = ( buff[16] <<4  | buff[14] >> 4 )                     & 0x07FF ;
	rc->Key.D /=1600;
3.硬件电路;

在这里插入图片描述

4.控制频率(两种模式)
  • 高速模式:每隔7ms一帧数据,因为两帧的间隔只有超过3ms,才会被接受;而根据波特率计算一下,发送25字节需要的时间+3~4ms=7ms
  • 普通模式:每隔14ms一帧数据;
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值