【基于STM32F765VI自定义ardupilot飞控板】

硬件部分

确定板子传感器及外设接口

  1. IMU: BMI088 ICM20689
  2. MAG: RM3100
  3. BARO: MS5611
  4. FARM: FM25V01-G
  5. CAN: 2路
  6. USB: 1路
  7. SWD:1路
  8. UART:7路
  9. I2C: 2路
  10. 安全开关含灯:1路
  11. 指示灯:2个
  12. SD卡: 1路

根据板子功能定义引脚

参考STM32F765xx用户手册的GPIO复用部分结合STM32CubxMX软件对引脚进行预配置。
STM32CubeMX可对引脚冲突进行报错提示,较好的帮助我们完成引脚定义。如下图:完成了我们所需引脚定义且不存在冲突。
在这里插入图片描述

软件部分

HAL层硬件定义

定义硬件文件在工程目录下的libraries/AP_HAL_ChibiOS/hwdef路径,在该路径下添加一个文件夹,命名为 myfly , 此名称是自行取的飞控板名称,并在myfly目录下新建 hwdef.dat 和 hwdef_bl.dat 两个文件
以下是根据STM32CubeMX 定义好了引脚之后在软件上配置的代码
hwdef_bl.dat 文件

# hw definition file for processing by chibios_pins.py
# for myfly bootloader

# MCU class and specific type
MCU STM32F7xx STM32F765xx

# board ID for firmware load
APJ_BOARD_ID 166

# crystal frequency, setup to use external oscillator
OSCILLATOR_HZ 16000000

# flash size
FLASH_SIZE_KB 2048

# bootloader starts at zero offset
FLASH_RESERVE_START_KB 0

# the location where the bootloader will put the firmware
FLASH_BOOTLOADER_LOAD_KB 32


# order of UARTs (and USB). Allow bootloading on USB and telem1
SERIAL_ORDER OTG1 USART2 UART7

# PA10 IO-debug-console
PA11 OTG_FS_DM OTG1
PA12 OTG_FS_DP OTG1

# UART2 (telem1)
PD5 USART2_TX USART2
PD6 USART2_RX USART2

# UART7 (debug)
PA8 UART7_RX UART7
PA15 UART7_TX UART7

PA13 JTMS-SWDIO SWD
PA14 JTCK-SWCLK SWD

PD10 LED_BOOTLOADER OUTPUT LOW
define HAL_LED_ON 0

define HAL_USE_EMPTY_STORAGE 1
define HAL_STORAGE_SIZE 16384


# Add CS pins to ensure they are high in bootloader
PB2 BMI088_ACC_CS CS
PC5 BMI088_GYRO_CS CS
PD4 ICM20689_CS CS
PB15 FRAM_CS CS CS
PD7 RM3100_CS CS
PC13 BARO_CS CS

hwdef.dat 文件的定义如下:

# hw definition file for processing by chibios_pins.py
# for myfly board

# MCU class and specific type
MCU STM32F7xx STM32F765xx

# board ID for firmware load
APJ_BOARD_ID 166

# crystal frequency, setup to use external oscillator
OSCILLATOR_HZ 16000000

FLASH_SIZE_KB 2048

# leave 2 sectors free
FLASH_RESERVE_START_KB 32


STM32_ST_USE_TIMER 12
define CH_CFG_ST_RESOLUTION 16

# two I2C bus
I2C_ORDER I2C2 I2C1

# order of UARTs (and USB)
SERIAL_ORDER OTG1 USART2 USART3 USART1 UART4 USART6 UART7 UART8

# tonealarm support
PB9 TIM11_CH1 TIM11 GPIO(32) ALARM

# USB debug-console
PA11 OTG_FS_DM OTG1
PA12 OTG_FS_DP OTG1
PA9 nVBUS INPUT PULLUP

#SWD
PA13 JTMS-SWDIO SWD
PA14 JTCK-SWCLK SWD

# SPI1 for IMU1 (BMI088)
PA5 SPI1_SCK SPI1
PA6 SPI1_MISO SPI1
PA7 SPI1_MOSI SPI1
PB2 BMI088_ACC_CS CS
PC5 BMI088_GYRO_CS CS

# SPI2 for IMU2 (ICM20689) 
PD3 SPI2_SCK SPI2
PC2 SPI2_MISO SPI2
PC1 SPI2_MOSI SPI2
PD4 ICM20689_CS CS

# SPI3 for FRAM (FM25V01)
PB3 SPI3_SCK SPI3
PB4 SPI3_MISO SPI3
PB5 SPI3_MOSI SPI3
PB15 FRAM_CS CS CS

# SPI4 for BARO (ms5611) and MAG (RM3100)
PE2 SPI4_SCK SPI4
PE5 SPI4_MISO SPI4
PE6 SPI4_MOSI SPI4
PD7 RM3100_CS CS
PC13 BARO_CS CS

# I2C1
PB8 I2C1_SCL I2C1
PB7 I2C1_SDA I2C1

# I2C2
PB10 I2C2_SCL I2C2
PB11 I2C2_SDA I2C2

PA4 BATT_VOLTAGE_SENS ADC1 SCALE(1) #pin4
PB0 BATT_CURRENT_SENS ADC1 SCALE(1) #pin8

PB1 BATT_VOLTAGE_SENS2 ADC1 SCALE(1) # analog pin9
PC3 BATT_CURRENT_SENS2 ADC1 SCALE(1) # analog pin13

PC0 PRESSURE_SENS ADC1 SCALE(2)     #pin10
define HAL_DEFAULT_AIRSPEED_PIN 10

# define default battery setup
define HAL_BATT_VOLT_PIN 4
define HAL_BATT_CURR_PIN 8
define HAL_BATT_VOLT_SCALE 34.6
define HAL_BATT_CURR_SCALE 21

# analog RSSI
PC4 RSSI_ADC ADC1       #pin14
define BOARD_RSSI_ANA_PIN 11

PD10 LED0 OUTPUT LOW GPIO(90) # blue
PD11 LED1 OUTPUT LOW GPIO(91) # green
define HAL_GPIO_A_LED_PIN 91
define HAL_GPIO_B_LED_PIN 90
define HAL_GPIO_LED_OFF 1

# USART1 (GPS1)
PA10 USART1_RX USART1
PB14  USART1_TX USART1

# USART2 (telem1)
PD5 USART2_TX USART2 NODMA
PD6 USART2_RX USART2 NODMA

# USART3 (telem2)
PD9 USART3_RX USART3 NODMA
PD8 USART3_TX USART3 NODMA

# UART4 (GPS2)
PA0 UART4_TX UART4 NODMA
PA1 UART4_RX UART4 NODMA

# UART5 (RX only, for ESC telem), disabled for now until we add uartH support
# PB8 UART5_RX UART5 NODMA

# USART6 (RC input), SERIAL7
PC7 TIM3_CH2 TIM3 RCININT FLOAT LOW
PC6 USART6_TX USART6 NODMA

# as an alternative config setup the RX6 pin as a uart. This allows
# for bi-directional UART based receiver protocols such as FPort
# without any extra hardware
PC7 USART6_RX USART6 NODMA ALT(1)

# UART7 (debug)
PA8 UART7_RX UART7
PA15 UART7_TX UART7

# UART8 (spare)
PE0 UART8_RX UART8 NODMA
PE1 UART8_TX UART8 NODMA

# CAN1 bus 
PD1 CAN1_TX CAN1
PD0 CAN1_RX CAN1

# CAN2 bus 
PB6 CAN2_TX CAN2
PB12 CAN2_RX CAN2

# Motors
PD12 TIM4_CH1 TIM4 PWM(1) GPIO(50)
PD13 TIM4_CH2 TIM4 PWM(2) GPIO(51)
PD14 TIM4_CH3 TIM4 PWM(3) GPIO(52)
PD15 TIM4_CH4 TIM4 PWM(4) GPIO(53)

PE9  TIM1_CH1 TIM1 PWM(5) GPIO(54)
PE11 TIM1_CH2 TIM1 PWM(6) GPIO(55)
PE13 TIM1_CH3 TIM1 PWM(7) GPIO(56)
PE14 TIM1_CH4 TIM1 PWM(8) GPIO(57)

PA2 TIM9_CH1 TIM9 PWM(9) GPIO(58) NODMA
PA3 TIM9_CH2 TIM9 PWM(10) GPIO(59) NODMA

# microSD support
PC8 SDMMC_D0 SDMMC1
PC9 SDMMC_D1 SDMMC1
PC10 SDMMC_D2 SDMMC1
PC11 SDMMC_D3 SDMMC1
PC12 SDMMC_CK SDMMC1
PD2 SDMMC_CMD SDMMC1

# setup safety switch
PE3 LED_SAFETY OUTPUT
PE4 SAFETY_IN INPUT PULLDOWN

DMA_PRIORITY SDMMC* UART8* ADC* SPI* TIM*

define HAL_STORAGE_SIZE 16384
define STORAGE_FLASH_PAGE 1

# spi devices
SPIDEV ms5611         SPI4 DEVID1  BARO_CS          MODE3 20*MHZ 20*MHZ
SPIDEV rm3100         SPI4 DEVID2  RM3100_CS        MODE3 2*MHZ  8*MHZ
SPIDEV icm20689       SPI2 DEVID1  ICM20689_CS      MODE3  2*MHZ  8*MHZ
SPIDEV bmi088_g       SPI1 DEVID1  BMI088_GYRO_CS   MODE3 10*MHZ 10*MHZ
SPIDEV bmi088_a       SPI1 DEVID2  BMI088_ACC_CS    MODE3 10*MHZ 10*MHZ
SPIDEV ramtron        SPI3 DEVID1  FRAM_CS          MODE3  8*MHZ  8*MHZ 

# no built-in compass, but probe the i2c bus for all possible
# external compass types
define ALLOW_ARM_NO_COMPASS
define HAL_COMPASS_DEFAULT HAL_COMPASS_NONE
define HAL_COMPASS_AUTO_ROT_DEFAULT 2

# allow to have have a dedicated safety switch pin
define HAL_HAVE_SAFETY_SWITCH 1

# up to 2 IMUs
IMU Invensense SPI:icm20689 ROTATION_NONE
# 3rd could be BMMI055 or BMI088
IMU BMI088 SPI:bmi088_a SPI:bmi088_g ROTATION_ROLL_180_YAW_90

define HAL_DEFAULT_INS_FAST_SAMPLE 1
define INS_MAX_INSTANCES 2

# one BARO, multiple possible choices for different
BARO MS56XX SPI:ms5611
BARO MS56XX I2C:0:0x77

define HAL_WITH_RAMTRON 1
define HAL_OS_FATFS_IO 1
define HAL_BOARD_LOG_DIRECTORY "/Myfly/LOGS"
define HAL_BOARD_TERRAIN_DIRECTORY "/Myfly/TERRAIN"

define BOARD_PWM_COUNT_DEFAULT 10

编译测试

在工程目录下采用指令下面指令配置目标板子且配置成bootloader目标

./waf configure --board myfly --bootloader

在这里插入图片描述
然后使用下面指令编译bootloader

./waf bootloader

在这里插入图片描述
生成的文件在工程目录下的build/myfly/bin文件夹内
在这里插入图片描述
编译APP固件,配置板子目标

./waf configure --board myfly

编译固件

./waf --targets bin/arducopter

在这里插入图片描述
到这里就完成了飞控整体配置,待烧录验证功能是否完整。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值