Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

F4BY Flight Controller MCU upgrade #28582

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions libraries/AP_HAL_ChibiOS/hwdef/F4BY_F427/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# F4BY Flight Controller MCU upgrade


## Howto
replace old MCU STM32F407VGT (1MB Flash) with STM32F427VET rev3 or above (2MB Flash)

## Features

- Full Ardupilot features support (exclude LUA Script)


## Loading Firmware

Initial firmware load can be done with DFU by plugging in USB with the
boot solder pads connected. Then you should load the "with_bl.hex"
firmware, using your favourite DFU loading tool.

7 changes: 7 additions & 0 deletions libraries/AP_HAL_ChibiOS/hwdef/F4BY_F427/defaults.parm
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
BATT_AMP_OFFSET 2.316
BATT_AMP_PERVLT 100
BATT_CURR_PIN 12
BATT_MONITOR 4
BATT_VLT_OFFSET 0
BATT_VOLT_MULT 16.04981
BATT_VOLT_PIN 13
42 changes: 42 additions & 0 deletions libraries/AP_HAL_ChibiOS/hwdef/F4BY_F427/hwdef-bl.dat
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# hw definition file for processing by chibios_hwdef.py
# for f4by bootloader

MCU STM32F4xx STM32F427xx

APJ_BOARD_ID 21
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You'll need to allocate another board ID in Tools/AP_Bootloader/board_list.txt


OSCILLATOR_HZ 8000000

STM32_ST_USE_TIMER 5

# flash size
FLASH_SIZE_KB 2048

# order of UARTs (and USB)
SERIAL_ORDER OTG1 USART2

PE3 LED_BOOTLOADER OUTPUT
PE2 LED_ACTIVITY OUTPUT
define HAL_LED_ON 1

PA9 VBUS INPUT

PA11 OTG_FS_DM OTG1
PA12 OTG_FS_DP OTG1

PA13 JTMS-SWDIO SWD
PA14 JTCK-SWCLK SWD

PD5 USART2_TX USART2
PD6 USART2_RX USART2

FLASH_USE_MAX_KB 16
FLASH_RESERVE_START_KB 0

# location of application code
FLASH_BOOTLOADER_LOAD_KB 16

# Add CS pins to ensure they are high in bootloader
PA4 MPU_CS CS
PB12 FRAM_CS CS SPEED_VERYLOW
PE15 FLASH_CS CS
168 changes: 168 additions & 0 deletions libraries/AP_HAL_ChibiOS/hwdef/F4BY_F427/hwdef.dat
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
# hw definition file for processing by chibios_hwdef.py
# for F4BY v2.1.5 board description http://swift-flyer.com/?page_id=83

# MCU class and specific type
MCU STM32F4xx STM32F427xx

# board ID for firmware load
APJ_BOARD_ID 21

# USB setup
USB_VENDOR 0x27AC # Swift-Flyer
USB_PRODUCT 0x0201 # fmu usb driver
USB_STRING_MANUFACTURER "Swift-Flyer"
PA11 OTG_FS_DM OTG1
PA12 OTG_FS_DP OTG1
# this is the pin that senses USB being connected. It is an input pin
# setup as OPENDRAIN
PA9 VBUS INPUT OPENDRAIN


FLASH_SIZE_KB 2048
FLASH_RESERVE_START_KB 16
define HAL_STORAGE_SIZE 16384
env OPTIMIZE -O2

# crystal frequency
OSCILLATOR_HZ 8000000

# ChibiOS system timer
STM32_ST_USE_TIMER 5



PA13 JTMS-SWDIO SWD
PA14 JTCK-SWCLK SWD

# the normal usage of this ordering is:
# 1) SERIAL0: console (primary mavlink, usually USB)
# 2) SERIAL3: primary GPS
# 3) SERIAL1: telem1
# 4) SERIAL2: telem2
# 5) SERIAL4: GPS2
# 6) SERIAL5: extra UART (usually RTOS debug console)

# use UART for stdout, so no STDOUT_SERIAL
#STDOUT_SERIAL SD5
#STDOUT_BAUDRATE 57600



SERIAL_ORDER OTG1 USART2 USART1 USART3 UART4 UART5

# UART1 as board 2.1.5 for serial 3 gps
PB6 USART1_TX USART1
PB7 USART1_RX USART1

# USART2 serial2 telem2
PD5 USART2_TX USART2 NODMA
PD6 USART2_RX USART2

# USART3 serial3 telem1
PD8 USART3_TX USART3 NODMA
PD9 USART3_RX USART3

PC10 UART4_TX UART4 NODMA
PC11 UART4_RX UART4

# SHARE dma with I2C2_TX
PC12 UART5_TX UART5 NODMA
PD2 UART5_RX UART5 NODMA


#SPI1 for MPU
PA5 SPI1_SCK SPI1
PA6 SPI1_MISO SPI1
PA7 SPI1_MOSI SPI1
PA4 MPU_CS CS

# spi bus for dataflash AND SD
PB13 SPI2_SCK SPI2
PB14 SPI2_MISO SPI2
PB15 SPI2_MOSI SPI2


PB12 FRAM_CS CS SPEED_VERYLOW
PE15 FLASH_CS CS

SPIDEV mpu6000 SPI1 DEVID1 MPU_CS MODE3 1*MHZ 8*MHZ
SPIDEV ramtron SPI2 DEVID2 FRAM_CS MODE3 8*MHZ 8*MHZ
SPIDEV sdcard SPI2 DEVID3 FLASH_CS MODE0 400*KHZ 25*MHZ

# one IMU
IMU Invensense SPI:mpu6000 ROTATION_NONE

# one baro, check both addresses
BARO MS56XX I2C:0:0x76
BARO MS56XX I2C:0:0x77

# enable RAMTROM parameter storage
define HAL_WITH_RAMTRON 1
# enable FAT filesystem support
define HAL_OS_FATFS_IO 1

# this defines the default maximum clock on I2C devices.
define HAL_I2C_MAX_CLOCK 100000
I2C_ORDER I2C2 I2C1
PB8 I2C1_SCL I2C1
PB9 I2C1_SDA I2C1
PB10 I2C2_SCL I2C2
PB11 I2C2_SDA I2C2

# look for I2C compass
COMPASS HMC5843 I2C:0:0x1E false ROTATION_YAW_270
define HAL_PROBE_EXTERNAL_I2C_COMPASSES

# PWM out pins
PA0 TIM2_CH1 TIM2 PWM(1) GPIO(50)
PA1 TIM2_CH2 TIM2 PWM(2) GPIO(51)
PA2 TIM2_CH3 TIM2 PWM(3) GPIO(52)
PA3 TIM2_CH4 TIM2 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)

PD13 TIM4_CH2 TIM4 PWM(9) GPIO(58)
PD12 TIM4_CH1 TIM4 PWM(10) GPIO(59)
PD15 TIM4_CH4 TIM4 PWM(11) GPIO(60)
PD14 TIM4_CH3 TIM4 PWM(12) GPIO(61)

# also USART6_RX for serial RC
PC7 TIM8_CH2 TIM8 RCININT PULLDOWN LOW DMA_CH0
# PC6 TIM8_CH1 TIM8 RCININT PULLDOWN LOW DMA_CH0

# LED setup is similar to PixRacer
define HAL_HAVE_PIXRACER_LED
PE3 LED_RED OUTPUT GPIO(10)
PE2 LED_GREEN OUTPUT GPIO(11)
PE1 LED_BLUE OUTPUT GPIO(12)
PE0 LED_YELOW OUTPUT GPIO(13)

define HAL_GPIO_A_LED_PIN 10
define HAL_GPIO_B_LED_PIN 11
define HAL_GPIO_C_LED_PIN 12

define HAL_GPIO_LED_ON 0
define HAL_GPIO_LED_OFF 1

PC0 PRESSURE_SENS ADC1 SCALE(1)
PC1 RSSI_IN ADC1
PC2 BATT_CURRENT_SENS ADC1 SCALE(2)
PC3 BATT_VOLTAGE_SENS ADC1 SCALE(2)
PC4 VDD_5V_SENS ADC1 SCALE(2)
PC5 FMU_SERVORAIL_VCC_SENS ADC1 SCALE(2)


PE5 TIM9_CH1 TIM9 ALARM
PC14 EXTERN_GPIO1 OUTPUT GPIO(1)
PC13 EXTERN_GPIO2 OUTPUT GPIO(2)
PE4 EXTERN_GPIO3 OUTPUT GPIO(3)
PE6 EXTERN_GPIO4 OUTPUT GPIO(4)
PC9 EXTERN_GPIO5 OUTPUT GPIO(5)

# IRQ for MPU6000
PB0 EXTI_MPU6000 INPUT PULLUP
PB1 DRDY_HMC5883 INPUT PULLUP


Loading