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

hwdef: added files for Airvolute DCS2 onboard FMU #25354

Merged
merged 2 commits into from
Dec 12, 2023
Merged
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/Airvolute-DCS2_bl.bin
Binary file not shown.
1,111 changes: 1,111 additions & 0 deletions Tools/bootloaders/Airvolute-DCS2_bl.hex

Large diffs are not rendered by default.

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.
256 changes: 256 additions & 0 deletions libraries/AP_HAL_ChibiOS/hwdef/Airvolute-DCS2/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,256 @@
# Onboard FMU on Airvolute DCS2.Pilot board

DroneCore 2.0 is a modular AI-driven open architecture autopilot designed for complex use cases that combines high computational processing power, redundant connectivity, small size, and low weight.The autopilot represents a one-stop-solution for developers integrating the functionality of carrier board, companion computer, and power distribution board into a single compact form factor.
This system usually uses a "CUBE" autopilot as its primary FMU, but can use an onboard STM32H743 as the FMU. This board definition and firmware on `the ArduPilot firmware server <https://firmware.ardupilot.org>`__ is for this secondary FMU
For more informations on DCS2.Pilot board see:
https://docs.airvolute.com/dronecore-autopilot/dcs2

## Where To Buy
[email protected]

## Features

- MCU: STM32H743
- IMU: BMI088
- Barometer: BMP390
- 2 UARTS
- 2 CAN buses
- 4 PWM outputs
- PPM (RC input)
- external SPI and I2C
- SD card connector
- USB connection onboard with Jetson Host
- Ethernet

## DCS2.Pilot peripherals diagram
<img width="957" alt="DC2 Pilot peripherals" src="https://github.com/vrsanskytom/ardupilot/blob/hwdef_for_airvolute_dcs2/libraries/AP_HAL_ChibiOS/hwdef/Airvolute-DCS2/DC2.Pilot%20peripherals.png">

## DCS2.Pilot onboard FMU related connectors pinout
### Top side
<img width="818" alt="DCS2 Pilot_bottom" src="https://github.com/vrsanskytom/ardupilot/blob/hwdef_for_airvolute_dcs2/libraries/AP_HAL_ChibiOS/hwdef/Airvolute-DCS2/DCS2.Pilot_TopSide.png">

Copy link
Collaborator

Choose a reason for hiding this comment

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

Does it only have 3 UARTs?

Copy link
Collaborator

Choose a reason for hiding this comment

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

and one used as RC....

#### <ins>PPM connector (RC input)</ins>
JST GH 1.25mm pitch, 3-Pin

Matching connector JST GHR-03V-S.

RC input is configured on the PPM_SBUS_PROT pin as part of the PPM connector. Pin is connected to UART3_RX and also to analog input on TIM3_CH1. This pin supports all unidirectional RC protocols, but for it to be enabled, it is necessary to set SERIAL3_PROTOCOL as RCIN. Also RC input is shared with primary FMU, so it is default disabled on this secondary FMU.

5V supply is limited to 1A by internal current limiter.
<table border="1" class="docutils">
<tbody>
<tr>
<th>Pin </th>
<th>Signal </th>
</tr>
<tr>
<td>1</td>
<td>GND</td>
</tr>
<td>2</td>
<td>5V</td>
</tr>
<td>3</td>
<td>PPM</td>
</tr>
</tbody>
</table>

### Bottom side
<img width="811" alt="DCS2 Pilot_top" src="https://github.com/vrsanskytom/ardupilot/blob/hwdef_for_airvolute_dcs2/libraries/AP_HAL_ChibiOS/hwdef/Airvolute-DCS2/DCS2.Pilot_BottomSide.png">

#### <ins>FMU SEC. connector</ins>
JST GH 1.25mm pitch, 12-Pin

Matching connector JST GHR-12V-S.

The DCS2 Onboard FMU supports up to 4 PWM outputs. These are directly attached to the STM32H743 and support all PWM protocols as well as DShot and bi-directional DShot.
The 4 PWM outputs are in 2 groups:
PWM 1,2 in group1
PWM 3,4 in group2
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.

5V supply is limited to 1A by internal current limiter.
<table border="1" class="docutils">
<tbody>
<tr>
<th>Pin </th>
<th>Signal </th>
</tr>
<tr>
<td>1</td>
<td>GND</td>
</tr>
<td>2</td>
<td>GND</td>
</tr>
<td>3</td>
<td>GPIO/PWM output 4</td>
</tr>
</tr>
<td>4</td>
<td>GPIO/PWM output 3</td>
</tr>
</tr>
<td>5</td>
<td>GPIO/PWM output 2</td>
</tr>
</tr>
<td>6</td>
<td>GPIO/PWM output 1</td>
</tr>
</tr>
<td>7</td>
<td>Serial 1 RX</td>
</tr>
</tr>
<td>8</td>
<td>Serial 1 TX</td>
</tr>
</tr>
<td>9</td>
<td>Serial 2 RX</td>
</tr>
</tr>
<td>10</td>
<td>Serial 2 TX</td>
</tr>
</tr>
<td>11</td>
<td>5V</td>
</tr>
</tr>
<td>12</td>
<td>5V</td>
</tr>
</tbody>
</table>

#### <ins>EXT. SENS. connector</ins>
BM23PF0.8-10DS-0.35V connector

Matching connector BM23PF0.8-10DP-0.35V

This connector allows connecting external IMU with I2C and SPI data buses.

5V supply is limited to 1.9A by internal current limiter.
<table border="1" class="docutils">
<tbody>
<tr>
<th>Pin </th>
<th>Signal </th>
</tr>
<tr>
<td>1</td>
<td>SPI_MOSI</td>
</tr>
<td>2</td>
<td>SPI_MISO</td>
</tr>
<td>3</td>
<td>SPI_SCK</td>
</tr>
</tr>
<td>4</td>
<td>SPI_CS0</td>
</tr>
</tr>
<td>5</td>
<td>SPI_CS1</td>
</tr>
</tr>
<td>6</td>
<td>SPI_CS2</td>
</tr>
</tr>
<td>7</td>
<td>SPI_CS3</td>
</tr>
</tr>
<td>8</td>
<td>IMU_DRDY_EXT</td>
</tr>
</tr>
<td>9</td>
<td>I2C_SE_SDA</td>
</tr>
</tr>
<td>10</td>
<td>I2C_SE_SCL</td>
</tr>
</tr>
<td>MP1</td>
<td>5V</td>
</tr>
</tr>
<td>MP2</td>
<td>5V</td>
</tr>
</tr>
<td>MP3</td>
<td>GND</td>
</tr>
</tr>
<td>MP4</td>
<td>GND</td>
</tr>
</tbody>
</table>

#### <ins>ETH EXP. connector</ins>
505110-1692 connector

Ethernet connector is routed to FMU through onboard switch.

The onboard FMU is connected via the RMII bus with a speed of 100 Mbits.

#### <ins>SD card connector</ins>
MEM2085-00-115-00-A connector

Connector for standard microSD memory card. This card is primarily used to store flight data and logs.

## Other connectors
### CAN 1, CAN 2 connectors
The board contains two CAN buses - CAN1 and CAN 2. The buses support speeds up to 1 Mbits and in FD mode up to 8 Mbits.

These connectors are not part of DCS2.Pilot board, but they are routed on DCS2.Adapter_board. This board (DCS2.Adapter_board) is fully modular and can be modified according to the customer's requirements. For more informations see: https://docs.airvolute.com/dronecore-autopilot/dcs2/adapter-extension-boards/dcs2.-adapter-default-v1.0/connectors-and-pinouts

JST GH 1.25mm pitch, 4-Pin

Matching connector JST GHR-04V-S.

5V supply is limited to 1.9A by internal current limiter.
<table border="1" class="docutils">
<tbody>
<tr>
<th>Pin </th>
<th>Signal </th>
</tr>
<tr>
<td>1</td>
<td>5V</td>
</tr>
<td>2</td>
<td>CAN_H</td>
</tr>
<td>3</td>
<td>CAN_L</td>
</tr>
<td>4</td>
<td>GND</td>
</tr>
</tbody>
</table>

## UART Mapping

- SERIAL0 -> USB (Default baud: 115200)
- SERIAL1 -> UART1 (FMU SEC) (Default baud: 57600, Default protocol: Mavlink2 (2))
- SERIAL2 -> UART2 (FMU SEC) (Default baud: 57600, Default protocol: Mavlink2 (2))
- SERIAL3 -> UART3 (RX pin only labeled as PPM on PPM connector) (Since this is a secondary FMU, default protocol is set to NONE instead of RCIN (23))

UARTs do not have RTS/CTS. UARTs 1 and 2 are routed to FMU_SEC. connector.

## Loading Firmware

Initial bootloader load is achievable only by SDW interface. Then it is possible to flash firmware thrugh onboard USB connection with Jetson host.
4 changes: 4 additions & 0 deletions libraries/AP_HAL_ChibiOS/hwdef/Airvolute-DCS2/defaults.parm
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
SERIAL3_PROTOCOL -1
NTF_BUZZ_TYPES 0
NTF_BUZZ_VOLUME 0
SYSID_THISMAV 2
58 changes: 58 additions & 0 deletions libraries/AP_HAL_ChibiOS/hwdef/Airvolute-DCS2/hwdef-bl.dat
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# hw definition file for processing by chibios_hwdef.py
# for H743 bootloader

# MCU class and specific type
MCU STM32H7xx STM32H743xx

# crystal frequency
OSCILLATOR_HZ 16000000

# board ID for firmware load
APJ_BOARD_ID 5200

# the nucleo seems to have trouble with flashing the last sector?
FLASH_SIZE_KB 2048

# bootloader is installed at zero offset
FLASH_RESERVE_START_KB 0

# the location where the bootloader will put the firmware
# the H743 has 128k sectors
FLASH_BOOTLOADER_LOAD_KB 128

# USB setup
USB_STRING_MANUFACTURER "Airvolute"

# baudrate to run bootloader at on uarts
define BOOTLOADER_BAUDRATE 115200

# order of UARTs (and USB)
SERIAL_ORDER OTG1 USART1

# this is the pin that senses USB being connected. It is an input pin
# setup as OPENDRAIN
PA9 VBUS INPUT OPENDRAIN

# UART1 (SE_CONNECTOR)
PB14 USART1_TX USART1
PA10 USART1_RX USART1

PB1 LED_BOOTLOADER OUTPUT LOW
define HAL_LED_ON 1

define HAL_USE_SERIAL TRUE

PA11 OTG_FS_DM OTG1
PA12 OTG_FS_DP OTG1

PA13 JTMS-SWDIO SWD
PA14 JTCK-SWCLK SWD

# Add CS pins to ensure they are high in bootloader
PD12 IMU_CS0 CS
PE13 IMU_CS1 CS
PD13 BARO_CS CS
PD15 EXT_0 CS
PD14 EXT_1 CS
PD11 EXT_2 CS
PD10 EXT_3 CS
Loading