diff --git a/boards/corvon/743v1/extras/corvon_743v1_bootloader.bin b/boards/corvon/743v1/extras/corvon_743v1_bootloader.bin old mode 100644 new mode 100755 index 0875784c2c..7a90ffc25c Binary files a/boards/corvon/743v1/extras/corvon_743v1_bootloader.bin and b/boards/corvon/743v1/extras/corvon_743v1_bootloader.bin differ diff --git a/boards/corvon/743v1/src/hw_config.h b/boards/corvon/743v1/src/hw_config.h index b773631093..bd46322778 100644 --- a/boards/corvon/743v1/src/hw_config.h +++ b/boards/corvon/743v1/src/hw_config.h @@ -104,7 +104,7 @@ #define OSC_FREQ 8 #define BOARD_PIN_LED_ACTIVITY GPIO_nLED_BLUE // BLUE -#define BOARD_PIN_LED_BOOTLOADER GPIO_nLED_GREEN // GREEN +#define BOARD_PIN_LED_BOOTLOADER GPIO_nLED_RED // RED #define BOARD_LED_ON 0 #define BOARD_LED_OFF 1 diff --git a/boards/corvon/743v1/src/init.c b/boards/corvon/743v1/src/init.c index c0e1f9776c..c5e1809ee3 100644 --- a/boards/corvon/743v1/src/init.c +++ b/boards/corvon/743v1/src/init.c @@ -169,6 +169,7 @@ __EXPORT int board_app_initialize(uintptr_t arg) drv_led_start(); led_off(LED_RED); led_off(LED_BLUE); + led_off(LED_GREEN); if (board_hardfault_init(2, true) != 0) { led_on(LED_BLUE); diff --git a/boards/corvon/743v1/src/led.c b/boards/corvon/743v1/src/led.c index d7794392db..a3f7b6ec8e 100644 --- a/boards/corvon/743v1/src/led.c +++ b/boards/corvon/743v1/src/led.c @@ -63,12 +63,23 @@ extern void led_toggle(int led); __END_DECLS # define xlat(p) (p) +// index: 0=BLUE, 1=RED, 2=SAFETY, 3=GREEN static uint32_t g_ledmap[] = { - GPIO_nLED_GREEN, // Indexed by BOARD_LED_GREEN - GPIO_nLED_BLUE, // Indexed by BOARD_LED_BLUE - GPIO_nLED_RED, // Indexed by BOARD_LED_RED + GPIO_nLED_BLUE, // LED_BLUE (0) + GPIO_nLED_RED, // LED_RED (1) + 0, // LED_SAFETY (2) - no independent safety LED, use 0 placeholder + GPIO_nLED_GREEN, // LED_GREEN (3) }; +#ifndef arraySize +#define arraySize(a) (sizeof((a))/sizeof(((a)[0]))) +#endif + +static inline bool valid_led_index(int led) +{ + return (led >= 0) && ((size_t)led < arraySize(g_ledmap)); +} + __EXPORT void led_init(void) { /* Configure LED GPIOs for output */ @@ -81,6 +92,10 @@ __EXPORT void led_init(void) static void phy_set_led(int led, bool state) { + if (!valid_led_index(led)) { + return; + } + /* Drive Low to switch on */ if (g_ledmap[led] != 0) { stm32_gpiowrite(g_ledmap[led], !state); @@ -89,6 +104,10 @@ static void phy_set_led(int led, bool state) static bool phy_get_led(int led) { + if (!valid_led_index(led)) { + return false; + } + /* If Low it is on */ if (g_ledmap[led] != 0) { return !stm32_gpioread(g_ledmap[led]); diff --git a/docs/assets/flight_controller/corvon_743v1/CORVON743V1_PortsConnection.png b/docs/assets/flight_controller/corvon_743v1/CORVON743V1_PortsConnection.png new file mode 100644 index 0000000000..3eb5530054 Binary files /dev/null and b/docs/assets/flight_controller/corvon_743v1/CORVON743V1_PortsConnection.png differ diff --git a/docs/assets/flight_controller/corvon_743v1/corvon_743v1_bottom.jpg b/docs/assets/flight_controller/corvon_743v1/corvon_743v1_bottom.jpg new file mode 100644 index 0000000000..e02cd6be2c Binary files /dev/null and b/docs/assets/flight_controller/corvon_743v1/corvon_743v1_bottom.jpg differ diff --git a/docs/assets/flight_controller/corvon_743v1/corvon_743v1_top.jpg b/docs/assets/flight_controller/corvon_743v1/corvon_743v1_top.jpg new file mode 100644 index 0000000000..a0862fc7ee Binary files /dev/null and b/docs/assets/flight_controller/corvon_743v1/corvon_743v1_top.jpg differ diff --git a/docs/en/SUMMARY.md b/docs/en/SUMMARY.md index b40507f5cd..74496882a3 100644 --- a/docs/en/SUMMARY.md +++ b/docs/en/SUMMARY.md @@ -164,6 +164,7 @@ - [ARK Electronics ARKV6X](flight_controller/ark_v6x.md) - [ARK FPV Flight Controller](flight_controller/ark_fpv.md) - [ARK Pi6X Flow Flight Controller](flight_controller/ark_pi6x.md) + - [CORVON 743v1](flight_controller/corvon_743v1.md) - [CUAV Nora](flight_controller/cuav_nora.md) - [CUAV V5+ (FMUv5)](flight_controller/cuav_v5_plus.md) - [Wiring Quickstart](assembly/quick_start_cuav_v5_plus.md) diff --git a/docs/en/flight_controller/autopilot_manufacturer_supported.md b/docs/en/flight_controller/autopilot_manufacturer_supported.md index 4c33358f9f..81a28bc986 100644 --- a/docs/en/flight_controller/autopilot_manufacturer_supported.md +++ b/docs/en/flight_controller/autopilot_manufacturer_supported.md @@ -18,6 +18,7 @@ The boards in this category are: - [ARK Electronics ARKV6X](../flight_controller/ark_v6x.md) (and [ARK Electronics Pixhawk Autopilot Bus Carrier](../flight_controller/ark_pab.md)) - [ARK FPV Flight Controller](../flight_controller/ark_fpv.md) - [ARK Pi6X Flow Flight Controller](../flight_controller/ark_pi6x.md) +- [CORVON 743v1](../flight_controller/corvon_743v1.md) - [CUAV Nora](../flight_controller/cuav_nora.md) (CUAV X7 variant) - [CUAV V5+](../flight_controller/cuav_v5_plus.md) (FMUv5) - [CUAV V5 nano](../flight_controller/cuav_v5_nano.md) (FMUv5) diff --git a/docs/en/flight_controller/corvon_743v1.md b/docs/en/flight_controller/corvon_743v1.md new file mode 100644 index 0000000000..898115880f --- /dev/null +++ b/docs/en/flight_controller/corvon_743v1.md @@ -0,0 +1,109 @@ +# CORVON 743v1 + + + +:::warning +PX4 does not manufacture this (or any) autopilot. Contact the manufacturer for hardware support or compliance issues. +::: + +The _CORVON 743v1_ is a flight controller designed by Feikong Technology Co., Ltd under the CORVON brand. +It features a powerful STM32H743 processor, dual high-performance IMUs (BMI088/BMI270), and an extensive array of interfaces. + +With its highly integrated 36x36mm footprint and 9g weight, and specialized interfaces like a direct plug-and-play DJI O3 Air Unit connector, this flight controller is optimized for space-constrained FPV builds and agile multirotors that require top-tier processing power and sensor redundancy. + +The board uses [Pixhawk Autopilot Standard Connections](https://docs.px4.io/main/en/flight_controller/autopilot_pixhawk_standard.html). + + + +::: info +This flight controller is [manufacturer supported](../flight_controller/autopilot_manufacturer_supported.md). +::: +## Key Features + +- **MCU:** STM32H743VIT6 MCU (32 Bit Arm® Cortex®-M7, 480MHz, 2MB Flash, 1MB RAM) +- **IMU:** Bosch BMI088, BMI270 (Dual IMU redundancy) +- **Barometer:** DPS310 +- **Magnetometer:** IST8310 +- **OSD:** Onboard AT7456E +- **Interfaces:** + - 7x UARTs + - 1x CAN (UAVCAN) + - 1x I2C + - Dedicated RC Input (UART6) + - 10x PWM outputs (DShot & Bi-Directional DShot supported) + - Dedicated DJI O3 Air Unit connector +- **Power:** + - 9V 3A BEC + - 5V 3A BEC + - ADC for battery voltage (up to 6S) and current monitoring + +## Where to Buy + +Order from [CORVON](https://corvon.tech). + +## Physical / Mechanical + +- **Mounting:** 30.5 x 30.5mm, Φ4mm +- **Dimensions:** 36 x 36 x 8 mm +- **Weight:** 9g + +## Specifications + +### Processors & Sensors + +- **FMU Processor:** STM32H743 + - 32 Bit Arm® Cortex®-M7, 480MHz + - 2MB Flash, 1MB RAM +- **On-board Sensors:** + - Accel/Gyro: Bosch BMI088, BMI270 + - Barometer: DPS310 + - Compass: IST8310 + +### Power Configuration + +The board has an internal voltage sensor and connections on the ESC connector for an external current sensor. +- The voltage sensor handles up to 6S LiPo batteries. +- Two onboard BECs provide robust peripheral power (9V 3A and 5V 3A). + +## Connectors & Pinouts + +The following image shows the port connection details, including RC, UARTs, CAN, I2C, SWD Debug, and VTX connections. + + + +### Standard Serial Port Mapping + +| UART | PX4 Target Config | Default Usage | +| ------ | ----------------- | ------------- | +| USART1 | TELEM1 | MAVLink | +| UART4 | TELEM2 | MAVLink | +| USART2 | GPS1 | GPS | +| USART3 | TELEM3 | | +| UART8 | URT6 | | +| USART6 | RC | RC Input | +| UART7 | TELEM4 | ESC Telemetry | + +### Debug Port + +The board features a **4-pin SWD Debug** interface located on the right side of the board. This includes `SWCLK`, `SWDIO`, `3V3`, and `GND` for full hardware debugging. While a dedicated UART isn't strictly reserved for the NSH console by default, the full-speed USB connection provides MAVLink Console access out of the box. + +### RC Input + +RC Input is mapped to **UART6** via the explicit `SBUS/CRSF` connector block. +- It fully supports PX4's standard `RC_INPUT` module protocols. +- The connector exposes both `RX6` and `TX6`, which makes it fully capable of bidirectional receiver protocols such as TBS Crossfire (CRSF), ELRS, and FPort, as well as traditional single-wire standards like SBUS (which operates inverted on RX6). + +## Building/Loading Firmware + +::: tip +Most users will not need to build this firmware (from PX4 v1.18). +It is pre-built and automatically installed by _QGroundControl_ when appropriate hardware is connected. +::: + +To [build PX4](../dev_setup/building_px4.md) for this target from source: + +```sh +make corvon_743v1_default +``` + +Initial firmware flashing can be done over USB via QGroundControl. The bootloader status aligns with standard generic PX4 LED indications (Red = Bootloader/Error, Blue = Active/Activity, Green = Powered).