查看: 861|回复: 0

ArduPilot-3-支持新的控制器硬件

[复制链接]

302

主题

351

帖子

956

积分

高级飞友

Rank: 4

积分
956
飞币
603
注册时间
2017-7-14
发表于 2023-7-25 14:09:45 | 显示全部楼层 |阅读模式
在上一篇文章中,我们分享了PX4-20-支持新的控制器硬件,这一篇我们讲一下ardupilot中如何支持一款新的硬件。

ardupilot同样支持非常丰富的硬件,种类上包括Cotex-M内核的单片机、Linux以及ESP32,这里我们主要分享使用Cotex-M内核单片机的飞控硬件的支持。

ardupilot采用硬件抽象层(HAL)的方式,支持各种类型的硬件,其框架如下图所示:

由上图可以发现,ardupilot应用层通过统一的HAL接口访问不同的OS以及对应的硬件。

AP_HAL提供了各种外设接口的抽象类(串口、IIC、SPI、CAN、PWM、SD等)、任务调度抽象类(Scheduler)。

对于Cotex-M内核单片机的飞控硬件,ardupilot使用的是AP_HAL_ChibiOS硬件抽象层,使用ChibiOS RTOS。

与PX4相比,ardupilot增加新的硬件还会更加方便一些,基本只需要编辑一个文件,在libraries/AP_HAL_ChibiOS/hwdef目录下可以看到ardupilot目前支持的各种硬件,如
.
├── Pixhawk1
├── Pixhawk1-1M
├── Pixhawk1-1M-bdshot
├── Pixhawk4
├── Pixhawk4-bdshot
├── Pixhawk5X
├── Pixhawk6C
├── Pixhawk6C-bdshot
├── Pixhawk6X

在具体的硬件配置文件夹中,主要是hwdef.dat文件,在这里定义飞控硬件的所有外设接口定义。

hwdef.dat在编译时由libraries/AP_HAL_ChibiOS/hwdef/scripts/chibios_hwdef.py脚本,生成build/xxx/hwdef.h头文件,该头文件定义了源码中需要使用的所有宏定义,实现对源码编译规则和运行规则的控制。

由于ardupilot chibios_hwdef.py脚本非常好的抽象设计,用户编辑hwdef.dat定制飞控硬件变得非常简单。
# MCU class and specific type
MCU STM32H7xx STM32H743xx
# flash size
FLASH_SIZE_KB 2048
# order of UARTs (and USB)
SERIAL_ORDER OTG1 UART7 UART5 USART1 UART8 USART2 USART3 OTG2
# USB
PA11 OTG_FS_DM OTG1
PA12 OTG_FS_DP OTG1
PA9 VBUS INPUT OPENDRAIN
# telem1
PE8  UART7_TX UART7
PE7  UART7_RX UART7
PE9  UART7_RTS UART7
PE10 UART7_CTS UART7
# barometers
BARO MS56XX I2C:0:0x76
BARO MS56XX I2C:0:0x77
BARO BMP388 I2C:0:0x77
# SPI devices
SPIDEV bmi055_g SPI1 DEVID1  BMI055_G_CS  MODE3 10*MHZ 10*MHZ
SPIDEV bmi055_a SPI1 DEVID2  BMI055_A_CS  MODE3 10*MHZ 10*MHZ
SPIDEV icm42688 SPI1 DEVID3  ICM42688_CS  MODE3  2*MHZ  8*MHZ
SPIDEV ramtron  SPI2 DEVID1  FRAM_CS      MODE3  8*MHZ  8*MHZ

我们通过几个语句可以发现,hwdef.dat语法非常简单,IO的配置只需要直接指定外设使用的IO,传感器的配置只需要指定使用的IIC或者SPI和简单的配置即可。

hwdef.dat更多的语法这里不一一展开,感兴趣的同学可以自己动手实现一个飞控硬件,亲手配置一下。

下图是笔者设计的一款飞控硬件,通过上述修改即可使ardupilot支持该款硬件。

往期分享:

PX4-20-支持新的控制器硬件

ArduPilot-2-系统架构

AcmeGCS-21-集群多窗口显示

这里会不定期更新一些我整理的无人机相关知识,如果对您有帮助,欢迎关注转发分享。
您需要登录后才可以回帖 登录 | 加入联盟

本版积分规则

快速回复 返回顶部 返回列表