(测试通过)飞控通过SBUS接收FUTABA遥控信号

最近做了一个开发板接收sbus传出的遥控信号测试,将流程记录在下:

1)硬件取反,淘宝上买电平取反器,大概3块多一个;

2)配置串口、管脚、中断、DMA,中断可配置传输完成中断和串口空闲中断,目前使用串口空闲中断就够了,注意:如果硬件不取反,串口无法进入空闲中断;

3)具体的理解可参考这篇博文:http://www.eefocus.com/taogashi/blog/14-05/303577_f140d.html

4)具体实现可以参考以下程序的futaba_sbus.c和futaba_sbus.h文件:https://github.com/MuJanFun/Hawk_A/tree/master/STM32F103%E5%BA%95%E5%B1%82/BSP

5)硬件是stm32f103,使用了pb11作为sbus接口,遥控器是FUTABA T18SZ,接收机R7008SB;

最终接收到的数据格式为末尾0x04 ,0x14,0x24,0x34循环,与sbus协议有出入,与博文:http://blog.csdn.net/wsptr/article/details/53795458中提到的数据格式一致。

注意:因为sbus用的是11位传输一个通道,所以传输值得范围在0~2047(2048位)之间,所以还需要转换到1000~2000之间。转化方法可以参考该如下:

https://github.com/ArduPilot/PX4Firmware/pull/4/commits/06e67c8e8bb4352559f0a067a6a45a01f658f33b#diff-9ee4d751dec6ae5298de46f46f334d2c

使用滚转(1通道)、俯仰(2通道)、油门(3通道)、偏航(4通道),对上述过程测试,符合1000~2000的范围要求。

注意问题:1)收到的上述值还需要经过处理,得到期望的俯仰、偏航、滚装角或对应的速率才能在飞控程序中使用。

                 2)飞控为了保障安全,一般要求解锁,使用遥控信号解锁过程没有解决,其他通道用来选择飞行模式也没有解决。

——Edited By RobotBrain.M

你可能感兴趣的:(通信)