Skip to content

Add SPEDIXH743#791

Merged
haslinghuis merged 5 commits intobetaflight:masterfrom
ot0tot:Add-SPEDIXH743
Oct 27, 2025
Merged

Add SPEDIXH743#791
haslinghuis merged 5 commits intobetaflight:masterfrom
ot0tot:Add-SPEDIXH743

Conversation

@ot0tot
Copy link
Contributor

@ot0tot ot0tot commented May 25, 2025

Checklist

  • passed schematics review
  • passed hardware samples testing
  • follows guidelines
  • follows connector standards
  • flight tested
  • comments/issues resolved

@coderabbitai
Copy link
Contributor

coderabbitai bot commented May 25, 2025

Walkthrough

Adds a complete board configuration header for SPEDIXH743 (STM32H743 MCU). Defines compile-time constants for board identity, enabled peripherals (accelerometer, gyroscope, flash, barometer, MAX7456, camera, LED strip, multiple UARTs, I2C, SPI), pin mappings for all I/O interfaces, timer-to-pin associations, DMA/ADC options, and I2C instance assignments.

Changes

Cohort / File(s) Summary
SPEDIXH743 Board Configuration
configs/SPEDIXH743/config.h
New board configuration header defining MCU target (STM32H743), board/manufacturer identifiers, and extensive compile-time constants: peripheral feature flags (ACC, GYRO, FLASH, BARO, MAX7456), pin mappings for motors (8), UARTs (8), I2C buses (3), SPI buses (4), LEDs, sensors, and control signals; timer-to-pin mappings via TIMER_PIN_MAPPING; DMA and ADC options; gyro clock inputs and chip selects; meter sources and scales; SPI/I2C instance assignments; and GPIO PINIO configurations with status boxes.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

  • Verify pin assignments are correct and do not conflict with STM32H743 hardware constraints
  • Confirm peripheral feature flags (USE_ACC_SPI_ICM42688P, USE_BARO_BMP280, USE_BARO_DPS310, USE_MAX7456) match intended board capabilities
  • Check TIMER_PIN_MAPPING entries align with motor and PWM output requirements
  • Validate SPI/I2C instance assignments and their corresponding pin configurations
  • Ensure GYRO_1/GYRO_2 configurations (CLKIN, EXTI, CS pins, SPI instances) are consistent

Possibly related PRs

  • Add AIRBRAINH743 #924: Adds nearly identical STM32H743 board configuration header with same MCU target, peripheral macros, and TIMER_PIN_MAPPING structure
  • Add BROTHERHOBBYH743 #753: Adds similar STM32H743 board configuration defining same compile-time symbols (FC_TARGET_MCU, peripherals, SPI/I2C/UART pin mappings)
  • Add New Target DAKEFPVH743Pro #793: Adds comparable STM32H743 board configuration header with identical MCU target and peripheral pin/macro definitions

Suggested labels

Awaiting prototype samples

Suggested reviewers

  • haslinghuis
  • nerdCopter

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Description Check ⚠️ Warning The pull request description is largely incomplete and does not follow the required template. According to the template, submissions for new flight controllers must include sections on mandatory review acknowledgment, hardware compliance requirements, housekeeping details, and a completed checklist. The provided description only includes the checklist portion with all items unchecked, and omits the mandatory review sections, hardware compliance acknowledgments, and any substantive details about the board design, manufacturer, or compliance status. The template emphasizes that all new flight controllers must undergo Betaflight review and that manufacturers must provide evidence of compliance with design guidelines and testing requirements.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (1 passed)
Check name Status Explanation
Title Check ✅ Passed The pull request title "Add SPEDIXH743" clearly and concisely describes the primary change: adding a new board configuration file for the SPEDIXH743 flight controller. The title is specific and directly related to the changeset, which introduces comprehensive hardware definitions including peripheral mappings, pin configurations, and MCU target specifications for this new board. The title avoids vague language and unnecessary details while remaining understandable to someone scanning commit history.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 22dc66d and 1e8828c.

📒 Files selected for processing (1)
  • configs/SPEDIXH743/config.h (1 hunks)
🧰 Additional context used
🧠 Learnings (9)
📚 Learning: 2025-07-03T04:33:57.480Z
Learnt from: ot0tot
PR: betaflight/config#0
File: :0-0
Timestamp: 2025-07-03T04:33:57.480Z
Learning: Always verify that the BOARD_NAME define in each config.h matches the directory name it resides in (e.g., configs/AXISFLYINGF7AIO/config.h must have #define BOARD_NAME AXISFLYINGF7AIO). This check is required for all Betaflight board configuration reviews.

Applied to files:

  • configs/SPEDIXH743/config.h
📚 Learning: 2025-07-14T16:16:56.822Z
Learnt from: haslinghuis
PR: betaflight/config#835
File: configs/HDZERO_HALO_MPU6000/config.h:44-56
Timestamp: 2025-07-14T16:16:56.822Z
Learning: For Betaflight board configurations of boards already in production, pin assignments in config.h files reflect the actual hardware design and cannot be changed, even if they present potential conflicts with debug interfaces. The configuration must match the physical board layout, not ideal software design preferences.

Applied to files:

  • configs/SPEDIXH743/config.h
📚 Learning: 2025-07-03T04:33:57.480Z
Learnt from: ot0tot
PR: betaflight/config#0
File: :0-0
Timestamp: 2025-07-03T04:33:57.480Z
Learning: Always verify that the `BOARD_NAME` define in config.h files exactly matches the directory name where the config file is located. For example, if the config file is in configs/AXISFLYINGF7AIO/config.h, then the BOARD_NAME should be defined as "AXISFLYINGF7AIO". This ensures proper board identification and configuration loading in Betaflight.

Applied to files:

  • configs/SPEDIXH743/config.h
📚 Learning: 2025-08-28T20:45:36.652Z
Learnt from: haslinghuis
PR: betaflight/config#888
File: configs/ZEX_ATHENA_MINI/config.h:0-0
Timestamp: 2025-08-28T20:45:36.652Z
Learning: In STM32H743 Betaflight configurations, PB0 can use multiple timer options including TIM1_CH2N, TIM3_CH3, and TIM8_CH2N as defined in timer_stm32h7xx.c. For CAMERA_CONTROL_PIN assignments, TIM3_CH3 (timer index 3) is the appropriate choice.

Applied to files:

  • configs/SPEDIXH743/config.h
📚 Learning: 2025-06-02T16:16:20.197Z
Learnt from: haslinghuis
PR: betaflight/config#0
File: :0-0
Timestamp: 2025-06-02T16:16:20.197Z
Learning: In STM32F405-based flight controller configurations, timer pin mappings must be carefully analyzed for DMA stream conflicts, especially between motor timers, LED strip timers, and SPI DMA assignments. Changes to TIMER_PIN_MAPPING should include verification that all required peripherals (motors, LED strip, blackbox SPI) can coexist without DMA conflicts.

Applied to files:

  • configs/SPEDIXH743/config.h
📚 Learning: 2025-08-28T20:45:36.652Z
Learnt from: haslinghuis
PR: betaflight/config#888
File: configs/ZEX_ATHENA_MINI/config.h:0-0
Timestamp: 2025-08-28T20:45:36.652Z
Learning: In STM32H743 Betaflight configurations, PA15 maps to TIM2_CH1 (timer index 2) as defined in timer_stm32h7xx.c. When used for GYRO_CLKIN functionality, it's recommended to use the macro name GYRO_1_CLKIN_PIN in TIMER_PIN_MAPPING for consistency with other pin definitions.

Applied to files:

  • configs/SPEDIXH743/config.h
📚 Learning: 2025-09-01T19:58:52.049Z
Learnt from: haslinghuis
PR: betaflight/config#881
File: configs/GEPRC_TAKER_H743MINI/config.h:86-99
Timestamp: 2025-09-01T19:58:52.049Z
Learning: For STM32H743 PB0 in Betaflight, there are three timer options: TIM1_CH2N, TIM3_CH3, and TIM8_CH2N. Only TIM3_CH3 (timer index 2) is suitable for GYRO_CLKIN as the other two are complementary (N) channels. This is confirmed in timer_stm32h7xx.c.

Applied to files:

  • configs/SPEDIXH743/config.h
📚 Learning: 2025-09-01T19:58:52.049Z
Learnt from: haslinghuis
PR: betaflight/config#881
File: configs/GEPRC_TAKER_H743MINI/config.h:86-99
Timestamp: 2025-09-01T19:58:52.049Z
Learning: For STM32H743 in Betaflight, PB0 has multiple timer options but only timer index 2 provides a non-complementary output suitable for GYRO_CLKIN functionality. The other timer options for PB0 are N channels (complementary outputs) which are not appropriate for CLKIN usage.

Applied to files:

  • configs/SPEDIXH743/config.h
📚 Learning: 2025-05-31T17:01:39.423Z
Learnt from: haslinghuis
PR: betaflight/config#798
File: configs/FURYF4OSD/config.h:88-88
Timestamp: 2025-05-31T17:01:39.423Z
Learning: For STM32F4xx platforms, PB1 pin timer definitions are:
1 = DEF_TIM(TIM1, CH3N, PB1, 0, 0)
2 = DEF_TIM(TIM3, CH4, PB1, 0, 0) 
3 = DEF_TIM(TIM8, CH3N, PB1, 0, 0)
Timer instance 2 (TIM3, CH4) is the correct mapping for PB1 motor control on STM32F4xx platforms as defined in src/platform/STM32/timer_stm32f4xx.c

Applied to files:

  • configs/SPEDIXH743/config.h
🔇 Additional comments (3)
configs/SPEDIXH743/config.h (3)

24-28: LGTM! Board identification is correct.

The BOARD_NAME correctly matches the directory name, and the MCU target and manufacturer ID are properly defined.


149-160: LGTM! Default configuration looks good.

The default settings for dshot bitbang, blackbox, current/voltage metering, beeper inversion, and SPI instance assignments are all properly configured. The commented GYRO_2_ALIGN on line 160 is acceptable for initial board configuration and can be uncommented later if alignment adjustment is needed during flight testing.


127-127: Verify PA5 timer index against Betaflight firmware source.

PA5 configured with timer index 1 for GYRO_1_CLKIN_PIN is consistent across multiple H743 boards (SPEDIXH743, DRONEERH743DUAL). However, the learnings show PA15 with TIM2_CH1 uses index 2, suggesting different pins may have different timer indices. This configuration repository lacks the actual timer definitions (timer_stm32h7xx.c from Betaflight firmware source). Verify that PA5 TIM2_CH1 correctly maps to timer index 1 by checking the firmware's timer definitions.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Co-authored-by: Mark Haslinghuis <mark@numloq.nl>
@ot0tot ot0tot marked this pull request as ready for review October 27, 2025 12:53
@ot0tot ot0tot requested a review from nerdCopter October 27, 2025 12:53
@haslinghuis haslinghuis merged commit 6573e9f into betaflight:master Oct 27, 2025
2 checks passed
@ot0tot ot0tot deleted the Add-SPEDIXH743 branch October 28, 2025 20:28
@coderabbitai coderabbitai bot mentioned this pull request Dec 3, 2025
6 tasks
This was referenced Dec 16, 2025
lukas-principiot pushed a commit to PrincipIoT/config that referenced this pull request Dec 27, 2025
* Create config.h

* Update configs/SPEDIXH743/config.h

Co-authored-by: Mark Haslinghuis <mark@numloq.nl>

* Add MAX7456 define

* Update configs/SPEDIXH743/config.h

* Update configs/SPEDIXH743/config.h

---------

Co-authored-by: Mark Haslinghuis <mark@numloq.nl>
This was referenced Jan 21, 2026
@coderabbitai coderabbitai bot mentioned this pull request Mar 3, 2026
6 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants