From cbda5be5f31a6c9e6c2f93e7284e83b047604302 Mon Sep 17 00:00:00 2001 From: qqqlab <46283638+qqqlab@users.noreply.github.com> Date: Fri, 31 Oct 2025 09:41:37 +0100 Subject: [PATCH 1/6] Add configuration file for MADFLIGHT_FC3 --- configs/MADFLIGHT_FC3/config.h | 128 +++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 configs/MADFLIGHT_FC3/config.h diff --git a/configs/MADFLIGHT_FC3/config.h b/configs/MADFLIGHT_FC3/config.h new file mode 100644 index 000000000..4cdccfcf7 --- /dev/null +++ b/configs/MADFLIGHT_FC3/config.h @@ -0,0 +1,128 @@ +/* + * This file is part of Betaflight. + * + * Betaflight is free software. You can redistribute this software + * and/or modify this software under the terms of the GNU General + * Public License as published by the Free Software Foundation, + * either version 3 of the License, or (at your option) any later + * version. + * + * Betaflight is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this software. + * + * If not, see . + */ + +#pragma once + +#define FC_TARGET_MCU RP2350B +#define BOARD_NAME MADFLIGHT_FC3 +#define MANUFACTURER_ID MADF + +// For debugging (trace) via UART, make with env var PICO_TRACE set (see RP2350.mk). +// Example instance and pins below. +//#define PICO_TRACE_UART_INSTANCE 0 +//#define PICO_TRACE_TX_GPIO 24 +//#define PICO_TRACE_RX_GPIO 25 + +//------------------ +// Internal Pins +//------------------ + +// Bus for internal I2C sensors +// NOTE: Board has BMP580 barometer, MMC5603 compass and INA226 power sensor, but not supported yet by BF +#define I2C0_SCL_PIN PA33 +#define I2C0_SDA_PIN PA32 + +// LED +#define LED0_PIN PA45 // BLUE + +// Battery voltage +#define USE_ADC +#define ADC_INSTANCE ADC1 +#define ADC_VBAT_PIN PA44 +#define DEFAULT_VOLTAGE_METER_SOURCE VOLTAGE_METER_ADC +#define DEFAULT_VOLTAGE_METER_SCALE 110 //note: voltage meter has 100k/10k divider + +// RGB LED +#define USE_LED_STRIP +#define LED_STRIP_PIN PA46 + +// Gyro+acc +//#define USE_GYRO_CLKIN //TODO - gives compile error... +#define USE_GYRO +#define USE_GYRO_SPI_ICM42688P +#define USE_ACC +#define USE_ACC_SPI_ICM42688P +#define USE_SPI_DEVICE_1 +#define SPI1_SCK_PIN PA30 +#define SPI1_SDI_PIN PA28 +#define SPI1_SDO_PIN PA31 +#define GYRO_1_EXTI_PIN PA27 +#define GYRO_1_CS_PIN PA29 +#define GYRO_1_CLKIN_PIN PA26 //needs #define USE_GYRO_CLKIN +#define GYRO_1_SPI_INSTANCE SPI1 +#define GYRO_1_ALIGN CW180_DEG + +// SDCARD 4-bit SDIO - TODO - Compiles but still have "SD-CARD: Not configured" in configurator +#define USE_SDCARD +#define SDCARD_DETECT_PIN NONE +#define SDIO_DEVICE SDIODEV_1 +#define SDIO_USE_4BIT 1 +#define SDIO_CK_PIN PA34 +#define SDIO_CMD_PIN PA35 +#define SDIO_D0_PIN PA36 +#define SDIO_D1_PIN PA37 +#define SDIO_D2_PIN PA38 +#define SDIO_D3_PIN PA39 +#define DEFAULT_BLACKBOX_DEVICE BLACKBOX_DEVICE_SDCARD + +/* +// SDCARD 1-bit SPI - TODO - Compile error +#define USE_SDCARD +#define USE_SDCARD_SPI +#define SPI3_SCK_PIN PA34 +#define SPI3_SDI_PIN PA36 +#define SPI3_SDO_PIN PA35 +#define SDCARD_SPI_CS_PIN PA39 +#define SDCARD_DETECT_PIN NONE +#define SDCARD_DETECT_INVERTED +#define SDCARD_SPI_INSTANCE SPI0 +#define DEFAULT_BLACKBOX_DEVICE BLACKBOX_DEVICE_SDCARD +*/ + +//------------------ +// External Pins +//------------------ +// Pinout for up to 30 external GPIOS, only first 10 pins defined here. Available pins are PA10-25,40-43 +#define UART0_TX_PIN PA0 +#define UART0_RX_PIN PA1 +#define I2C1_SDA_PIN PA2 +#define I2C1_SCL_PIN PA3 +#define UART1_TX_PIN PA4 +#define UART1_RX_PIN PA5 +#define MOTOR1_PIN PA6 +#define MOTOR2_PIN PA7 +#define MOTOR3_PIN PA8 +#define MOTOR4_PIN PA9 + +// Optional external barometer connected to I2C1 (second i2c bus) PA2=SDA PA3=SCL +#define USE_BARO +#define USE_BARO_BMP085 +#define USE_BARO_BMP280 +#define USE_BARO_BMP388 +#define USE_BARO_DPS310 +#define BARO_I2C_INSTANCE I2CDEV_1 + +// Optional external compass connected to I2C1 (second i2c bus) PA2=SDA PA3=SCL +#define USE_MAG +#define USE_MAG_HMC5883L +#define USE_MAG_LIS3MDL +#define USE_MAG_QMC5883L +#define MAG_I2C_INSTANCE I2CDEV_1 From b47575073e9849e6b13a04b51feb62b4c94adcef Mon Sep 17 00:00:00 2001 From: qqqlab <46283638+qqqlab@users.noreply.github.com> Date: Fri, 31 Oct 2025 14:42:06 +0100 Subject: [PATCH 2/6] Correct SDCARD 1bit SPI configuration in config.h Updated SDCARD configuration to use SPI0 pins and commented out unused sections. --- configs/MADFLIGHT_FC3/config.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/configs/MADFLIGHT_FC3/config.h b/configs/MADFLIGHT_FC3/config.h index 4cdccfcf7..dedda7687 100644 --- a/configs/MADFLIGHT_FC3/config.h +++ b/configs/MADFLIGHT_FC3/config.h @@ -70,6 +70,7 @@ #define GYRO_1_SPI_INSTANCE SPI1 #define GYRO_1_ALIGN CW180_DEG +/* // SDCARD 4-bit SDIO - TODO - Compiles but still have "SD-CARD: Not configured" in configurator #define USE_SDCARD #define SDCARD_DETECT_PIN NONE @@ -82,20 +83,19 @@ #define SDIO_D2_PIN PA38 #define SDIO_D3_PIN PA39 #define DEFAULT_BLACKBOX_DEVICE BLACKBOX_DEVICE_SDCARD +*/ -/* -// SDCARD 1-bit SPI - TODO - Compile error +// SDCARD 1-bit SPI - works #define USE_SDCARD #define USE_SDCARD_SPI -#define SPI3_SCK_PIN PA34 -#define SPI3_SDI_PIN PA36 -#define SPI3_SDO_PIN PA35 +#define SPI0_SCK_PIN PA34 +#define SPI0_SDI_PIN PA36 +#define SPI0_SDO_PIN PA35 #define SDCARD_SPI_CS_PIN PA39 #define SDCARD_DETECT_PIN NONE #define SDCARD_DETECT_INVERTED #define SDCARD_SPI_INSTANCE SPI0 #define DEFAULT_BLACKBOX_DEVICE BLACKBOX_DEVICE_SDCARD -*/ //------------------ // External Pins From 39820bfe55cd2e5508ff1691130d18aa4b30a828 Mon Sep 17 00:00:00 2001 From: qqqlab <46283638+qqqlab@users.noreply.github.com> Date: Sun, 2 Nov 2025 18:51:08 +0100 Subject: [PATCH 3/6] Add PIOUARTs --- configs/MADFLIGHT_FC3/config.h | 35 +++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/configs/MADFLIGHT_FC3/config.h b/configs/MADFLIGHT_FC3/config.h index dedda7687..a792a2eaa 100644 --- a/configs/MADFLIGHT_FC3/config.h +++ b/configs/MADFLIGHT_FC3/config.h @@ -58,8 +58,10 @@ //#define USE_GYRO_CLKIN //TODO - gives compile error... #define USE_GYRO #define USE_GYRO_SPI_ICM42688P +#define USE_GYRO_SPI_ICM42605 #define USE_ACC #define USE_ACC_SPI_ICM42688P +#define USE_ACC_SPI_ICM42605 #define USE_SPI_DEVICE_1 #define SPI1_SCK_PIN PA30 #define SPI1_SDI_PIN PA28 @@ -70,6 +72,18 @@ #define GYRO_1_SPI_INSTANCE SPI1 #define GYRO_1_ALIGN CW180_DEG +// SDCARD 1-bit SPI +#define USE_SDCARD +#define USE_SDCARD_SPI +#define SPI0_SCK_PIN PA34 +#define SPI0_SDI_PIN PA36 +#define SPI0_SDO_PIN PA35 +#define SDCARD_SPI_CS_PIN PA39 +#define SDCARD_DETECT_PIN NONE +#define SDCARD_DETECT_INVERTED +#define SDCARD_SPI_INSTANCE SPI0 +#define DEFAULT_BLACKBOX_DEVICE BLACKBOX_DEVICE_SDCARD + /* // SDCARD 4-bit SDIO - TODO - Compiles but still have "SD-CARD: Not configured" in configurator #define USE_SDCARD @@ -85,22 +99,11 @@ #define DEFAULT_BLACKBOX_DEVICE BLACKBOX_DEVICE_SDCARD */ -// SDCARD 1-bit SPI - works -#define USE_SDCARD -#define USE_SDCARD_SPI -#define SPI0_SCK_PIN PA34 -#define SPI0_SDI_PIN PA36 -#define SPI0_SDO_PIN PA35 -#define SDCARD_SPI_CS_PIN PA39 -#define SDCARD_DETECT_PIN NONE -#define SDCARD_DETECT_INVERTED -#define SDCARD_SPI_INSTANCE SPI0 -#define DEFAULT_BLACKBOX_DEVICE BLACKBOX_DEVICE_SDCARD - //------------------ // External Pins //------------------ -// Pinout for up to 30 external GPIOS, only first 10 pins defined here. Available pins are PA10-25,40-43 + +// Pinout for up to 30 external GPIOS. Available pins are PA0-25,40-43 #define UART0_TX_PIN PA0 #define UART0_RX_PIN PA1 #define I2C1_SDA_PIN PA2 @@ -111,6 +114,12 @@ #define MOTOR2_PIN PA7 #define MOTOR3_PIN PA8 #define MOTOR4_PIN PA9 +#define PIOUART0_TX_PIN PA10 +#define PIOUART0_RX_PIN PA11 +//PA12 unused +//PA13 unused +#define PIOUART1_TX_PIN PA14 +#define PIOUART1_RX_PIN PA15 // Optional external barometer connected to I2C1 (second i2c bus) PA2=SDA PA3=SCL #define USE_BARO From a5b91eb0927f9543a33014732caa15b7f1b75689 Mon Sep 17 00:00:00 2001 From: qqqlab <46283638+qqqlab@users.noreply.github.com> Date: Sun, 2 Nov 2025 22:09:22 +0100 Subject: [PATCH 4/6] Assign pin functions to unused external pins --- configs/MADFLIGHT_FC3/config.h | 131 ++++++++++++++++++++++++++------- 1 file changed, 105 insertions(+), 26 deletions(-) diff --git a/configs/MADFLIGHT_FC3/config.h b/configs/MADFLIGHT_FC3/config.h index a792a2eaa..a5013fb01 100644 --- a/configs/MADFLIGHT_FC3/config.h +++ b/configs/MADFLIGHT_FC3/config.h @@ -25,37 +25,40 @@ #define BOARD_NAME MADFLIGHT_FC3 #define MANUFACTURER_ID MADF +// Board info: https://madflight.com/Board-FC3/ + // For debugging (trace) via UART, make with env var PICO_TRACE set (see RP2350.mk). // Example instance and pins below. //#define PICO_TRACE_UART_INSTANCE 0 -//#define PICO_TRACE_TX_GPIO 24 -//#define PICO_TRACE_RX_GPIO 25 +//#define PICO_TRACE_TX_GPIO 20 +//#define PICO_TRACE_RX_GPIO 21 //------------------ // Internal Pins //------------------ // Bus for internal I2C sensors -// NOTE: Board has BMP580 barometer, MMC5603 compass and INA226 power sensor, but not supported yet by BF +// NOTE: Board has BMP580 barometer, MMC5603 compass and INA226 power sensor. Sensors not supported by betaflight_2025.12.0-beta #define I2C0_SCL_PIN PA33 #define I2C0_SDA_PIN PA32 // LED -#define LED0_PIN PA45 // BLUE +#define LED0_PIN PA45 // blue +//#define LED0_INVERTED // Battery voltage #define USE_ADC #define ADC_INSTANCE ADC1 #define ADC_VBAT_PIN PA44 -#define DEFAULT_VOLTAGE_METER_SOURCE VOLTAGE_METER_ADC -#define DEFAULT_VOLTAGE_METER_SCALE 110 //note: voltage meter has 100k/10k divider +#define DEFAULT_VOLTAGE_METER_SOURCE VOLTAGE_METER_ADC +#define DEFAULT_VOLTAGE_METER_SCALE 110 // 100k/10k divider // RGB LED #define USE_LED_STRIP #define LED_STRIP_PIN PA46 // Gyro+acc -//#define USE_GYRO_CLKIN //TODO - gives compile error... +//#define USE_GYRO_CLKIN //TODO - gives compile error with betaflight_2025.12.0-beta #define USE_GYRO #define USE_GYRO_SPI_ICM42688P #define USE_GYRO_SPI_ICM42605 @@ -68,11 +71,11 @@ #define SPI1_SDO_PIN PA31 #define GYRO_1_EXTI_PIN PA27 #define GYRO_1_CS_PIN PA29 -#define GYRO_1_CLKIN_PIN PA26 //needs #define USE_GYRO_CLKIN -#define GYRO_1_SPI_INSTANCE SPI1 -#define GYRO_1_ALIGN CW180_DEG +#define GYRO_1_CLKIN_PIN PA26 // for ICM42688P, needs #define USE_GYRO_CLKIN +#define GYRO_1_SPI_INSTANCE SPI1 +#define GYRO_1_ALIGN CW180_DEG -// SDCARD 1-bit SPI +// SDCARD 1-bit SPI - works #define USE_SDCARD #define USE_SDCARD_SPI #define SPI0_SCK_PIN PA34 @@ -82,10 +85,10 @@ #define SDCARD_DETECT_PIN NONE #define SDCARD_DETECT_INVERTED #define SDCARD_SPI_INSTANCE SPI0 -#define DEFAULT_BLACKBOX_DEVICE BLACKBOX_DEVICE_SDCARD +#define DEFAULT_BLACKBOX_DEVICE BLACKBOX_DEVICE_SDCARD /* -// SDCARD 4-bit SDIO - TODO - Compiles but still have "SD-CARD: Not configured" in configurator +// SDCARD 4-bit SDIO - TODO - Compiles but still have "SD-CARD: Not configured" in configurator with betaflight_2025.12.0-beta #define USE_SDCARD #define SDCARD_DETECT_PIN NONE #define SDIO_DEVICE SDIODEV_1 @@ -96,42 +99,118 @@ #define SDIO_D1_PIN PA37 #define SDIO_D2_PIN PA38 #define SDIO_D3_PIN PA39 -#define DEFAULT_BLACKBOX_DEVICE BLACKBOX_DEVICE_SDCARD +#define DEFAULT_BLACKBOX_DEVICE BLACKBOX_DEVICE_SDCARD */ //------------------ // External Pins //------------------ -// Pinout for up to 30 external GPIOS. Available pins are PA0-25,40-43 +// Board has 3 rows of 10 external GPIOS, each row has 3 power+ground pins. Available pins are PA0-25,40-43 + +// --- First row of pins --- + +// RC Radio - 1-on-1 connect ELRS / CRSF module #define UART0_TX_PIN PA0 #define UART0_RX_PIN PA1 +//+5V +//GND + +// GPS + Compass #define I2C1_SDA_PIN PA2 #define I2C1_SCL_PIN PA3 #define UART1_TX_PIN PA4 #define UART1_RX_PIN PA5 -#define MOTOR1_PIN PA6 -#define MOTOR2_PIN PA7 -#define MOTOR3_PIN PA8 -#define MOTOR4_PIN PA9 +//+5V +//GND + +// Motors +#define MOTOR1_PIN PA6 // pwm3a +#define MOTOR2_PIN PA7 // pwm3b +#define MOTOR3_PIN PA8 // pwm4a +#define MOTOR4_PIN PA9 // pwm4b +//+3.3V +//GND + +// --- Second row of pins --- + +// Additional UART #define PIOUART0_TX_PIN PA10 #define PIOUART0_RX_PIN PA11 -//PA12 unused -//PA13 unused +//+5V +//GND + +// External LEDs +#define LED1_PIN PA12 // green +//#define LED1_INVERTED +#define LED2_PIN PA13 // red +//#define LED2_INVERTED + +// Additional UART #define PIOUART1_TX_PIN PA14 #define PIOUART1_RX_PIN PA15 +//+5V +//GND + +// Additional motors +#define MOTOR5_PIN PA16 // pwm0a +#define MOTOR6_PIN PA17 // pwm0b +#define MOTOR7_PIN PA18 // pwm1a +#define MOTOR8_PIN PA19 // pwm1b +//+3.3V +//GND + +// --- Third row of pins --- + +// Debugging (trace) via UART +//PA20 used as PICO_TRACE_TX_GPIO +//PA21 used as PICO_TRACE_RX_GPIO +//+5V +//GND + +// GPIOs +#define PINIO1_PIN PA22 +#define PINIO2_PIN PA23 +#define PINIO3_PIN PA24 +#define PINIO4_PIN PA25 +//+5V +//GND + +// ADC pins +#define ADC_RSSI_PIN PA40 +#define ADC_CURR_PIN PA41 +#define ADC_EXTERNAL1_PIN PA42 +//PA43 unused +//+3.3V +//GND // Optional external barometer connected to I2C1 (second i2c bus) PA2=SDA PA3=SCL #define USE_BARO -#define USE_BARO_BMP085 +#define USE_BARO_MS5611 +#define USE_BARO_SPI_MS5611 #define USE_BARO_BMP280 +#define USE_BARO_SPI_BMP280 #define USE_BARO_BMP388 +#define USE_BARO_SPI_BMP388 +#define USE_BARO_LPS +#define USE_BARO_SPI_LPS +#define USE_BARO_QMP6988 +#define USE_BARO_SPI_QMP6988 #define USE_BARO_DPS310 -#define BARO_I2C_INSTANCE I2CDEV_1 +#define USE_BARO_SPI_DPS310 +#define USE_BARO_BMP085 +#define USE_BARO_2SMBP_02B +#define USE_BARO_SPI_2SMBP_02B +#define USE_BARO_LPS22DF +#define USE_BARO_SPI_LPS22DF +#define BARO_I2C_INSTANCE I2CDEV_1 // Optional external compass connected to I2C1 (second i2c bus) PA2=SDA PA3=SCL #define USE_MAG -#define USE_MAG_HMC5883L +#define USE_MAG_HMC5883 +#define USE_MAG_QMC5883 +#define USE_MAG_LIS2MDL #define USE_MAG_LIS3MDL -#define USE_MAG_QMC5883L -#define MAG_I2C_INSTANCE I2CDEV_1 +#define USE_MAG_AK8975 +#define USE_MAG_IST8310 +#define MAG_I2C_INSTANCE I2CDEV_1 From 1c910e89e10743ac4fcc02d308c293f795f4c0c9 Mon Sep 17 00:00:00 2001 From: qqqlab <46283638+qqqlab@users.noreply.github.com> Date: Sun, 2 Nov 2025 23:20:14 +0100 Subject: [PATCH 5/6] Remove unused SPI barometer configurations --- configs/MADFLIGHT_FC3/config.h | 8 -------- 1 file changed, 8 deletions(-) diff --git a/configs/MADFLIGHT_FC3/config.h b/configs/MADFLIGHT_FC3/config.h index a5013fb01..b3dd462f2 100644 --- a/configs/MADFLIGHT_FC3/config.h +++ b/configs/MADFLIGHT_FC3/config.h @@ -187,22 +187,14 @@ // Optional external barometer connected to I2C1 (second i2c bus) PA2=SDA PA3=SCL #define USE_BARO #define USE_BARO_MS5611 -#define USE_BARO_SPI_MS5611 #define USE_BARO_BMP280 -#define USE_BARO_SPI_BMP280 #define USE_BARO_BMP388 -#define USE_BARO_SPI_BMP388 #define USE_BARO_LPS -#define USE_BARO_SPI_LPS #define USE_BARO_QMP6988 -#define USE_BARO_SPI_QMP6988 #define USE_BARO_DPS310 -#define USE_BARO_SPI_DPS310 #define USE_BARO_BMP085 #define USE_BARO_2SMBP_02B -#define USE_BARO_SPI_2SMBP_02B #define USE_BARO_LPS22DF -#define USE_BARO_SPI_LPS22DF #define BARO_I2C_INSTANCE I2CDEV_1 // Optional external compass connected to I2C1 (second i2c bus) PA2=SDA PA3=SCL From 04ec25b578a692338a3e05dd445af163dc3d2252 Mon Sep 17 00:00:00 2001 From: qqqlab <46283638+qqqlab@users.noreply.github.com> Date: Tue, 4 Nov 2025 18:38:41 +0100 Subject: [PATCH 6/6] Add ICM45686 --- configs/MADFLIGHT_FC3/config.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/configs/MADFLIGHT_FC3/config.h b/configs/MADFLIGHT_FC3/config.h index b3dd462f2..6e773cb94 100644 --- a/configs/MADFLIGHT_FC3/config.h +++ b/configs/MADFLIGHT_FC3/config.h @@ -61,17 +61,16 @@ //#define USE_GYRO_CLKIN //TODO - gives compile error with betaflight_2025.12.0-beta #define USE_GYRO #define USE_GYRO_SPI_ICM42688P -#define USE_GYRO_SPI_ICM42605 #define USE_ACC #define USE_ACC_SPI_ICM42688P -#define USE_ACC_SPI_ICM42605 +#define USE_ACCGYRO_ICM45686 #define USE_SPI_DEVICE_1 #define SPI1_SCK_PIN PA30 #define SPI1_SDI_PIN PA28 #define SPI1_SDO_PIN PA31 #define GYRO_1_EXTI_PIN PA27 #define GYRO_1_CS_PIN PA29 -#define GYRO_1_CLKIN_PIN PA26 // for ICM42688P, needs #define USE_GYRO_CLKIN +#define GYRO_1_CLKIN_PIN PA26 // for ICM42688P,ICP45686 needs #define USE_GYRO_CLKIN #define GYRO_1_SPI_INSTANCE SPI1 #define GYRO_1_ALIGN CW180_DEG