madflight FC1 - RP2350B Flight Controller

Schematic

Buy

Specifications

madflight FC1

  • MCU: RP2350B with 48 GPIO, 32 GPIO accessible via pinheader
  • Gyro/Acc: ICM-42688-P
  • Magnetometer: QMC6309
  • Barometer: HP203B
  • Batery Monitor: INA226
  • Black Box: MicroSD (1-bit SPI or 4-bit SDIO)
  • PSRAM: Optional (empty SO-8 socket on back of board)
  • Dimensions: 57.6 x 42 mm
  • Weight: 7.5 gr (without pins, DC-DC)

Optional DC-DC Converter

  • Output: 5V 2A continous / 3A peak
  • input: 6.5~20V
  • Dimensions: 20 x 10 x 5 mm
  • Weight: 1.8 gr

Arduino IDE and PlatformIO Setup

See here

Betaflight Setup

See here

Pinout FC1

Set #define MF_BOARD "brd/madflight_FC1.h" to use this configuration, it can be modified with madflight_config configuration settings in your program.

GPIO External Pin Function Internal Function
0 SER0_TX (connect to radio receiver RX)
1 SER0_RX (connect to radio receiver TX)
2 I2C1_SDA (connect to GPS SDA)
3 I2C1_SCL (connect to GPS SCL)
4 SER1_TX (connect to GPS RX)
5 SER1_RX (connect to GPS TX)
6 free
7 OUT0 (connect to ESC for motor 1)
8 free
9 OUT1 (connect to ESC for motor 2)
10 free
11 OUT2 (connect to ESC for motor 3)
12 free
13 OUT3 (connect to ESC for motor 4)
14 free
15 OUT4
16 free
17 OUT5
18 free
19 OUT6
20 free
21 OUT7
22 free
23 free
24 free
25 free
26 MAG_INT
27 IMU_INT
28 SPI1_MISO (imu)
29 IMU_CS
30 SPI1_SCLK (imu)
31 SPI1_MOSI (imu)
32 I2C0_SDA (bar,bat,mag)
33 I2C0_SCL (bar,bat,mag)
34 SDIO_CLK/SPI0_SLCK (bbx)
35 SDIO_CMD/SPI0_MOSI (bbx)
36 SDIO_D0/SPI0_MISO (bbx)
37 SDIO_D1 (bbx)
38 SDIO_D2 (bbx)
39 SDIO_D3/SPI0_CS (bbx)
40 free (ADC)
41 free (ADC)
42 free (ADC)
43 free (ADC)
44 free (ADC)
45 free (ADC)
46 BAR_INT
47 QMI_CS1 (for optional PSRAM)

RP2350B Hardware

RP2350B is the 80 pin / 48 gpio variant of the Raspberry Pi RP2350 processor.

RP2350 has dual core processor, plus dual single precision FPUs.

madflight uses float and is much happier with RP2350 than with RP2040 !

madflight uses a custom Serial library, because the default Arduino Serial transmitter blocks after sending a couple bytes. Something we don't want.

madflight uses FreeRTOS and executes the 1000Hz IMU loop on the second core. The first core is used for the other sensors.

madflight Limitiations

  • OUT: Consecutive even/odd PWM pins (e.g. pins 2,3 or 10,11) share the same timer and have the same frequency.