Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add the SULILGH7 flight controller board #29209

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added Tools/bootloaders/SULILGH7-P1-P2_bl.bin
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
112 changes: 112 additions & 0 deletions libraries/AP_HAL_ChibiOS/hwdef/SULILGH7-P1-P2/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
# SULILGH7P1/P2 Flight Controller

# Our firmware will be compatible with SULILGH7-P1 and SULILGH7-P2.

Got it! Here is the link to your open-source hardware: https://oshwhub.com/shuyedeye/p1-flight-control. Let me know if you need assistance with anything else related to your project!


<img src="P1.jpg" alt="" width="400">

## Features:
- Separate flight control core design.
- MCU
STM32H743IIK6 32-bit processor running at 480MHz
2MB Flash
1MB RAM
- IO MCU
STM32F103
- Sensors
- IMU:
P2:Internal Vibration Isolation for IMUs
P2:IMU constant temperature heating(1 W heating power).
With Triple Synced IMUs, BalancedGyro technology, low noise and more shock-resistant:
IMU1-BMI088(With vibration isolation)
IMU2-ICM42688-P(With vibration isolation)
IMU3-ICM20689(No vibration isolation)
- Baro:
Two barometers:Baro1-BMP581 , Baro2-ICP20100
Magnetometer: Builtin IST8310 magnetometer


## UART Mapping
The UARTs are marked Rn and Tn in the above pinouts. The Rn pin is the receive pin for UARTn. The Tn pin is the transmit pin for UARTn.
| Name | Function | MCU PINS | DMA |
| :-----: | :------: | :------: | :------:|
| SERIAL0 | OTG1 | USB |
| SERIAL1 | Telem1 | USART2 |DMA Enabled |
| SERIAL2 | Telem2 | USART3 |DMA Enabled |
| SERIAL3 | GPS1 | USART1 |DMA Enabled |
| SERIAL4 | GPS2 | UART4 |DMA Enabled |
| SERIAL5 | RC | UART8 |DMA Enabled |
| SERIAL7 |FMU DEBUG | USART7 |DMA Enabled |
| SERIAL8 | OTG-SLCAN| USB |

## RC Input
The RCIN pin, which by default is mapped to a timer input, can be used for all ArduPilot supported receiver protocols, except CRSF/ELRS and SRXL2 which require a true UART connection. However, FPort, when connected in this manner, will only provide RC without telemetry.

To allow CRSF and embedded telemetry available in Fport, CRSF, and SRXL2 receivers, a full UART, such as SERIAL5 (UART8) would need to be used for receiver connections. Below are setups using Serial5.

* :ref:`SERIAL5_PROTOCOL<SERIAL5_PROTOCOL>` should be set to “23”.
* FPort would require [SERIAL5_OPTIONS](https://ardupilot.org/copter/docs/parameters.html#serial6-options) be set to “15”.
* CRSF would require :ref:`SERIAL6_OPTIONS<SERIAL6_OPTIONS>` be set to “0”.
* SRXL2 would require :ref:`SERIAL6_OPTIONS<SERIAL6_OPTIONS>` be set to “4” and connects only the TX pin.

Any UART can also be used for RC system connections in ArduPilot and is compatible with all protocols except PPM. See :ref:`Radio Control Systems <common-rc-systems>` for details.

## PWM Output
The SULILLGH7-P1/P2 flight controller supports up to 16 PWM outputs.
First 8 outputs (labelled 1 to 8) are controlled by a dedicated STM32F103 IO controller.
The remaining 8 outputs (labelled 9 to 16) are the "auxiliary" outputs. These are directly attached to the STM32H753 FMU controller.
All 16 outputs support normal PWM output formats. All 16 outputs support DShot, except 15 and 16.

The 8 IO PWM outputs are in 4 groups:
- Outputs 1 and 2 in group1
- Outputs 3 and 4 in group2
- Outputs 5, 6, 7 and 8 in group3

The 8 FMU PWM outputs are in 4 groups:
- Outputs 1, 2, 3 and 4 in group1
- Outputs 5 and 6 in group2
- Outputs 7 and 8 in group3

Channels within the same group need to use the same output rate. If any channel in a group uses DShot then all channels in the group need to use DShot.

## GPIO
All PWM outputs can be used as GPIOs (relays, camera, RPM etc). To use them you need to set the output’s SERVOx_FUNCTION to -1. The numbering of the GPIOs for PIN variables in ArduPilot is:

<table>
<tr>
<th colspan="3">IO Pins</th>
<th colspan="1"> </th>
<th colspan="3">FMU Pins</th>
</tr>
<tr><td> Name </td><td> Value </td><td> Option </td><td> </td><td> Name </td><td> Value </td><td> Option </td></tr>
<tr><td> M1 </td><td> 101 </td> <td> MainOut1 </td><td> </td><td> M9 </td><td> 50 </td><td> AuxOut1 </td></tr>
<tr><td> M2 </td><td> 102 </td> <td> MainOut2 </td><td> </td><td> M10 </td><td> 51 </td><td> AuxOut2 </td></tr>
<tr><td> M3 </td><td> 103 </td> <td> MainOut3 </td><td> </td><td> M11 </td><td> 52 </td><td> AuxOut3 </td></tr>
<tr><td> M4 </td><td> 104 </td> <td> MainOut4 </td><td> </td><td> M12 </td><td> 53 </td><td> AuxOut4 </td></tr>
<tr><td> M5 </td><td> 105 </td> <td> MainOut5 </td><td> </td><td> M13 </td><td> 54 </td><td> AuxOut5 </td></tr>
<tr><td> M6 </td><td> 106 </td> <td> MainOut6 </td><td> </td><td> M14 </td><td> 55 </td><td> AuxOut6 </td></tr>
<tr><td> M7 </td><td> 107 </td> <td> MainOut7 </td><td> </td><td> M15 </td><td> 56 </td><td> </td></tr>
<tr><td> M8 </td><td> 108 </td> <td> MainOut8 </td><td> </td><td> M16 </td><td> 57 </td><td> BB Blue GPo pin 3 </td></tr>
<tr><td> </td><td> </td> <td> </td><td> </td><td> FCU CAP </td><td> 58 </td><td> </td></tr>
</table>

## Battery Monitoring
The P1/P2 flight controllers have 4 power interfaces, two that support I2C and two that support CAN.
These are set by default in the firmware and shouldn't need to be adjusted.

## Compass
The P1/P2 flight controllers have an integrated IST8310 high-precision magnetometer.

## Analog inputs
The P1/P2 flight controller has 2 analog inputs.
- ADC Pin12 -> ADC 6.6V Sense
- ADC Pin13 -> ADC 3.3V Sense
- RSSI input pin = 103

## Loading Firmware

The board comes pre-installed with an ArduPilot compatible bootloader, allowing the loading of xxxxxx.apj firmware files with any ArduPilot compatible ground station.

Firmware for these boards can be found [here](https://firmware.ardupilot.org/) in sub-folders labeled “SULIGH7-P1-P2”.
5 changes: 5 additions & 0 deletions libraries/AP_HAL_ChibiOS/hwdef/SULILGH7-P1-P2/defaults.parm
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
CAN_P1_DRIVER 1
CAN_P2_DRIVER 1

BATT_MONITOR 8
GPS1_TYPE
108 changes: 108 additions & 0 deletions libraries/AP_HAL_ChibiOS/hwdef/SULILGH7-P1-P2/hwdef-bl.dat
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
# hw definition file for processing by chibios_hwdef.py
# for the SULILGH7_P1 hardware

# MCU class and specific type
MCU STM32H7xx STM32H743xx

# crystal frequency
OSCILLATOR_HZ 16000000

# board ID for firmware load
APJ_BOARD_ID AP_HW_SULILGH7-P1-P2

# bootloader is installed at zero offset
FLASH_RESERVE_START_KB 0

# the location where the bootloader will put the firmware
FLASH_BOOTLOADER_LOAD_KB 128

# flash size
FLASH_SIZE_KB 2048

# ChibiOS system timer
STM32_ST_USE_TIMER 2

env OPTIMIZE -Os

# order of UARTs (and USB)
SERIAL_ORDER OTG1 UART7 USART2 USART3

# USB
PA11 OTG_FS_DM OTG1
PA12 OTG_FS_DP OTG1
PA9 VBUS INPUT OPENDRAIN

# pins for SWD debugging
PA13 JTMS-SWDIO SWD
PA14 JTCK-SWCLK SWD

# CS pins
PI9 ICM20689_CS CS
PH5 BMP_581_CS CS
PI4 BMI088_A_CS CS
PI8 BMI088_G_CS CS
PH15 ICM_42688_CS CS
PG7 FRAM_CS CS
PC2 EXT1_CS CS
PC3 EXT2_CS CS

# DEBUG
PE8 UART7_TX UART7
PE7 UART7_RX UART7

# telem1
PD5 USART2_TX USART2
PA3 USART2_RX USART2
PD4 USART2_RTS USART2
PD3 USART2_CTS USART2

# telem2
PD8 USART3_TX USART3
PD9 USART3_RX USART3
PD12 USART3_RTS USART3
PD11 USART3_CTS USART3

# LEDs
PE3 LED_RED OUTPUT OPENDRAIN HIGH # red
PE4 LED_ACTIVITY OUTPUT OPENDRAIN HIGH # blue
PE5 LED_BOOTLOADER OUTPUT OPENDRAIN HIGH # green

define HAL_LED_ON 0

#define HAL_USE_EMPTY_STORAGE 1
define HAL_STORAGE_SIZE 16384

# enable DFU by default
ENABLE_DFU_BOOT 1

# support flashing from SD card:
# power enable pins
PG3 VDD_3V3_SD_CARD_EN OUTPUT HIGH
PG6 VDD_3V3_IMU_EN OUTPUT HIGH

# FATFS support:
define CH_CFG_USE_MEMCORE 1
define CH_CFG_USE_HEAP 1
define CH_CFG_USE_SEMAPHORES 0
define CH_CFG_USE_MUTEXES 1
define CH_CFG_USE_DYNAMIC 1
define CH_CFG_USE_WAITEXIT 1
define CH_CFG_USE_REGISTRY 1

# microSD support
PD6 SDMMC2_CK SDMMC2
PD7 SDMMC2_CMD SDMMC2
PB14 SDMMC2_D0 SDMMC2
PB15 SDMMC2_D1 SDMMC2
PG11 SDMMC2_D2 SDMMC2
PB4 SDMMC2_D3 SDMMC2
define FATFS_HAL_DEVICE SDCD2

DMA_PRIORITY SDMMC* USART6* ADC* UART* USART* SPI* TIM*

# enable FAT filesystem support (needs a microSD defined via SDMMC)
define HAL_OS_FATFS_IO 1

define BOOTLOADER_DEBUG SD7

define AP_BOOTLOADER_FLASH_FROM_SD_ENABLED 1
Loading
Loading