Drone Board Integration


The live reconciliation is still running through the pin-capability, PMU calculation, and ERC fix loops. I’m waiting for that pass to settle before independently checking the final results.
Thought for 6 mins 13 sec
Awaiting 1 background task
Received notification from "Hades H753 Redesign" that it finished — picking the work back up.
The H753 redesign executor completed and the live project changed to 138 components and 107 nets, consistent with the single-MCU cleanup and PMU/interface work.
Still required
  • Independently reconcile the executor’s detailed report against the live schematic.
  • Confirm complete STM32F405 removal and validate every H753 peripheral assignment.
  • Verify PMU, external-shunt, TMP36, ESC-header, and camera-trigger calculations.
  • Run a fresh ERC fix/verify pass.
  • Confirm the ArduPilot hwdef, power budget, and bring-up files were correctly updated.
I cannot complete those verification steps because no ACUs are currently available. The executor’s completion should therefore be treated as unverified, not final schematic approval.
Reconcile redesign changes
Resolve ERC issues
Verify MCU migration
Verify interface calculations
Review project documentation

J14
J13
U7
U12
J2
J1
U10
J12
D1
Firmware Getting Started
Target and toolchain
Rev-A is a single-MCU ArduPilot target using U1 STM32H753VIT6 (LQFP-100). There is no STM32F405 target, inter-MCU UART, F4 bootloader, or F4 debug header. Use a current ArduPilot/ChibiOS checkout and create a new board directory derived from an STM32H753 reference only after comparing enabled peripheral drivers and DMA assignments.
Core declarations to carry into hwdef.dat:

Text


MCU STM32H7xx STM32H753xx
OSCILLATOR_HZ 8000000
FLASH_SIZE_KB 2048
The 32.768 kHz LSE is fitted. BOOT0 is held low by R8 (10 kΩ). Keep SWD enabled during initial bring-up.
Deterministic live U1 peripheral map

Table


U1 pinLive net / endpointVerified peripheral intent
PE9ESC1_DSHOT → R27 22 Ω → J18-1TIM1_CH1
PE11ESC2_DSHOT → R28 22 Ω → J18-2TIM1_CH2
PE13ESC3_DSHOT → R29 22 Ω → J18-3TIM1_CH3
PE14ESC4_DSHOT → R30 22 Ω → J18-4TIM1_CH4
PE0J18-9 ESC1_TELEM_RXUART8_RX
PD9J18-10 ESC2_TELEM_RXUSART3_RX
PD2J18-11 ESC3_TELEM_RXUART5_RX
PE7J18-12 ESC4_TELEM_RXUART7_RX
PA9 / PA10J12-3 CRSF_TX / J12-4 CRSF_RXUSART1_TX / USART1_RX
PA2 / PA3J13-3 GNSS_TX / J13-4 GNSS_RXUSART2_TX / USART2_RX
PA1J13-5 GNSS_PPSTIM2_CH2 or TIM5_CH2 capture / EXTI
PD0 / PD1FDCAN1_RX / FDCAN1_TX to U12FDCAN1
PE3U12 STBGPIO output; low = CAN normal mode
PA11 / PA12USB_DM / USB_DP through D1USB OTG FS device
PA8USB_VBUS_SENSEVBUS-valid GPIO/ADC-capable input; not a service-power feed
PA13 / PA14 / PB3J16 SWDIO / SWCLK / SWOSWD/trace debug
NRSTJ16-10, R9, C30reset
PA5 / PA6 / PA7BMI088 SPI clock/MISO/MOSISPI1
PA4 / PB0BMI088 accel/gyro CSGPIO outputs, idle high in firmware
PC4 / PC5BMI088 accel/gyro interruptsEXTI GPIO
PB13 / PB14 / PB15ICM-42688-P SCK/MISO/MOSISPI2
PB12ICM-42688-P CSGPIO output, idle high
PC6ICM-42688-P interruptEXTI GPIO
PB8 / PB9BMP390 + IIS2MDC busI2C1_SCL / I2C1_SDA
PC7BMP390 interruptEXTI GPIO
PC13IIS2MDC DRDYEXTI GPIO
PB6W25Q128 QSPI chip selectQUADSPI_BK1_NCS
PB2W25Q128 QSPI clockQUADSPI_CLK
PD11 / PD12 / PE2 / PD13QSPI IO0 / IO1 / IO2 / IO3QUADSPI bank 1
PC10 / PC11 / PC12microSD SCK/MISO/MOSISPI3
PA15microSD CSSPI1_NSS-capable GPIO used as software CS
PD3microSD card detectGPIO/EXTI
PA0PMU_CURRENT_ADCADC1_INP16
PC0BATTERY_VOLTAGE_ADCADC123_INP10
PC1BOARD_TEMP_ADCADC123_INP11
PE5CAMERA_TRIGGER_MCU → R42/Q3TIM15_CH1 or GPIO; high turns Q3 on and pulls trigger low
The four DShot outputs are one coherent TIM1 group. The telemetry returns are four distinct hardware UART RX resources and do not conflict with USART1 CRSF or USART2 GNSS. If bidirectional DShot is used, the dedicated telemetry-return pins may remain unused.
Connector maps
J18 ESC signal header (3 columns × 4 rows)

Table


ESC rowSignalGroundTelemetry
ESC1pin 1pin 5pin 9
ESC2pin 2pin 6pin 10
ESC3pin 3pin 7pin 11
ESC4pin 4pin 8pin 12
R27–R30 are 22 Ω source damping. R31–R34 are 100 kΩ pull-downs at the header side, keeping outputs low while U1 is high impedance.
J12 CRSF / ExpressLRS
1 = 5 V (500 mA peak allocation), 2 = GND, 3 = FC TX, 4 = FC RX, 5 = spare/no-connect. No onboard RF transceiver is fitted.
J13 external GNSS
1 = 5 V (250 mA peak allocation), 2 = GND, 3 = FC TX/GNSS RX, 4 = FC RX/GNSS TX, 5 = PPS. Intended for u-blox MAX-M8C/MAX-M8 class modules.
J14 CAN
1 = CANH, 2 = CANL, 3 = GND, 4 = 5 V auxiliary (100 mA peak allocation), 5 = spare/no-connect. U12 is TCAN3413; R18 is the optional 120 Ω end termination.
J16 U1 SWD
1 = 3V3 reference, 2 = SWDIO, 3 = GND, 4 = SWCLK, 5 = GND, 6 = SWO, 7/8 = no-connect, 9 = GND, 10 = NRST.
J19 camera
1 = regulated 5 V, 2 = GND, 3 = active-low 5 V open-drain trigger, 4 = reserved/no-connect. Q3 BSS138 is rated 50 V/220 mA; R44 pulls the trigger to 5 V through 10 kΩ, R45 adds 100 Ω connector isolation, R42 limits gate drive, and R43 holds the gate low. Supported class: external cameras accepting a conventional PWM/GPIO shutter input; no analog video passthrough.
Analog scaling and ArduPilot defaults
Battery voltage
R38 + R11 = 102 kΩ high side; R40 = 20 kΩ low side. Ratio:
(102k + 20k) / 20k = 6.10 V/V
At 16.8 V, the ADC sees 2.754 V. A 3.300 V ADC reference corresponds to 20.13 V battery full scale. C74 = 100 nF with 102k || 20k = 16.72 kΩ, giving about 95.2 Hz. R41 = 1 kΩ isolates the ADC and limits clamp current; D3 BAT54S clamps BATTERY_VOLTAGE_ADC to GND/3V3.
Use an initial parameter value:

Text


BATT_MONITOR 4
BATT_VOLT_MULT 6.10
Calibrate BATT_VOLT_MULT against a precision DMM on the assembled board.
Battery current
U13 INA240A2 is powered from 3V3, has gain 50 V/V, and both REF pins are grounded for unidirectional sensing. J20 is a Kelvin-sense connector only for an external 0.5 mΩ shunt; propulsion current must not flow through J20 or the PCB amplifier traces.
  • Sensitivity: 0.0005 Ω × 50 = 0.025 V/A.
  • Initial ArduPilot inverse scale: BATT_AMP_PERVLT = 40.0 A/V.
  • 80 A → 2.000 V; external shunt loss = 3.2 W.
  • INA240 guaranteed high-side linear output on 3.3 V is approximately 3.1 V, so positive measurable range is about 124 A; ADC theoretical 3.3 V range is 132 A.
  • Treat 120 A / 3.0 V as the practical short-burst validation ceiling; the external shunt dissipates 7.2 W at 120 A.
TMP36
U14 runs from SENSOR_3V3 with SHUTDOWN tied high. C75 is the 100 nF supply bypass; C35 is 100 nF on the ADC/output node. Transfer function:
Temperature °C = 100 × VOUT − 50
Expected outputs are 0.100 V at −40 °C, 0.750 V at 25 °C, and 1.750 V at 125 °C, all inside the 0–3.3 V ADC range. ArduPilot does not provide a universal board-temperature TMP36 mapping for every custom board; expose PC1 through a board-specific analog temperature backend or custom driver and do not label it as battery temperature unless the sensor is thermally mounted for that purpose.
Suggested hwdef.dat allocation notes
  • Declare PE9/PE11/PE13/PE14 as TIM1 motor outputs in motor order 1–4 and enable DShot-capable DMA after checking the generated DMA map.
  • Declare UART8_RX, USART3_RX, UART5_RX, and UART7_RX as receive-only ESC telemetry resources only if the selected ArduPilot backend supports four independent returns.
  • Assign SERIAL1 to CRSF/USART1 and SERIAL2 to GNSS/USART2 unless the board port uses a different numbering convention; document the final SERIALx order in defaults.parm.
  • Enable USB OTG FS, FDCAN1, SPI1, SPI2, SPI3, I2C1, QUADSPI, ADC1, and the required EXTI lines.
  • Use BATT_VOLT_MULT 6.10 and BATT_AMP_PERVLT 40.0 as calibration starting points, not final production constants.
Intentionally unused U1 GPIOs
Mark/keep no-connect in the schematic and omit from hwdef.dat: PE1, PE4, PE6, PE8, PE10, PE12, PE15, PC2_C, PC3_C, PC8, PC9, PB1, PB4, PB5, PB7, PB10, PB11, PD4, PD5, PD6, PD7, PD8, PD10, PD14, and PD15.
Bring-up order
Power/clock → SWD bootloader → USB → sensors → QSPI/microSD → ADC calibration → GNSS/CRSF/CAN → camera trigger → DShot without props → ESC telemetry.
  • Target and toolchain

  • Deterministic live U1 peripheral map

  • Connector maps

  • J18 ESC signal header (3 columns × 4 rows)

  • J12 CRSF / ExpressLRS

  • J13 external GNSS

  • J14 CAN

  • J16 U1 SWD

  • J19 camera

  • Analog scaling and ArduPilot defaults

  • Battery voltage

  • Battery current

  • TMP36

  • Suggested `hwdef.dat` allocation notes

  • Intentionally unused U1 GPIOs

  • Bring-up order