----------------说明----------------
PX4固件fmu.c文件中存在sbus的代码,只是没开启,这里仅仅只是开启sbus在PX4的主控中的配置,不涉及sbus原理的分析。
也适用于在主控中如何接收sbus遥控器数据。
----------------环境----------------
硬件:基于PX4的v5的硬件的修改,移除掉IO从控芯片
软件:PX4中v1.8.2版本
----------------修改流程----------------
0.cmake编译文件中去掉IO控制器
//路径:Firmware/cmake/configs/nuttx_px4fmu-v5_default.cmake:6
#px4_nuttx_configure(HWCLASS m7 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common IO px4io-v2) 修改为
px4_nuttx_configure(HWCLASS m7 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common)
1.最底层板载的修改
根据自己硬件判断是否需要修改
//路径:Firmware/platforms/nuttx/nuttx-configs/px4fmu-v5/include/board.h:345
//#define GPIO_USART6_RX GPIO_USART6_RX_2 /* PG9 */
//#define GPIO_USART6_TX GPIO_USART6_TX_2 /* PG14 */
/*改为*/
#define GPIO_USART6_RX GPIO_USART6_RX_1 /* PC7 */
#define GPIO_USART6_TX GPIO_USART6_TX_1 /* PC6 */
注意在QT中,修改板载文件不要修改build中的文件,最好“make clean”后修改,因为查看定义一般会跳转到build中的文件中,修改build中文件,是没有意义的。
2.中间层驱动修改
在下面文件中添加下列宏定义,因为是串口6,所以是 “/dev/ttyS4”
//Firmware/src/drivers/boards/px4fmu-v5/board_config.h:631
#define RC_SERIAL_PORT "/dev/ttyS4"
3.应用层驱动的改变
//Firmware/src/drivers/px4fmu/fmu.cpp:1646
// 硬件中我们已经反向了,所以驱动程序这里就不需要反向了,还有注意查看波特率和2bit停止位
// rc_io_invert(true);
rc_io_invert(false);
4.其他
●注意 sbus和遥控器需要配对好,确保硬件没有问题。
●调试的时候可以示波器看串口6的接收引脚有没有数据,如果有再在PX4中看串口6的接收数据