Skip to content

Conversation

haslinghuis
Copy link
Member

@haslinghuis haslinghuis commented Aug 28, 2025

Checklist

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

Summary by CodeRabbit

  • New Features
    • Added support for the ZEX_ATHENA_MINI flight controller (STM32H7-class).
    • Dual ICM42688P IMUs with clock-in support, DPS310 barometer, onboard flash Blackbox logging, and MAX7456 OSD.
    • Camera control, four motor outputs, inverted beeper, LED strip, and user-assignable 12V BEC control.
    • Multiple UARTs, dual I2C, extensive SPI/ADC routing, timer mappings, and default voltage/current sensing presets.

@haslinghuis haslinghuis self-assigned this Aug 28, 2025
Copy link
Contributor

coderabbitai bot commented Aug 28, 2025

Walkthrough

Adds a new Betaflight board configuration header for ZEX_ATHENA_MINI (STM32H743) declaring enabled sensors/peripherals, full pinout, timer and DMA mappings, SPI/I2C instances, default device/current/voltage settings, IO-box mapping, beeper polarity, and gyro alignment. (27 words)

Changes

Cohort / File(s) Summary
New board config: ZEX_ATHENA_MINI
configs/ZEX_ATHENA_MINI/config.h
Adds a complete board header for STM32H743: board/manufacturer IDs; enables ACC (ICM42688P), GYRO (ICM42688P + CLKIN), BARO (DPS310), FLASH (W25Q128FV), MAX7456; full pin declarations (beeper, motors, LED strip, camera, UARTs, I2C, SPIs, ADCs, FLASH/MAX7456/GYRO CS & EXTI/CLKIN, PINIO1); TIMER_PIN_MAPPING; DMA options; peripheral instance assignments (I2C/SPI/GYRO); default BLACKBOX, gyro/current/voltage settings; IO-box config/BOX_USER1_NAME; BEEPER_INVERTED; GYRO_1_ALIGN.

Sequence Diagram(s)

(No sequence diagrams included — changes are a static board configuration header with no control-flow modifications.)

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested labels

New manufacturer

Suggested reviewers

  • ot0tot
  • nerdCopter
  • sugaarK

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Description Check ⚠️ Warning The PR description contains only a minimal checklist and does not follow the repository template: it omits the Housekeeping section replacement with branch/author/manufacturer details, provides no links or evidence for schematics review or hardware sample testing, lacks hardware compliance notes or references to the Manufacturer Design Guidelines/Config Target Guidance, and does not include flight-test logs or responses to comments; several checklist items are unchecked and no supporting artifacts are attached. Because multiple required sections from the template are missing or incomplete, the description is insufficient for the mandatory review process. Update the PR to use the repository template fully: replace the Housekeeping placeholder with branch/author/manufacturer details and confirm the PR originates from a non-master branch. Add links to schematics and schematics-review evidence, provide hardware sample testing results or a clear test plan and flight-test logs, confirm adherence to the Manufacturer Design Guidelines and Config Target Guidance, and address any outstanding comments. After adding these supporting artifacts and updating the checklist to reflect completed items the description will be acceptable for review.
✅ Passed checks (2 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
Title Check ✅ Passed The title "Add ZEX_ATHENA_MINI" concisely and accurately captures the primary change — the addition of the ZEX_ATHENA_MINI board configuration (new config header, MCU/pin mappings, and related macros).
✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (4)
configs/ZEX_ATHENA_MINI/config.h (4)

104-112: Timer map uses raw numeric “use”/selector values — prefer named TIM_USE_ for maintainability.*
Named macros reduce mistakes and ease review across targets. If numbers are required for this target, at least add comments indicating intended timer/peripheral use per entry.

Apply comments that document intent (safe, no functional change):

 #define TIMER_PIN_MAPPING \
-    TIMER_PIN_MAP( 0, MOTOR1_PIN , 2,  1) \
-    TIMER_PIN_MAP( 1, MOTOR2_PIN , 2,  2) \
-    TIMER_PIN_MAP( 2, MOTOR3_PIN , 2,  3) \
-    TIMER_PIN_MAP( 3, MOTOR4_PIN , 2,  4) \
-    TIMER_PIN_MAP( 4, LED_STRIP_PIN , 1,  9) \
-    TIMER_PIN_MAP( 5, CAMERA_CONTROL_PIN , 2, -1) \
-    TIMER_PIN_MAP( 6, PA15, 1, -1)
+    /* Motors on PA0..PA3 -> TIM2 CH1..CH4 */ \
+    TIMER_PIN_MAP( 0, MOTOR1_PIN , 2,  1) \
+    TIMER_PIN_MAP( 1, MOTOR2_PIN , 2,  2) \
+    TIMER_PIN_MAP( 2, MOTOR3_PIN , 2,  3) \
+    TIMER_PIN_MAP( 3, MOTOR4_PIN , 2,  4) \
+    /* LED strip on PA8 (typically TIM1_CH1) */ \
+    TIMER_PIN_MAP( 4, LED_STRIP_PIN , 1,  9) \
+    /* Camera control on PB0 (digital) */ \
+    TIMER_PIN_MAP( 5, CAMERA_CONTROL_PIN , 2, -1) \
+    /* Gyro clock drive on PA15 */ \
+    TIMER_PIN_MAP( 6, PA15, 1, -1)

If acceptable, I can follow up with a patch converting the “2/1” selectors to TIM_USE_* names used across H7 targets.


126-133: Defaults look sane; double-check meter scales against board calibration.
110 (current) and 250 (voltage) are typical starting points; confirm production calibration values.


138-138: BEEPER_INVERTED: confirm matches transistor drive polarity on PE9.
Prevents silent beeper on first flash if polarity is opposite.


140-140: Only GYRO_1_ALIGN provided — add GYRO_2_ALIGN if second IMU is populated.
If GYRO_2 is present and not identically oriented, define its alignment explicitly.

+#define GYRO_2_ALIGN                    CW270_DEG /* adjust if different */
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 3bd1953 and c305fcf.

📒 Files selected for processing (1)
  • configs/ZEX_ATHENA_MINI/config.h (1 hunks)
🧰 Additional context used
🧠 Learnings (10)
📚 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/ZEX_ATHENA_MINI/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/ZEX_ATHENA_MINI/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/ZEX_ATHENA_MINI/config.h
📚 Learning: 2025-06-23T18:43:31.746Z
Learnt from: haslinghuis
PR: betaflight/config#822
File: configs/AXISFLYINGH7MINI/config.h:29-37
Timestamp: 2025-06-23T18:43:31.746Z
Learning: In Betaflight configuration files, feature enablement macros like USE_MAG are build options that can be controlled at compile time, while hardware instance definitions like MAG_I2C_INSTANCE are predefined in board configurations to assist with hardware mapping when those features are enabled at build time.

Applied to files:

  • configs/ZEX_ATHENA_MINI/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/ZEX_ATHENA_MINI/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/ZEX_ATHENA_MINI/config.h
📚 Learning: 2025-08-20T02:54:58.596Z
Learnt from: ot0tot
PR: betaflight/config#872
File: configs/HGLRCH743/config.h:82-83
Timestamp: 2025-08-20T02:54:58.596Z
Learning: For Betaflight board configuration reviews, the definitive source for validating UART pin assignments is the serial_uart_{platform}.c file in the Betaflight codebase (e.g., serial_uart_stm32h7xx.c for STM32H7xx platforms), not generic MCU datasheets. These files contain the exact pin mappings that Betaflight supports for each UART peripheral.

Applied to files:

  • configs/ZEX_ATHENA_MINI/config.h
📚 Learning: 2025-07-14T15:41:14.364Z
Learnt from: ot0tot
PR: betaflight/config#834
File: configs/RADIOLINKF405/config.h:79-88
Timestamp: 2025-07-14T15:41:14.364Z
Learning: In STM32F405 configurations, PB1 typically maps to TIM3_CH4 and PC9 typically maps to TIM8_CH4. These are different timers and do not share DMA resources, so there is no conflict when both pins are used simultaneously (e.g., PB1 for LED_STRIP and PC9 for MOTOR4).

Applied to files:

  • configs/ZEX_ATHENA_MINI/config.h
📚 Learning: 2025-07-03T15:17:30.040Z
Learnt from: haslinghuis
PR: betaflight/config#0
File: :0-0
Timestamp: 2025-07-03T15:17:30.040Z
Learning: In Betaflight configurations, when a target name suggests dual IMUs (like JHEF7DUAL) but specific hardware variants only have one gyro available, the preferred solution is to use DEFAULT_GYRO_TO_USE macro to specify which gyro to use by default rather than pruning gyro defines or creating redundant configurations. This approach maintains compatibility when the same target is used by multiple hardware variants from the same manufacturer.

Applied to files:

  • configs/ZEX_ATHENA_MINI/config.h
📚 Learning: 2025-08-21T11:11:19.213Z
Learnt from: haslinghuis
PR: betaflight/config#870
File: configs/ZEX_ATHENA_STD_PRO/config.h:54-55
Timestamp: 2025-08-21T11:11:19.213Z
Learning: For STM32H743 in Betaflight, UART4 can use PB8 (UART4_RX) and PB9 (UART4_TX) with GPIO_AF8_UART4, as confirmed in the official Betaflight codebase at src/platform/STM32/serial_uart_stm32h7xx.c. This is a valid pin mapping despite what some generic STM32 documentation might suggest.

Applied to files:

  • configs/ZEX_ATHENA_MINI/config.h
🔇 Additional comments (6)
configs/ZEX_ATHENA_MINI/config.h (6)

26-27: BOARD_NAME matches directory — good catch kept.
Name aligns with configs/ZEX_ATHENA_MINI/. Nothing to change.


118-125: Peripheral instance mapping is coherent.

  • GYRO_1->SPI1, MAX7456->SPI2, FLASH->SPI3, GYRO_2->SPI4 is a clean split; good for DMA.

53-57: UART4 on PB8/PB9 is valid for STM32H743 in Betaflight — nice.
Matches the supported mapping in the H7 UART table.


73-76: Confirm SPI1_MOSI PD7 AF mapping
This repo doesn’t include the STM32H7 pin tables—please verify in src/platform/STM32/serial_spi_stm32h7xx.c that PD7 is supported as SPI1_MOSI. Also review the SPI definitions at lines 81–88.


39-42: Dual-gyro CLKIN on PA15 — confirm hardware & driver support

  • HAKRCH743 likewise drives two IMUs from PA15 (GYRO_1_CLKIN_PIN and GYRO_2_CLKIN_PIN both PA15), so Betaflight’s H7 timer code already handles this scenario. Ensure your board’s wiring matches that approach.
  • Verify both gyros share the same MCU clock output and that Betaflight’s H7 gyro‐clk driver supports one timer channel feeding two sensors.
  • Confirm PA15 is released from JTAG (JTDI) in production (option bytes or SWJ config set to SWD-only).

53-64: Confirm UART1/2 hardware intent: If the PCB provides TX pads for UART1/2, add matching #define UART1_TX_PIN … and #define UART2_TX_PIN …; otherwise annotate both with // RX-only by design to prevent confusion.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

♻️ Duplicate comments (1)
configs/ZEX_ATHENA_MINI/config.h (1)

113-116: DMA options now match active timers — good fix.

TIMUP2_DMA_OPT present (motors on TIM2); stray TIMUP4/5 options from earlier revisions are gone. Thanks for aligning with the actual timer usage.

🧹 Nitpick comments (4)
configs/ZEX_ATHENA_MINI/config.h (4)

98-103: Dual-gyro details: set GYRO_2 alignment or narrow default.

You define two gyros and DEFAULT_GYRO_TO_USE=BOTH, but only GYRO_1_ALIGN is specified. If gyro2 is present and oriented differently, add GYRO_2_ALIGN. If only one gyro is populated on some batches, consider DEFAULT_GYRO_TO_USE=GYRO_CONFIG_USE_GYRO_1 for this SKU.

Also applies to: 139-139


104-112: TIMER_PIN_MAPPING: motors on TIM2 and LED on TIM1 look consistent; clarify -1 channels.

  • PA0..PA3 → TIM2 CH1..CH4 mapping indices (1..4) look right.
  • LED_STRIP on TIM1 via PA8 is common on H7.
  • CAMERA_CONTROL with timer=2, channel=-1: verify if camera control requires a real timer channel here; if not, consider removing this entry to avoid resource reservation. Likewise, the PA15 entry with channel -1—confirm its purpose.

125-131: Meter defaults: please confirm board-calibrated scales.

CURRENT_METER_SCALE=180 and VOLTAGE_METER_SCALE=250 should match the board’s shunt and divider. If these are manufacturer-calibrated, consider adding a comment with divider/shunt values for traceability.


53-64: Missing TX pins (intentional?).

Only RX is defined for UART1 and UART2. If TX pads don’t exist, consider adding a brief comment (e.g., “no TX pad”) to avoid later confusion.

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between c305fcf and b248341.

📒 Files selected for processing (1)
  • configs/ZEX_ATHENA_MINI/config.h (1 hunks)
🧰 Additional context used
🧠 Learnings (11)
📓 Common learnings
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.
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.
Learnt from: haslinghuis
PR: betaflight/config#822
File: configs/AXISFLYINGH7MINI/config.h:29-37
Timestamp: 2025-06-23T18:43:31.746Z
Learning: In Betaflight configuration files, feature enablement macros like USE_MAG are build options that can be controlled at compile time, while hardware instance definitions like MAG_I2C_INSTANCE are predefined in board configurations to assist with hardware mapping when those features are enabled at build time.
Learnt from: ot0tot
PR: betaflight/config#872
File: configs/HGLRCH743/config.h:82-83
Timestamp: 2025-08-20T02:54:58.596Z
Learning: For Betaflight board configuration reviews, the definitive source for validating UART pin assignments is the serial_uart_{platform}.c file in the Betaflight codebase (e.g., serial_uart_stm32h7xx.c for STM32H7xx platforms), not generic MCU datasheets. These files contain the exact pin mappings that Betaflight supports for each UART peripheral.
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.
📚 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/ZEX_ATHENA_MINI/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/ZEX_ATHENA_MINI/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/ZEX_ATHENA_MINI/config.h
📚 Learning: 2025-06-23T18:43:31.746Z
Learnt from: haslinghuis
PR: betaflight/config#822
File: configs/AXISFLYINGH7MINI/config.h:29-37
Timestamp: 2025-06-23T18:43:31.746Z
Learning: In Betaflight configuration files, feature enablement macros like USE_MAG are build options that can be controlled at compile time, while hardware instance definitions like MAG_I2C_INSTANCE are predefined in board configurations to assist with hardware mapping when those features are enabled at build time.

Applied to files:

  • configs/ZEX_ATHENA_MINI/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/ZEX_ATHENA_MINI/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/ZEX_ATHENA_MINI/config.h
📚 Learning: 2025-08-20T02:54:58.596Z
Learnt from: ot0tot
PR: betaflight/config#872
File: configs/HGLRCH743/config.h:82-83
Timestamp: 2025-08-20T02:54:58.596Z
Learning: For Betaflight board configuration reviews, the definitive source for validating UART pin assignments is the serial_uart_{platform}.c file in the Betaflight codebase (e.g., serial_uart_stm32h7xx.c for STM32H7xx platforms), not generic MCU datasheets. These files contain the exact pin mappings that Betaflight supports for each UART peripheral.

Applied to files:

  • configs/ZEX_ATHENA_MINI/config.h
📚 Learning: 2025-07-14T15:41:14.364Z
Learnt from: ot0tot
PR: betaflight/config#834
File: configs/RADIOLINKF405/config.h:79-88
Timestamp: 2025-07-14T15:41:14.364Z
Learning: In STM32F405 configurations, PB1 typically maps to TIM3_CH4 and PC9 typically maps to TIM8_CH4. These are different timers and do not share DMA resources, so there is no conflict when both pins are used simultaneously (e.g., PB1 for LED_STRIP and PC9 for MOTOR4).

Applied to files:

  • configs/ZEX_ATHENA_MINI/config.h
📚 Learning: 2025-07-03T15:17:30.040Z
Learnt from: haslinghuis
PR: betaflight/config#0
File: :0-0
Timestamp: 2025-07-03T15:17:30.040Z
Learning: In Betaflight configurations, when a target name suggests dual IMUs (like JHEF7DUAL) but specific hardware variants only have one gyro available, the preferred solution is to use DEFAULT_GYRO_TO_USE macro to specify which gyro to use by default rather than pruning gyro defines or creating redundant configurations. This approach maintains compatibility when the same target is used by multiple hardware variants from the same manufacturer.

Applied to files:

  • configs/ZEX_ATHENA_MINI/config.h
📚 Learning: 2025-08-21T11:11:19.213Z
Learnt from: haslinghuis
PR: betaflight/config#870
File: configs/ZEX_ATHENA_STD_PRO/config.h:54-55
Timestamp: 2025-08-21T11:11:19.213Z
Learning: For STM32H743 in Betaflight, UART4 can use PB8 (UART4_RX) and PB9 (UART4_TX) with GPIO_AF8_UART4, as confirmed in the official Betaflight codebase at src/platform/STM32/serial_uart_stm32h7xx.c. This is a valid pin mapping despite what some generic STM32 documentation might suggest.

Applied to files:

  • configs/ZEX_ATHENA_MINI/config.h
🔇 Additional comments (6)
configs/ZEX_ATHENA_MINI/config.h (6)

24-28: Board identity looks correct.

FC_TARGET_MCU=STM32H743 and BOARD_NAME matches the directory name (ZEX_ATHENA_MINI). Good.


39-42: Double-check GYRO_CLKIN on PA15 and sharing across both gyros.

Confirm PA15 is actually wired to both gyro CLKIN pins and that using PA15 won’t conflict with any factory SWJ/JTAG options on this board revision.


51-52: PA8 used for LED strip — ensure no MCO1 usage intended.

If you’re not using MCO1 (PA8) for gyro clocking, this is fine. Just confirm there’s no requirement to drive MCO1 on PA8 in parallel.


92-96: PINIO1 (12V BEC) wiring and UI strings look good.

PD10 as BEC12V_EN with PINIO1_BOX/BOX_USER1_NAME are consistent and user-friendly.

Also applies to: 133-136


73-88: Confirm AF support for SPI1/3/4 pin assignments
Verify that PA5/ PA6/ PD7, PB3/ PB4/ PB5 and PE12/ PE13/ PE14 use the correct alternate-function numbers for SPI1, SPI3 and SPI4 in the STM32H7 SPI driver ([spi_stm32h7xx.c] or equivalent).


53-64: UART pin mappings confirmed. All UART1–UART8 pin assignments (PA10, PD6, PD8/PD9, PB8/PB9, PE7/PE8, PE0/PE1) match the entries in src/platform/STM32/serial_uart_stm32h7xx.c.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (3)
configs/ZEX_ATHENA_MINI/config.h (3)

29-39: Gyro variants — confirm if only ICM42688P ships; add alt drivers if production mixes exist

If batches may ship BMI270/BMI323 or other ICM42xxx variants on the same socket, enable the additional drivers to allow runtime auto-detection (keeps one target for all batches).


124-131: Meter scales — request calibration confirmation

Scales (CURRENT=180, VOLTAGE=250) are often board-specific. Please confirm with bench calibration; otherwise these become user surprises.


138-139: Gyro alignment — verify against silkscreen

CW270_DEG is fine if it matches the physical orientation; quick sanity-check recommended.

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between b248341 and e6ab98f.

📒 Files selected for processing (1)
  • configs/ZEX_ATHENA_MINI/config.h (1 hunks)
🧰 Additional context used
🧠 Learnings (11)
📓 Common learnings
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.
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.
Learnt from: haslinghuis
PR: betaflight/config#656
File: configs/IFLIGHT_F745_AIO/config.h:31-35
Timestamp: 2025-07-28T16:44:59.686Z
Learning: In Betaflight board configurations, when a board design uses the same physical gyro socket but different sensor variants across production batches (e.g., MPU6000 in older batches, ICM42688P in newer batches), the correct approach is to enable both sensor drivers (USE_GYRO_SPI_MPU6000 and USE_GYRO_SPI_ICM42688P) in the same configuration. This allows runtime auto-detection of which sensor is actually present without requiring separate board configurations for each hardware variant.
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.
Learnt from: ot0tot
PR: betaflight/config#872
File: configs/HGLRCH743/config.h:82-83
Timestamp: 2025-08-20T02:54:58.596Z
Learning: For Betaflight board configuration reviews, the definitive source for validating UART pin assignments is the serial_uart_{platform}.c file in the Betaflight codebase (e.g., serial_uart_stm32h7xx.c for STM32H7xx platforms), not generic MCU datasheets. These files contain the exact pin mappings that Betaflight supports for each UART peripheral.
Learnt from: haslinghuis
PR: betaflight/config#822
File: configs/AXISFLYINGH7MINI/config.h:29-37
Timestamp: 2025-06-23T18:43:31.746Z
Learning: In Betaflight configuration files, feature enablement macros like USE_MAG are build options that can be controlled at compile time, while hardware instance definitions like MAG_I2C_INSTANCE are predefined in board configurations to assist with hardware mapping when those features are enabled at build time.
📚 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/ZEX_ATHENA_MINI/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/ZEX_ATHENA_MINI/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/ZEX_ATHENA_MINI/config.h
📚 Learning: 2025-06-23T18:43:31.746Z
Learnt from: haslinghuis
PR: betaflight/config#822
File: configs/AXISFLYINGH7MINI/config.h:29-37
Timestamp: 2025-06-23T18:43:31.746Z
Learning: In Betaflight configuration files, feature enablement macros like USE_MAG are build options that can be controlled at compile time, while hardware instance definitions like MAG_I2C_INSTANCE are predefined in board configurations to assist with hardware mapping when those features are enabled at build time.

Applied to files:

  • configs/ZEX_ATHENA_MINI/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/ZEX_ATHENA_MINI/config.h
📚 Learning: 2025-08-20T02:54:58.596Z
Learnt from: ot0tot
PR: betaflight/config#872
File: configs/HGLRCH743/config.h:82-83
Timestamp: 2025-08-20T02:54:58.596Z
Learning: For Betaflight board configuration reviews, the definitive source for validating UART pin assignments is the serial_uart_{platform}.c file in the Betaflight codebase (e.g., serial_uart_stm32h7xx.c for STM32H7xx platforms), not generic MCU datasheets. These files contain the exact pin mappings that Betaflight supports for each UART peripheral.

Applied to files:

  • configs/ZEX_ATHENA_MINI/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/ZEX_ATHENA_MINI/config.h
📚 Learning: 2025-07-14T15:41:14.364Z
Learnt from: ot0tot
PR: betaflight/config#834
File: configs/RADIOLINKF405/config.h:79-88
Timestamp: 2025-07-14T15:41:14.364Z
Learning: In STM32F405 configurations, PB1 typically maps to TIM3_CH4 and PC9 typically maps to TIM8_CH4. These are different timers and do not share DMA resources, so there is no conflict when both pins are used simultaneously (e.g., PB1 for LED_STRIP and PC9 for MOTOR4).

Applied to files:

  • configs/ZEX_ATHENA_MINI/config.h
📚 Learning: 2025-07-03T15:17:30.040Z
Learnt from: haslinghuis
PR: betaflight/config#0
File: :0-0
Timestamp: 2025-07-03T15:17:30.040Z
Learning: In Betaflight configurations, when a target name suggests dual IMUs (like JHEF7DUAL) but specific hardware variants only have one gyro available, the preferred solution is to use DEFAULT_GYRO_TO_USE macro to specify which gyro to use by default rather than pruning gyro defines or creating redundant configurations. This approach maintains compatibility when the same target is used by multiple hardware variants from the same manufacturer.

Applied to files:

  • configs/ZEX_ATHENA_MINI/config.h
📚 Learning: 2025-07-23T13:43:50.456Z
Learnt from: ot0tot
PR: betaflight/config#0
File: :0-0
Timestamp: 2025-07-23T13:43:50.456Z
Learning: For Betaflight board configuration reviews, always verify that serial port defines (like ESC_SENSOR_UART, MSP_UART, GPS_UART, etc.) use valid SERIAL_PORT identifiers that match those defined in the Betaflight codebase at src/main/io/serial.h. Common valid identifiers include SERIAL_PORT_USART1, SERIAL_PORT_USART2, SERIAL_PORT_USART3, SERIAL_PORT_UART4, SERIAL_PORT_UART5, etc. Invalid identifiers like SERIAL_PORT_UART3 (should be SERIAL_PORT_USART3) will cause build failures.

Applied to files:

  • configs/ZEX_ATHENA_MINI/config.h
🔇 Additional comments (7)
configs/ZEX_ATHENA_MINI/config.h (7)

24-28: BOARD_NAME and MCU — LGTM

BOARD_NAME matches directory, MCU is correct for H743.


42-48: Motor pins on TIM2 and TIMUP2 DMA — LGTM

PA0–PA3 on TIM2 with TIMUP2_DMA_OPT defined is consistent.

Also applies to: 112-114


85-91: SPI instances and CS lines — LGTM

MAX7456 on SPI2, flash on SPI3, gyro1 on SPI1, gyro2 on SPI4 with matching CS lines looks coherent.

Also applies to: 119-123


132-136: PINIO1 for 12V BEC — LGTM

Mapping and BOX label look good; polarity via PINIO1_CONFIG=129 aligns with common usage.


49-60: Verify UART pin mappings in the main Betaflight codebase
Confirm each RX/TX pair—PD8/PD9 (USART3), PB9/PB8 (UART4), PE8/PE7 (UART7), PE1/PE0 (UART8), PA10 (USART1_RX) and PD6 (USART2_RX)—is defined in src/platform/STM32/serial_uart_stm32h7xx.c in the core Betaflight repo to avoid build or runtime init failures.


69-72: Confirm SPI1 MOSI pin assignment for PD7
PD7 may not support SPI1 AF5 on STM32H743—verify in the reference manual; if unsupported, update SPI1_SDO_PIN to PA7 (PB5 is already used by SPI3).


92-99: Confirm PB0/PA15 timer-channel assignments & avoid TIM2_CH1 conflict

  • CAMERA_CONTROL_PIN (PB0) is mapped as TIM2_CHx in TIMER_PIN_MAPPING; verify PB0’s actual TIMx_CHx support on H7 and adjust to a valid channel.
  • GYRO_CLKIN_PIN (PA15) is mapped as TIM1_CHx but PA15 is typically TIM2_CH1 on H7; confirm its true timer-channel and ensure it doesn’t collide with MOTOR1 (TIM2_CH1).
  • Update the mappings in configs/ZEX_ATHENA_MINI/config.h (lines 103–111) to reflect the hardware’s supported TIMx–CHx and avoid DMA/timer conflicts.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

♻️ Duplicate comments (1)
configs/ZEX_ATHENA_MINI/config.h (1)

112-114: Use TIMUP2 DMA option (motors on TIM2); TIMUP5 here is misleading.

Motors map to TIM2; define TIMUP2_DMA_OPT instead of TIMUP5_DMA_OPT.

-#define TIMUP5_DMA_OPT                  10
+#define TIMUP2_DMA_OPT                  10

If LED_STRIP on TIM1 needs a TIMUP DMA, add TIMUP1_DMA_OPT as well (value chosen to avoid DMAMUX conflicts with ADC/SPI on this target).

🧹 Nitpick comments (1)
configs/ZEX_ATHENA_MINI/config.h (1)

92-101: PA15 used for GYRO_*_CLKIN and exposed as a generic timer resource — confirm intent.

If PA15 is the CLK source for one/both IMUs, exposing it via TIMER_PIN_MAPPING risks accidental reuse. Either keep it mapped (after fixing to TIM2) only if the timer-driven CLKIN implementation requires it, or remove it to reserve PA15 exclusively for CLKIN.

Also applies to: 109-110

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between e6ab98f and 3ba7c96.

📒 Files selected for processing (1)
  • configs/ZEX_ATHENA_MINI/config.h (1 hunks)
🧰 Additional context used
🧠 Learnings (11)
📓 Common learnings
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.
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.
Learnt from: haslinghuis
PR: betaflight/config#656
File: configs/IFLIGHT_F745_AIO/config.h:31-35
Timestamp: 2025-07-28T16:44:59.686Z
Learning: In Betaflight board configurations, when a board design uses the same physical gyro socket but different sensor variants across production batches (e.g., MPU6000 in older batches, ICM42688P in newer batches), the correct approach is to enable both sensor drivers (USE_GYRO_SPI_MPU6000 and USE_GYRO_SPI_ICM42688P) in the same configuration. This allows runtime auto-detection of which sensor is actually present without requiring separate board configurations for each hardware variant.
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.
Learnt from: haslinghuis
PR: betaflight/config#822
File: configs/AXISFLYINGH7MINI/config.h:29-37
Timestamp: 2025-06-23T18:43:31.746Z
Learning: In Betaflight configuration files, feature enablement macros like USE_MAG are build options that can be controlled at compile time, while hardware instance definitions like MAG_I2C_INSTANCE are predefined in board configurations to assist with hardware mapping when those features are enabled at build time.
Learnt from: ot0tot
PR: betaflight/config#872
File: configs/HGLRCH743/config.h:82-83
Timestamp: 2025-08-20T02:54:58.596Z
Learning: For Betaflight board configuration reviews, the definitive source for validating UART pin assignments is the serial_uart_{platform}.c file in the Betaflight codebase (e.g., serial_uart_stm32h7xx.c for STM32H7xx platforms), not generic MCU datasheets. These files contain the exact pin mappings that Betaflight supports for each UART peripheral.
📚 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/ZEX_ATHENA_MINI/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/ZEX_ATHENA_MINI/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/ZEX_ATHENA_MINI/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/ZEX_ATHENA_MINI/config.h
📚 Learning: 2025-08-20T02:54:58.596Z
Learnt from: ot0tot
PR: betaflight/config#872
File: configs/HGLRCH743/config.h:82-83
Timestamp: 2025-08-20T02:54:58.596Z
Learning: For Betaflight board configuration reviews, the definitive source for validating UART pin assignments is the serial_uart_{platform}.c file in the Betaflight codebase (e.g., serial_uart_stm32h7xx.c for STM32H7xx platforms), not generic MCU datasheets. These files contain the exact pin mappings that Betaflight supports for each UART peripheral.

Applied to files:

  • configs/ZEX_ATHENA_MINI/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/ZEX_ATHENA_MINI/config.h
📚 Learning: 2025-07-14T15:41:14.364Z
Learnt from: ot0tot
PR: betaflight/config#834
File: configs/RADIOLINKF405/config.h:79-88
Timestamp: 2025-07-14T15:41:14.364Z
Learning: In STM32F405 configurations, PB1 typically maps to TIM3_CH4 and PC9 typically maps to TIM8_CH4. These are different timers and do not share DMA resources, so there is no conflict when both pins are used simultaneously (e.g., PB1 for LED_STRIP and PC9 for MOTOR4).

Applied to files:

  • configs/ZEX_ATHENA_MINI/config.h
📚 Learning: 2025-06-23T18:43:31.746Z
Learnt from: haslinghuis
PR: betaflight/config#822
File: configs/AXISFLYINGH7MINI/config.h:29-37
Timestamp: 2025-06-23T18:43:31.746Z
Learning: In Betaflight configuration files, feature enablement macros like USE_MAG are build options that can be controlled at compile time, while hardware instance definitions like MAG_I2C_INSTANCE are predefined in board configurations to assist with hardware mapping when those features are enabled at build time.

Applied to files:

  • configs/ZEX_ATHENA_MINI/config.h
📚 Learning: 2025-07-03T15:17:30.040Z
Learnt from: haslinghuis
PR: betaflight/config#0
File: :0-0
Timestamp: 2025-07-03T15:17:30.040Z
Learning: In Betaflight configurations, when a target name suggests dual IMUs (like JHEF7DUAL) but specific hardware variants only have one gyro available, the preferred solution is to use DEFAULT_GYRO_TO_USE macro to specify which gyro to use by default rather than pruning gyro defines or creating redundant configurations. This approach maintains compatibility when the same target is used by multiple hardware variants from the same manufacturer.

Applied to files:

  • configs/ZEX_ATHENA_MINI/config.h
📚 Learning: 2025-07-23T13:43:50.456Z
Learnt from: ot0tot
PR: betaflight/config#0
File: :0-0
Timestamp: 2025-07-23T13:43:50.456Z
Learning: For Betaflight board configuration reviews, always verify that serial port defines (like ESC_SENSOR_UART, MSP_UART, GPS_UART, etc.) use valid SERIAL_PORT identifiers that match those defined in the Betaflight codebase at src/main/io/serial.h. Common valid identifiers include SERIAL_PORT_USART1, SERIAL_PORT_USART2, SERIAL_PORT_USART3, SERIAL_PORT_UART4, SERIAL_PORT_UART5, etc. Invalid identifiers like SERIAL_PORT_UART3 (should be SERIAL_PORT_USART3) will cause build failures.

Applied to files:

  • configs/ZEX_ATHENA_MINI/config.h
🔇 Additional comments (4)
configs/ZEX_ATHENA_MINI/config.h (4)

26-26: BOARD_NAME matches directory — good.

BOARD_NAME "ZEX_ATHENA_MINI" aligns with configs/ZEX_ATHENA_MINI/.


124-131: Meter scales: confirm factory calibration values.

DEFAULT_CURRENT_METER_SCALE=180 and DEFAULT_VOLTAGE_METER_SCALE=250 look plausible; please confirm they match production calibration for this board revision.


49-60: Ignore UART4 PB8/PB9 pin mapping concern

PB8/PB9 for UART4 on STM32H743 is officially supported in serial_uart_stm32h7xx.c with GPIO_AF8_UART4; no config change needed.

Likely an incorrect or invalid review comment.


69-72: Verify SPI1 MOSI (SDO) on PD7 is supported on STM32H7
PD7 is non-standard for SPI1 SDO—please confirm in Betaflight’s STM32H7 SPI driver (e.g. spi_stm32h7xx.c) that PD7 is a valid MOSI pin for SPI1.

@haslinghuis haslinghuis requested a review from ot0tot September 19, 2025 22:52
Copy link
Member

@sugaarK sugaarK left a comment

Choose a reason for hiding this comment

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

do we have contact with this team ?

@haslinghuis
Copy link
Member Author

@sugaarK this is produced by HAKRC

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.

5 participants