Motherboard (MB, Rev. C.2)¶
Further Documentation & Links¶
Old Gitlab Project
Power Distribution¶
The Motherboard is the unit for getting power from the batteries to the motors/motor controllers. This is achieved through four high-current planes comprising a DC bus sandwich in the PCB's core. Power is coupled into and out of the DC bus in an alternating pattern, eliminating the need for a central star point carrying the entire current, which would serve as a single point of failure.
The signal ground planes are connected to power ground (V0) in a single star point, tied together by net tie NT1.
Five different switching mode power supplies are the biggest active components on the motherboard.
Skynode Primary (5.2V, 5A)
The primary Skynode power supply is built around a TPS54561 non-synchronous buck converter.
The implementation provides an inhibit signal PSKY1_IN and an open drain power good output PSKY1_PG.
From Skynode's point of view, the primary power supply should provide not only power, but also voltage and current readings over an I²C bus. To achieve this, the motherboard processor emulates an [INA238][] power source monitor IC.
The only device connected (directly) to this net is the Skynode via J5.
Motor Mount Boards (25V, 5A)
To be able to drive high-power LEDs under the motors, the MMBs are provided 25V, at up to 20 Watts each. Like the primary Skynode supply, this SMPS is built around a TPS54561 non-synchronous buck converter.
The VMMB net supplies the six motor mount boards (switchable), and serves as primary source for the radio supply
connectors J11 and J12.
25V External (25V, 5A)
To be able to supply high-power extension boards (Raspberry Pi, CANedge, payloads, ...) with independent power,
the motherboard includes an additional 25 V regulator. A failure in the V25EXT net will have no adverse effect
on flight avionics, radio communication or navigation lights (MMB).
5V External (5V, 2A)
Similar to the external 25 net, the motherboard provides independent 5 V to extension boards.
VCAN3 (5V, 1A)
VCAN3 is the motherboard's internal logic supply.
VCAN3 provides 5V to the following consumers:
BUS_VCCfor battery packs connected to CAN3- power supply for CAN transceiver U4
- primary side of the
3V3LDO U5, which in turn supplies: - Microprocessor U1
- User LEDs, controlled by the microprocessor
- CAN transceivers' logic supply (U3 and U4)
- Temperature Sensor Multiplexers U22 and U23
- Power Monitor Multiplexer U20
- SD Card Multiplexer U18 and U19
- I²C Pull-Ups and SMB Multiplexer U7 for extension interface bus
- Humidity Sensors U24 through U27
- primary side of the
3V3ALDO U6, which supplies - Microprocessor's
VDDAandVREF+ - Temperature sensor bias
- Power supply for current sense amplifiers U13 through U17
- primary side of the
3V3_SDCLDO U21, which only supplies the Micro SD Card J14
Both the VCAN3 and the 3V3 net are independent from Skynode. The only areas of contact are the INA238 I²C bus, and
the TELEM3 UART connection.
Skynode Signal Routing¶
The motherboard is used as a breakout board to break the main Skynode Interfaces from the Molex Pico-Clasp headers to Pixhawk-friendly GH headers. This is similar to Auterion's Pixhawk Adapter Boards.
Processor and Active Logic¶
The microcontroller forms the core of the motherboard's active subsystem. None of the functions performed by the active logic are strictly essential for the Highdra operation.
The active subsystem is comprised of the following key components:
| Designator | Part | Description |
|---|---|---|
| U1 | STM32G431RBT6 | The microcontroller |
| U5 | TCAN1042 | CAN transceiver for CAN3 (µC, Batteries, MMBs) |
| U7/8 | TMUX1108 | analog 8:1-multiplexer for temperature measurements |
| U10 | IIS3DWB | high-bandwidth 3-axis vibration sensor |
| J20 | Micro-SD | Micro SD card for low-level data logging |
| U6 | DRV8876 | DC motor driver (full bridge) for landing gear actuation |
Data Storage¶
Beside the STM32 internal flash memory, SPI1 is routed to a Micro SD Card, which may eventually be used.
Usage examples: data logging, configuration management, firmware update distribution
Motherboard Data Input Sources¶
Temperature Sensors
Through U7 and U8 (two multiplexers TMUX1108), the motherboard processor has access to temperature sensors:
- 12 power connector temperature sensors
- 4 PCB temperatures measured on the motherboard itself
These sensors are sampled and broadcast to CAN for logging and health monitoring.
Vibrations Monitoring
The high-bandwidth 3-axis vibration sensor (U10, IIS3DWB) connected to SPI2 may (at some point) be used to measure body vibrations up to 6 kHz. This is low priority and will be implemented at a later stage.
Power Supply Monitoring
All voltage levels are available at the ADC of the microcontroller for internal measurements
The Skynode power supplies (PSSKY1 and PSSKY1) are equipped with an INHIBIT input and a POWER_GOOD output, all routed to the processor. This enables the motherboard logic to perform a self-test during boot, to ensure both redundant supplies are available and the failover works.
The 25 V power supplies (PSPPB and PSMMB) are equipped only with a POWER_GOOD output, which the motherboard processor may monitor for anomalies.
Skynode Gateway¶
The motherboard processor can communicate with Skynode in a few different ways, summarized below.
INA226 Power Source Monitor Emulation
I2C3: I²C slave (emulating an INA226 -- or 237).
Skynode expects an INA226 on the primary power connector's I²C lines, like implemented on the Auterion Power Module. Since the motherboard is not equipped with a power monitor chip, the motherboard has to emulate one in software.
At some point, information about the power source (battery) should be provided via DroneCAN or MAVLink, rendering this interface obsolete.
PWM
TIM1 & TIM8: PWM Input of Skynode's PWM7 and PWM8 channels.
To simplify the process of routing commands from the remote control through PX4 to the motherboard, the PX4 PWM
channels IO_PWM7 and IO_PWM8 are connected to the microprocessor's TIM1_CH1 and TIM8_CH2, respectively.
TIM1 and TIM8 both have a PWM input mode (see [RM0440][], section 28.3.10 PWM input mode), which may be used to decode
e.g. a landing gear position PWM setpoint.
28.3.10 PWM input mode ([RM0440][] p. 1108)
This mode allows to measure both the period and the duty cycle of a PWM signal connected to single tim_tix input:
The TIMx_CCR1 register holds the period value (interval between two consecutive rising edges) The TIMx_CCR2 register holds the pulsewidth (interval between two consecutive rising and falling edges)
UART & MAVLink
USART1: MAVLink connection to Skynode, connected to Skynode's TELEM3.
Via USART1, the microprocessor is connected to the Skynode's TELEM3 MAVLink port. In theory, this would enable us to perform all kinds of interaction with Skynode. In practice, this requires prior implementation of a MAVLink protocol stack, which will delay this feature for quite a while.
Landing Gear¶
The motherboard is equipped with two DC motor drivers to control the right and left landing gear actuator (U6_G1 and U6_G6). The gear control subsystem has access to positional feedback (optional) and DC motor current measurement, which will enable us to implement a control loop with as much sophistication as needed.
Processor Configuration¶
Pin Configuration¶
| Pin | Signal | Mode | OType | OSpeed | Pull | AF | Peripheral | Function |
|---|---|---|---|---|---|---|---|---|
| PA0 | SDC_SEL |
Output | OD | Low | SD Card Selection | |||
| PA1 | SDC_EN |
Output | OD | Low | SD Card Enable | |||
| PA2 | TELEM3.RX |
AF | PP | Low | 7 | USART2_TX |
MAVLink | |
| PA3 | TELEM3.TX |
AF | 7 | USART2_RX |
MAVLink | |||
| PA4 | SDC_CS |
AF | PP | Medium | 5 | SPI1_NSS |
SD Card | |
| PA5 | SDC_SCK |
AF | PP | High | 5 | SPI1_SCK |
SD Card | |
| PA6 | SDC_MISO |
AF | 5 | SPI1_MISO |
SD Card | |||
| PA7 | SDC_MOSI |
AF | PP | High | 5 | SPI1_MOSI |
SD Card | |
| PA8 | SMB_SDA |
AF | OD | Low | 4 | I2C2_SDA |
I2C SMB | |
| PA9 | SMB_SCL |
AF | OD | Low | 4 | I2C2_SCL |
I2C SMB | |
| PA10 | SMB_ALERT |
AF | OD | Low | 4 | I2C2_SMBA |
I2C SMB | |
| PA11 | PWM8 |
AF | Down | 10 | TIM4_CH1 |
PWM Input | ||
| PB12 | LED_OUT |
AF | PP | Low | 1 | TIM16_CH1 |
Safety LED | |
| PA13 | SWDIO |
AF | PP | Very High | Up | 0 | SWDIO_JTMS |
|
| PA14 | SWCLK |
AF | Down | 0 | SWCLK_JTCK |
|||
| PA15 | JTDI |
AF | Up | 0 | JTDI |
|||
| PB0 | TEMP1 |
Analog | ADC1_IN15 |
Temperatures | ||||
| PB1 | TEMP2 |
Analog | ADC1_IN12 |
Temperatures | ||||
| PB2 | V48_ADC |
Analog | ADC2_IN12 |
V48 Monitoring | ||||
| PB3 | SWO |
AF | PP | Low | 0 | SWO_JTDO |
||
| PB4 | MMB_EN1 |
Output | PP | MMB Enable | ||||
| PB5 | CAN1_RX |
AF | 9 | FDCAN2_RX |
CAN1 | |||
| PB6 | CAN1_TX |
AF | PP | Medium | 9 | FDCAN2_TX |
CAN1 | |
| PB7 | MMB_EN3 |
Output | PP | MMB Enable | ||||
| PB8 | CAN3_RX |
AF | 9 | FDCAN1_RX |
CAN3 | |||
| PB9 | CAN3_TX |
AF | PP | Medium | 9 | FDCAN1_TX |
CAN3 | |
| PB10 | MMB_EN5 |
Output | PP | MMB Enable | ||||
| PB11 | PMON |
Analog | ADC12_IN14 |
Power Monitoring | ||||
| PB12 | A0 |
Output | PP | Low | MUX Select line | |||
| PB13 | A1 |
Output | PP | Low | MUX Select line | |||
| PB14 | A2 |
Output | PP | Low | MUX Select line | |||
| PB15 | PWM7 |
AF | Down | 1 | TIM15_CH2 |
PWM Input | ||
| PC0 | LED_BLUE |
Output | OD | Status LED | ||||
| PC1 | LED_GREEN |
Output | OD | Status LED | ||||
| PC2 | LED_YELLOW |
Output | OD | Status LED | ||||
| PC3 | LED_RED |
Output | OD | Status LED | ||||
| PC4 | VSKY1_ADC |
Analog | ADC2_IN5 |
Power Monitoring | ||||
| PC5 | ISKY1_ADC |
Analog | ADC2_IN11 |
Power Monitoring | ||||
| PC6 | VSKY1_PG |
Input | Up | EXTI6 |
PSSKY1 Power Good | |||
| PC7 | VSKY1_IN |
Output | PP | Low | Down | PSSKY1 Inhibit | ||
| PC8 | PWR1.SCL |
AF | OD | Low | 8 | I2C3_SCL |
I²C Slave | |
| PC9 | PWR1.SDA |
AF | OD | Low | 8 | I2C3_SDA |
I²C Slave | |
| PC10 | DEBUG_TX |
AF | PP | Medium | 5 | UART4_TX |
Console | |
| PC11 | DEBUG_RX |
AF | 5 | UART4_RX |
Console | |||
| PC12 | MMB_EN9 |
Output | PP | MMB Enable | ||||
| PC13 | MMB_EN7 |
Output | PP | MMB Enable | ||||
| PC14 | OSC32_IN |
LSE Oscillator | ||||||
| PC15 | OSC32_OUT |
LSE Oscillator | ||||||
| PD2 | MMB_EN11 |
Output | PP | MMB Enable | ||||
| PF0 | SWITCH_IN |
Analog | ADC1_IN10 |
User Button | ||||
| PG10 | RST |
Reset Button |
ADC¶
The processor's ADC1 and ADC2 are used to measure temperatures, DC bus voltage, landing gear feedback and a few internal values. ADC1 has a regular sequence triggered by TIM6 and serviced by a circular DMA. ADC2 has an injected sequence to be triggered by software, since temperature measurement needs to be synchronized with the external multiplexer.
| ADC | Channel | Signal | Sequence | Trigger |
|---|---|---|---|---|
| 1 | 7 | GEAR1.POS |
regular SQ1 |
TIM6, 100Hz |
| 1 | 8 | GEAR1.VPROPI |
regular SQ2 |
TIM6, 100Hz |
| 1 | 6 | GEAR2.POS |
regular SQ3 |
TIM6, 100Hz |
| 1 | 9 | GEAR2.VPROPI |
regular SQ4 |
TIM6, 100Hz |
| 1 | 4 | V48_ADC |
regular SQ5 |
TIM6, 100Hz |
| 1 | 18 | VREFINT |
regular SQ6 |
TIM6, 100Hz |
| 1 | 16 | Core Temperature | regular SQ7 |
TIM6, 100Hz |
| 2 | 10 | TEMP1 |
injected JSQ1 |
software, 83Hz |
| 2 | 14 | TEMP2 |
injected JSQ2 |
software, 83Hz |
UART4¶
Debug console (logging).
TIM2¶
Landing Gear PWM output via TIM2_CH1 and TIM2_CH2. See also PA2 (GEAR_DIR) for direction setpoint and analog
position and current feedback.
TIM3¶
Timekeeper clock and FDCAN hardware timestamping.
TIM4¶
PWM Output for LED dimming?
TIM6¶
ADC Trigger.
SPI1¶
SD Card interface.
SPI2¶
IIS3DWB accelerometer interface.
FDCAN1¶
System Orchestration via CAN3 (Cyphal)
CAN (Cyphal) interface, handled by the Cyphal Library