[board] basic support of matek h743 slim (#3001)

only flashing with DFU for now
default orientation for MPU6000 imu
fix small bugs
This commit is contained in:
Gautier Hattenberger
2023-03-06 18:03:00 +01:00
committed by GitHub
parent b152b927b3
commit 7f620c0449
18 changed files with 3045 additions and 10 deletions
+280
View File
@@ -0,0 +1,280 @@
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
<airframe name="Matek_H743">
<description>
Mateksys FC H743 SLIM test board
</description>
<firmware name="rotorcraft">
<configure name="RTOS_DEBUG" value="0"/>
<configure name="PERIODIC_FREQUENCY" value="500"/>
<target name="ap" board="matek_h743_slim">
</target>
<target name="nps" board="pc">
<module name="fdm" type="jsbsim"/>
</target>
<module name="radio_control" type="sbus"/>
<module name="motor_mixing"/>
<module name="actuators" type="pwm">
<define name="SERVO_HZ" value="400"/>
</module>
<module name="telemetry" type="transparent">
<configure name="MODEM_PORT" value="usb_serial"/>
</module>
<module name="imu" type="matek_h743_slim">
<define name="IMU_MPU_GYRO_RANGE" value="MPU60X0_GYRO_RANGE_1000"/>
<define name="IMU_MPU_ACCEL_RANGE" value="MPU60X0_ACCEL_RANGE_8G"/>
</module>
<module name="gps" type="optitrack"/>
<configure name="USE_MAGNETOMETER" value="FALSE"/>
<module name="stabilization" type="int_quat"/>
<module name="ahrs" type="int_cmpl_quat"/>
<module name="ins"/>
<module name="air_data"/>
<module name="sys_mon"/>
<module name="shell">
<configure name="SHELL_PORT" value="usb_serial_debug"/>
</module>
</firmware>
<servos driver="Pwm">
<servo name="FL" no="4" min="1000" neutral="1200" max="2000"/>
<servo name="FR" no="2" min="1000" neutral="1200" max="2000"/>
<servo name="BR" no="1" min="1000" neutral="1200" max="2000"/>
<servo name="BL" no="3" min="1000" neutral="1200" max="2000"/>
</servos>
<commands>
<axis name="ROLL" failsafe_value="0"/>
<axis name="PITCH" failsafe_value="0"/>
<axis name="YAW" failsafe_value="0"/>
<axis name="THRUST" failsafe_value="0"/>
</commands>
<section name="MIXING" prefix="MOTOR_MIXING_">
<!-- front left (CW), front right (CCW), back right (CW), back left (CCW) -->
<define name="TYPE" value="QUAD_X"/>
</section>
<command_laws>
<call fun="motor_mixing_run(autopilot_get_motors_on(),FALSE,values)"/>
<set servo="FL" value="motor_mixing.commands[MOTOR_FRONT_LEFT]"/>
<set servo="FR" value="motor_mixing.commands[MOTOR_FRONT_RIGHT]"/>
<set servo="BR" value="motor_mixing.commands[MOTOR_BACK_RIGHT]"/>
<set servo="BL" value="motor_mixing.commands[MOTOR_BACK_LEFT]"/>
</command_laws>
<section name="IMU" prefix="IMU_">
<define name="GYRO_P_SIGN" value="1"/>
<define name="GYRO_Q_SIGN" value="1"/>
<define name="GYRO_R_SIGN" value="1"/>
<define name="ACCEL_X_SIGN" value="1"/>
<define name="ACCEL_Y_SIGN" value="1"/>
<define name="ACCEL_Z_SIGN" value="1"/>
<define name="ACCEL_X_NEUTRAL" value="-42"/>
<define name="ACCEL_Y_NEUTRAL" value="64"/>
<define name="ACCEL_Z_NEUTRAL" value="-155"/>
<define name="ACCEL_X_SENS" value="2.43600300517" integer="16"/>
<define name="ACCEL_Y_SENS" value="2.43442233815" integer="16"/>
<define name="ACCEL_Z_SENS" value="2.46007236396" integer="16"/>
<!-- MPU MAG -->
<define name="MAG_X_SIGN" value="1"/>
<define name="MAG_Y_SIGN" value="1"/>
<define name="MAG_Z_SIGN" value="-1"/>
<define name="MAG_X_NEUTRAL" value="-53"/>
<define name="MAG_Y_NEUTRAL" value="-17"/>
<define name="MAG_Z_NEUTRAL" value="-29"/>
<define name="MAG_X_SENS" value="14.1339051912" integer="16"/>
<define name="MAG_Y_SENS" value="15.9334896814" integer="16"/>
<define name="MAG_Z_SENS" value="15.9429325263" integer="16"/>
<!--define name= "MAG_X_CURRENT_COEF" value="0.0350248861409"/>
<define name= "MAG_Y_CURRENT_COEF" value="-0.0118884242797"/>
<define name= "MAG_Z_CURRENT_COEF" value="0.0176235525201"/-->
<define name="BODY_TO_IMU_PHI" value="0." unit="deg"/>
<define name="BODY_TO_IMU_THETA" value="0." unit="deg"/>
<define name="BODY_TO_IMU_PSI" value="0." unit="deg"/>
</section>
<section name="AHRS" prefix="AHRS_">
<!-- values used if no GPS fix, on 3D fix is update by geo_mag module if loaded -->
<!-- Toulouse -->
<define name="H_X" value="0.513081"/>
<define name="H_Y" value="-0.00242783"/>
<define name="H_Z" value="0.858336"/>
<define name="HEADING_UPDATE_GPS_MIN_SPEED" value="0"/>
<define name="USE_GPS_HEADING" value="TRUE"/>
<define name="GRAVITY_HEURISTIC_FACTOR" value="0"/>
</section>
<section name="STABILIZATION_RATE" prefix="STABILIZATION_RATE_">
<!-- setpoints -->
<define name="SP_MAX_P" value="300" unit="deg/s"/>
<define name="SP_MAX_Q" value="300" unit="deg/s"/>
<define name="SP_MAX_R" value="240" unit="deg/s"/>
<define name="DEADBAND_P" value="20"/>
<define name="DEADBAND_Q" value="20"/>
<define name="DEADBAND_R" value="200"/>
<!-- feedback -->
<define name="GAIN_P" value="1000"/>
<define name="GAIN_Q" value="1000"/>
<define name="GAIN_R" value="800"/>
<define name="IGAIN_P" value="75"/>
<define name="IGAIN_Q" value="75"/>
<define name="IGAIN_R" value="50"/>
</section>
<section name="STABILIZATION_ATTITUDE" prefix="STABILIZATION_ATTITUDE_">
<!-- setpoints -->
<define name="SP_MAX_PHI" value="45." unit="deg"/>
<define name="SP_MAX_THETA" value="45." unit="deg"/>
<define name="SP_MAX_R" value="200." unit="deg/s"/>
<define name="DEADBAND_A" value="0"/>
<define name="DEADBAND_E" value="0"/>
<define name="DEADBAND_R" value="250"/>
<!-- reference -->
<define name="REF_OMEGA_P" value="400" unit="deg/s"/>
<define name="REF_ZETA_P" value="0.85"/>
<define name="REF_MAX_P" value="400." unit="deg/s"/>
<define name="REF_MAX_PDOT" value="RadOfDeg(8000.)"/>
<define name="REF_OMEGA_Q" value="400" unit="deg/s"/>
<define name="REF_ZETA_Q" value="0.85"/>
<define name="REF_MAX_Q" value="400." unit="deg/s"/>
<define name="REF_MAX_QDOT" value="RadOfDeg(8000.)"/>
<define name="REF_OMEGA_R" value="250" unit="deg/s"/>
<define name="REF_ZETA_R" value="0.85"/>
<define name="REF_MAX_R" value="250." unit="deg/s"/>
<define name="REF_MAX_RDOT" value="RadOfDeg(1800.)"/>
<!-- feedback -->
<define name="PHI_PGAIN" value="500"/>
<define name="PHI_DGAIN" value="260"/>
<define name="PHI_IGAIN" value="100"/>
<define name="THETA_PGAIN" value="500"/>
<define name="THETA_DGAIN" value="260"/>
<define name="THETA_IGAIN" value="100"/>
<define name="PSI_PGAIN" value="1279"/>
<define name="PSI_DGAIN" value="802"/>
<define name="PSI_IGAIN" value="31"/>
<!-- feedforward -->
<define name="PHI_DDGAIN" value="300"/>
<define name="THETA_DDGAIN" value="300"/>
<define name="PSI_DDGAIN" value="300"/>
</section>
<section name="STABILIZATION_ATTITUDE_INDI" prefix="STABILIZATION_INDI_">
<!-- control effectiveness -->
<!--define name="G1_P" value="0.018284"/>
<define name="G1_Q" value="0.017385"/>
<define name="G1_R" value="0.0024217"/>
<define name="G2_R" value="-0.30628"/-->
<define name="G1_P" value="0.025483"/>
<define name="G1_Q" value="0.022144"/>
<define name="G1_R" value="0.0023438"/>
<define name="G2_R" value="-0.23538"/>
<define name="FILTER_ROLL_RATE" value="TRUE"/>
<define name="FILTER_PITCH_RATE" value="TRUE"/>
<define name="FILTER_YAW_RATE" value="FALSE"/>
<!-- reference acceleration for attitude control -->
<define name="REF_ERR_P" value="170.0"/>
<define name="REF_ERR_Q" value="600.0"/>
<define name="REF_ERR_R" value="600.0"/>
<define name="REF_RATE_P" value="14.3"/>
<define name="REF_RATE_Q" value="28.0"/>
<define name="REF_RATE_R" value="28.0"/>
<!-- second order filter parameters -->
<define name="FILT_CUTOFF" value="3.2"/>
<define name="FILT_CUTOFF_R" value="3.2"/>
<!-- first order actuator dynamics -->
<define name="ACT_DYN_P" value="0.06"/>
<define name="ACT_DYN_Q" value="0.06"/>
<define name="ACT_DYN_R" value="0.06"/>
<!-- Adaptive Learning Rate -->
<define name="USE_ADAPTIVE" value="FALSE"/>
<define name="ADAPTIVE_MU" value="0.0001"/>
</section>
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
<define name="HOVER_KP" value="150"/>
<define name="HOVER_KD" value="80"/>
<define name="HOVER_KI" value="20"/>
<define name="NOMINAL_HOVER_THROTTLE" value="0.35"/>
<define name="ADAPT_THROTTLE_ENABLED" value="TRUE"/>
</section>
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
<define name="REF_MAX_SPEED" value="0.5" unit="m/s"/>
<define name="MAX_BANK" value="20" unit="deg"/>
<define name="USE_SPEED_REF" value="TRUE"/>
<define name="PGAIN" value="180"/>
<define name="DGAIN" value="180"/>
<define name="AGAIN" value="0"/>
<define name="IGAIN" value="30"/>
</section>
<section name="NAVIGATION" prefix="NAV_">
<define name="DESCEND_VSPEED" value="-0.4"/>
<define name="CLIMB_VSPEED" value="0.25"/>
</section>
<section name="SIMULATOR" prefix="NPS_">
<define name="ACTUATOR_NAMES" value="nw_motor, ne_motor, se_motor, sw_motor" type="string[]"/>
<define name="JSBSIM_MODEL" value="HOOPERFLY/hooperfly_teensyfly_quad" type="string"/>
<!-- mode switch on joystick channel 5 (axis numbering starting at zero) -->
<define name="JS_AXIS_MODE" value="4"/>
</section>
<section name="AUTOPILOT">
<define name="MODE_STARTUP" value="AP_MODE_NAV"/>
<define name="MODE_MANUAL" value="AP_MODE_ATTITUDE_DIRECT"/>
<define name="MODE_AUTO1" value="AP_MODE_HOVER_Z_HOLD"/>
<define name="MODE_AUTO2" value="AP_MODE_NAV"/>
<define name="ARRIVED_AT_WAYPOINT" value="0.5"/>
</section>
<section name="BAT">
<define name="CATASTROPHIC_BAT_LEVEL" value="9.3" unit="V"/>
<define name="CRITIC_BAT_LEVEL" value="9.8" unit="V"/>
<define name="LOW_BAT_LEVEL" value="10.5" unit="V"/>
<define name="MAX_BAT_LEVEL" value="12.4" unit="V"/>
<define name="MILLIAMP_AT_FULL_THROTTLE" value="20000" unit="mA"/>
<define name="MILLIAMP_AT_IDLE_THROTTLE" value="1000" unit="mA"/>
<define name="CURRENT_ESTIMATION_NONLINEARITY" value="1.0"/>
</section>
<section name="GCS">
<define name="ALT_SHIFT_PLUS_PLUS" value="5"/>
<define name="ALT_SHIFT_PLUS" value="1"/>
<define name="ALT_SHIFT_MINUS" value="-1"/>
<define name="AC_ICON" value="quadrotor_x"/>
</section>
</airframe>
+83
View File
@@ -0,0 +1,83 @@
# Hey Emacs, this is a -*- makefile -*-
#
# matek_h743_slim.makefile
#
# This is for the Flight Controller Matek H743 SLIM
# See http://www.mateksys.com/?portfolio=h743-slim for details
#
BOARD=mateksys
BOARD_VERSION=FC-H743-SLIM
BOARD_DIR=$(BOARD)/$(BOARD_VERSION)
BOARD_CFG=\"arch/chibios/common_board.h\"
ARCH=chibios
$(TARGET).ARCHDIR = $(ARCH)
RTOS=chibios
MCU=cortex-m7
# FPU on H7
USE_FPU=hard
USE_FPU_OPT= -mfpu=fpv5-d16
USE_LTO ?= yes
$(TARGET).CFLAGS += -DPPRZLINK_ENABLE_FD
##############################################################################
# Architecture or project specific options
#
# Define project name here (target)
PROJECT = $(TARGET)
# Project specific files and paths (see Makefile.chibios for details)
CHIBIOS_BOARD_PLATFORM = STM32H7xx/platform.mk
CHIBIOS_LINKER_DIR = $(PAPARAZZI_SRC)/sw/airborne/arch/chibios/
CHIBIOS_BOARD_LINKER = STM32H743xI_no_bl.ld
CHIBIOS_BOARD_STARTUP = startup_stm32h7xx.mk
##############################################################################
# Compiler settings
#
# default flash mode is the DFU
# possibilities: DFU-UTIL, SWD, PX4 bootloader
FLASH_MODE ?= DFU-UTIL
DFU_ADDR = 0x08000000
PX4_TARGET = "ap"
PX4_PROTOTYPE ?= "${PAPARAZZI_HOME}/sw/tools/px4/matek_h743_slim.prototype"
PX4_BL_PORT ?= "/dev/serial/by-id/usb-*_MatekH743_*"
#
# default LED configuration
#
SDLOG_LED ?= none
RADIO_CONTROL_LED ?= none
BARO_LED ?= none
AHRS_ALIGNER_LED ?= 2
GPS_LED ?= none
SYS_TIME_LED ?= 1
#
# default UART configuration (modem, gps, spektrum)
#
SBUS_PORT ?= UART6
RADIO_CONTROL_SPEKTRUM_PRIMARY_PORT ?= UART6
MODEM_PORT ?= UART7
MODEM_BAUD ?= B57600
GPS_PORT ?= UART2
GPS_BAUD ?= B57600
#
# default actuator configuration
#
# you can use different actuators by adding a configure option to your firmware section
# e.g. <configure name="ACTUATORS" value="actuators_ppm/>
# and by setting the correct "driver" attribute in servo section
# e.g. <servo driver="Ppm">
#
ACTUATORS ?= actuators_pwm
+1
View File
@@ -102,6 +102,7 @@
<board name="px4fmu_.*"/>
<board name="px4io_.*"/>
<board name="cube_.*"/>
<board name="matek_.*"/>
</boards>
</mode>
<mode name="JTAG (OpenOCD)">
+14
View File
@@ -0,0 +1,14 @@
<!DOCTYPE module SYSTEM "../module.dtd">
<module name="matek_h743_slim" dir="boards">
<doc>
<description>
Specific configuration for Mateksys H743 SLIM
</description>
</doc>
<dep>
<depends>hard_fault_recovery</depends>
</dep>
<makefile target="!sim|nps|fbw"/>
</module>
+21
View File
@@ -0,0 +1,21 @@
<!DOCTYPE module SYSTEM "module.dtd">
<module name="imu_matek_h743_slim" dir="imu" task="sensors">
<doc>
<description>
Default settings for Matek H743 SLIM imu
MPU6000 IMU via SPI.
</description>
</doc>
<autoload name="imu_mpu6000"/>
<makefile target="!sim|nps|fbw">
<configure name="IMU_MPU_SPI_DEV" value="spi1" case="upper|lower"/>
<configure name="IMU_MPU_SPI_SLAVE_IDX" value="SPI_SLAVE5"/>
<define name="IMU_MPU_CHAN_X" value="0"/>
<define name="IMU_MPU_CHAN_Y" value="1"/>
<define name="IMU_MPU_CHAN_Z" value="2"/>
<define name="IMU_MPU_X_SIGN" value="-1"/>
<define name="IMU_MPU_Y_SIGN" value="-1"/>
<define name="IMU_MPU_Z_SIGN" value="1"/>
</makefile>
</module>
@@ -0,0 +1,139 @@
/*
ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/*
* STM32H743xI generic setup.
*
* AXI SRAM - BSS, Data, Heap.
* SRAM1+SRAM2 - None.
* SRAM3 - NOCACHE, ETH.
* SRAM4 - None.
* DTCM-RAM - Main Stack, Process Stack.
* ITCM-RAM - None.
* BCKP SRAM - None.
*/
MEMORY
{
flash0 (rx) : org = 0x08000000, len = 2M /* Flash bank1+bank2 */
flash1 (rx) : org = 0x08000000, len = 1M /* Flash bank 1 */
flash2 (rx) : org = 0x08100000, len = 1M /* Flash bank 2 */
flash3 (rx) : org = 0x00000000, len = 0
flash4 (rx) : org = 0x00000000, len = 0
flash5 (rx) : org = 0x00000000, len = 0
flash6 (rx) : org = 0x00000000, len = 0
flash7 (rx) : org = 0x00000000, len = 0
ram0 (wx) : org = 0x24000000, len = 64k /* AXI SRAM no-cache*/
ram1 (wx) : org = 0x24010000, len = 448k /* AXI SRAM cached */
ram2 (wx) : org = 0x30000000, len = 288k /* AHB SRAM1+SRAM2+SRAM3 */
ram3 (wx) : org = 0x30040000, len = 32k /* AHB SRAM3 */
ram4 (wx) : org = 0x38000000, len = 64k /* AHB SRAM4 */
ram5 (wx) : org = 0x20000000, len = 128k /* DTCM-RAM */
ram6 (wx) : org = 0x00000000, len = 64k /* ITCM-RAM */
ram7 (wx) : org = 0x38800000, len = 4k /* BCKP SRAM */
}
/* For each data/text section two region are defined, a virtual region
and a load region (_LMA suffix).*/
/* Flash region to be used for exception vectors.*/
REGION_ALIAS("VECTORS_FLASH", flash0);
REGION_ALIAS("VECTORS_FLASH_LMA", flash0);
/* Flash region to be used for constructors and destructors.*/
REGION_ALIAS("XTORS_FLASH", flash0);
REGION_ALIAS("XTORS_FLASH_LMA", flash0);
/* Flash region to be used for code text.*/
REGION_ALIAS("TEXT_FLASH", flash0);
REGION_ALIAS("TEXT_FLASH_LMA", flash0);
/* Flash region to be used for read only data.*/
REGION_ALIAS("RODATA_FLASH", flash0);
REGION_ALIAS("RODATA_FLASH_LMA", flash0);
/* Flash region to be used for various.*/
REGION_ALIAS("VARIOUS_FLASH", flash0);
REGION_ALIAS("VARIOUS_FLASH_LMA", flash0);
/* Flash region to be used for RAM(n) initialization data.*/
REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0);
/* RAM region to be used for Main stack. This stack accommodates the processing
of all exceptions and interrupts.*/
REGION_ALIAS("MAIN_STACK_RAM", ram5);
/* RAM region to be used for the process stack. This is the stack used by
the main() function.*/
REGION_ALIAS("PROCESS_STACK_RAM", ram5);
/* RAM region to be used for data segment.*/
REGION_ALIAS("DATA_RAM", ram1);
REGION_ALIAS("DATA_RAM_LMA", flash0);
/* RAM region to be used for BSS segment.*/
REGION_ALIAS("BSS_RAM", ram1);
/* RAM region to be used for the default heap.*/
REGION_ALIAS("HEAP_RAM", ram1);
/* Stack rules inclusion.*/
INCLUDE rules_stacks.ld
/*===========================================================================*/
/* Custom sections for STM32H7xx. */
/* SRAM3 is assumed to be marked non-cacheable using MPU. */
/*===========================================================================*/
/* RAM region to be used for nocache segment.*/
REGION_ALIAS("NOCACHE_RAM", ram0);
/* RAM region to be used for eth segment.*/
REGION_ALIAS("ETH_RAM", ram3);
SECTIONS
{
/* Special section for non cache-able areas.*/
.nocache (NOLOAD) : ALIGN(4)
{
__nocache_base__ = .;
*(.nocache)
*(.nocache.*)
*(.bss.__nocache_*)
. = ALIGN(4);
__nocache_end__ = .;
} > NOCACHE_RAM
/* Special section for Ethernet DMA non cache-able areas.*/
.eth (NOLOAD) : ALIGN(4)
{
__eth_base__ = .;
*(.eth)
*(.eth.*)
*(.bss.__eth_*)
. = ALIGN(4);
__eth_end__ = .;
} > ETH_RAM
}
/* Code rules inclusion.*/
INCLUDE rules_code.ld
/* Data rules inclusion.*/
INCLUDE rules_data.ld
/* Memory rules inclusion.*/
INCLUDE rules_memory.ld
+1 -1
View File
@@ -90,7 +90,7 @@
#endif
/*
* ADCs
* ADCs
*/
#if defined(LINE_ADC1)
#ifndef USE_ADC_1
@@ -39,10 +39,6 @@
static MUTEX_DECL(sys_time_mtx);
#ifndef STM32_SYSCLK
#define STM32_SYSCLK STM32_SYS_CK
#endif
/*
* Sys_tick handler thread
*/
@@ -36,6 +36,10 @@
#include "mcu_periph/sys_time.h"
#include <ch.h>
#if (defined STM32H7XX) && !(defined STM32_SYSCLK)
#define STM32_SYSCLK STM32_SYS_CK
#endif
extern uint32_t get_sys_time_usec(void);
extern uint32_t get_sys_time_msec(void);
extern void sys_time_usleep(uint32_t us);
@@ -60,7 +60,7 @@ struct SerialInit {
/**
* RX handler
*/
static void handle_uart_rx(struct uart_periph *p)
UNUSED static void handle_uart_rx(struct uart_periph *p)
{
// wait for next incoming byte
uint8_t c = sdGet((SerialDriver *)(p->reg_addr));
@@ -81,7 +81,7 @@ static void handle_uart_rx(struct uart_periph *p)
/**
* TX handler
*/
static void handle_uart_tx(struct uart_periph *p)
UNUSED static void handle_uart_tx(struct uart_periph *p)
{
// check if more data to send
// TODO send by block with sdWrite (be careful with circular buffer)
@@ -38,6 +38,7 @@ static uint16_t get_stack_free(const thread_t *tp);
#if USE_SHELL
#include "modules/core/shell.h"
#include "mcu_periph/sys_time.h"
#include "printf.h"
#include "string.h"
@@ -0,0 +1,155 @@
MCU_MODEL = STM32H743VITx
CHIBIOS_VERSION = 3.0
HEADER
/*
* Board identifier.
*/
#define BOARD_MATEKH743_SLIM
#define BOARD_NAME "MATEKSYS FC H743 SLIM"
/*
* Board oscillators-related settings.
*/
#if !defined(STM32_LSECLK)
#define STM32_LSECLK 32768U
#endif
#define STM32_LSEDRV (3U << 3U)
#if !defined(STM32_HSECLK)
#define STM32_HSECLK 8000000U
#endif
/*
* MCU type as defined in the ST header.
*/
#define STM32H743xx
/* allow to define ADC_CHANNEL_VSUPPLY in the airframe file*/
#ifndef ADC_CHANNEL_VSUPPLY
#define ADC_CHANNEL_VSUPPLY ADC_5
#endif
/* Default powerbrick values */
#define DefaultVoltageOfAdc(adc) ((3.3f/65536.0f) * 13.38f * adc)
#define DefaultMilliAmpereOfAdc(adc) ((3.3f/65536.0f) * 39.877f * adc)
/* Battery monitoring for file closing */
#define SDLOG_BAT_ADC ADCD1
#define SDLOG_BAT_CHAN AD1_5_CHANNEL
CONFIG
# PIN NAME PERIPH_TYPE AF_NUMBER or
# PIN NAME FUNCTION PP_or_OPENDRAIN PIN_SPEED PULL_RESISTOR INITIAL_LEVEL AF_NUMBER
# SPEED : SPEED_VERYLOW, SPEED_LOW, SPEED_MEDIUM, SPEED_HIGH
#
# DEFAULT AND SYS
#
# 'SYS' => ['ALTERNATE', 'PUSHPULL', 'SPEED_HIGH', 'FLOATING', 'LEVEL_HIGH'],
# 'ADC' => ['ANALOG', 'PUSHPULL', 'SPEED_HIGH', 'FLOATING', 'LEVEL_LOW'],
# 'PWM' => ['ALTERNATE', 'PUSHPULL', 'SPEED_HIGH', 'FLOATING', 'LEVEL_LOW'],
# 'ICU' => ['ALTERNATE', 'PUSHPULL', 'SPEED_HIGH', 'FLOATING', 'LEVEL_HIGH'],
# 'I2C' => ['ALTERNATE', 'OPENDRAIN', 'SPEED_HIGH', 'PULLUP', 'LEVEL_HIGH'],
# 'SPI' => ['ALTERNATE', 'PUSHPULL', 'SPEED_HIGH', 'FLOATING', 'LEVEL_HIGH'],
# 'UART' => ['ALTERNATE', 'PUSHPULL', 'SPEED_HIGH', 'PULLUP', 'LEVEL_HIGH'],
# 'OTG' => ['ALTERNATE', 'PUSHPULL', 'SPEED_HIGH', 'FLOATING', 'LEVEL_HIGH'],
# 'ETH' => ['ALTERNATE', 'PUSHPULL', 'SPEED_HIGH', 'FLOATING', 'LEVEL_HIGH'],
# 'FSMC' => ['ALTERNATE', 'PUSHPULL', 'SPEED_HIGH', 'FLOATING', 'LEVEL_HIGH'],
# 'SDIO' => ['ALTERNATE', 'PUSHPULL', 'SPEED_HIGH', 'PULLUP', 'LEVEL_HIGH'],
# 'SDIOCK' => ['ALTERNATE', 'PUSHPULL', 'SPEED_HIGH', 'FLOATING', 'LEVEL_HIGH'],
# 'CAN' => ['ALTERNATE', 'PUSHPULL', 'SPEED_HIGH', 'FLOATING', 'LEVEL_HIGH'],
# 'DCMI' => ['ALTERNATE', 'PUSHPULL', 'SPEED_HIGH', 'FLOATING', 'LEVEL_HIGH'],
# 'LED' => ['OUTPUT', 'PUSHPULL', 'SPEED_VERYLOW', 'FLOATING', 'LEVEL_LOW'],
# 'PASSIVE' => ['INPUT', 'PUSHPULL', 'SPEED_VERYLOW', 'FLOATING', 'LEVEL_LOW']);
#
# SYSTEM
A13 SWDIO SYS AF:DEBUG_JTMS-SWDIO
A14 SWCLK SYS AF:DEBUG_JTCK-SWCLK
H00 OSC_IN SYS AF0
H01 OSC_OUT SYS AF0
# DEFAULT
DEFAULT INPUT PUSHPULL SPEED_VERYLOW PULLDOWN LEVEL_LOW AF0
# ACTIVE PINS
PA00 SERVO3 PWM AF:TIM5_CH1 ()
PA01 SERVO4 PWM AF:TIM5_CH2 ()
PA02 SERVO5 PWM AF:TIM5_CH3 ()
PA03 SERVO6 PWM AF:TIM5_CH4 ()
PA04 ADC3 ADC ADC1_INP18 () # Vbat 2 0-69 V, scale 210
PA05 SPI1_SCK SPI AF:SPI1_SCK # MPU6000
PA06 SPI1_MISO SPI AF:SPI1_MISO # MPU6000
PA07 ADC4 ADC ADC1_INP7 () # Current 2 0-3.3V
PA08 LED_WS2812 PWM AF:TIM1_CH1 ()
PA09 UART1_TX UART AF:USART1_TX
PA10 UART1_RX UART AF:USART1_RX
PA11 USB_DM OTG AF:USB_OTG_FS_DM
PA12 USB_DP OTG AF:USB_OTG_FS_DP
PA15 ALARM PWM AF:TIM2_CH1 ()
PB00 SERVO1 PWM AF:TIM3_CH3 ()
PB01 SERVO2 PWM AF:TIM3_CH4 ()
PB03 SPI3_SCK SPI AF:SPI3_SCK # SPI external
PB04 SPI3_MISO SPI AF:SPI3_MISO # SPI external
PB05 SPI3_MOSI SPI AF:SPI3_MOSI # SPI external
PB06 I2C1_SCL I2C AF:I2C1_SCL
PB07 I2C1_SDA I2C AF:I2C1_SDA
PB08 UART4_RX UART AF:UART4_RX
PB09 UART4_TX UART AF:UART4_TX
PB10 I2C2_SCL I2C AF:I2C2_SCL
PB11 I2C2_SDA I2C AF:I2C2_SDA
PB12 SPI_SLAVE4 OUTPUT PUSHPULL SPEED_HIGH FLOATING LEVEL_HIGH # MAX7456 OSD CS
PB13 SPI2_SCK SPI AF:SPI2_SCK # OSD
PB14 SPI2_MISO SPI AF:SPI2_MISO # OSD
PB15 SPI2_MOSI SPI AF:SPI2_MOSI # OSD
PC00 ADC5 ADC ADC1_INP10 () # Vbat 0-36 V, scale 110
PC01 ADC6 ADC ADC1_INP11 () # Current 0-3.3V
PC05 ADC1 ADC ADC1_INP8 () # RSSI 0-3.3V
PC04 ADC2 ADC ADC1_INP4 () # AirS 0-6.6V
PC06 UART6_TX UART AF:USART6_TX
PC07 RC1 PASSIVE (AF:TIM3_CH2, AF:USART6_RX)
PC08 SDIO_D0 SDIO AF:SDMMC1_D0
PC09 SDIO_D1 SDIO AF:SDMMC1_D1
PC10 SDIO_D2 SDIO AF:SDMMC1_D2
PC11 SDIO_D3 SDIO AF:SDMMC1_D3
PC12 SDIO_CK SDIOCK AF:SDMMC1_CK
PC13 SPI_SLAVE6 OUTPUT PUSHPULL SPEED_HIGH FLOATING LEVEL_HIGH # ICM42605 CS (backup ICM20602 on spi4)
PC15 SPI_SLAVE5 OUTPUT PUSHPULL SPEED_HIGH FLOATING LEVEL_HIGH # INV MPU_CS
PD00 CAN1_RX CAN AF:FDCAN1_RX
PD01 CAN1_TX CAN AF:FDCAN1_TX
PD02 SDIO_CMD SDIO AF:SDMMC1_CMD
PD04 SPI_SLAVE1 OUTPUT PUSHPULL SPEED_HIGH FLOATING LEVEL_HIGH # external CS1
PD05 UART2_TX UART AF:USART2_TX
PD06 UART2_RX UART AF:USART2_RX
PD07 SPI1_MOSI SPI AF:SPI1_MOSI # MPU6000
PD08 UART3_TX UART AF:USART3_TX
PD09 UART3_RX UART AF:USART3_RX
PD12 SERVO7 PWM AF:TIM4_CH1 ()
PD13 SERVO8 PWM AF:TIM4_CH2 ()
PD14 SERVO9 PWM AF:TIM4_CH3 ()
PD15 SERVO10 PWM AF:TIM4_CH4 () # NO DMA
PE00 UART8_RX UART AF:UART8_RX
PE01 UART8_TX UART AF:UART8_TX
PE02 SPI_SLAVE2 OUTPUT PUSHPULL SPEED_HIGH FLOATING LEVEL_HIGH # external CS2
PE03 LED1 LED # blue (marked as ACT)
PE04 LED2 LED # green (marked as B/E)
PE05 SERVO11 PWM AF:TIM15_CH1 ()
PE06 SERVO12 PWM AF:TIM15_CH2 ()
PE07 UART7_RX UART AF:UART7_RX
PE08 UART7_TX UART AF:UART7_TX
PE09 UART7_RTS PASSIVE
PE10 UART7_CTS PASSIVE
PE11 SPI_SLAVE3 OUTPUT PUSHPULL SPEED_HIGH FLOATING LEVEL_HIGH # ICM20602 CS
PE12 SPI4_CLK SPI AF:SPI4_SCK # ICM
PE13 SPI4_MISO SPI AF:SPI4_MISO # ICM
PE14 SPI4_MOSI SPI AF:SPI4_MOSI # ICM
# GROUPS
GROUP ENERGY_SAVE_INPUTS %NAME=~/^SERVO[0-9]+|LED[0-9]+|SPI_SLAVE[0-9]+$/
GROUP ENERGY_SAVE_LOWS %NAME=~/^VDD_3V3_SENSORS_EN|VDD_5V_PERIPH_EN|PWM_VOLT_SEL|ALARM$/
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+14
View File
@@ -0,0 +1,14 @@
{
"board_id": 1013,
"magic": "PX4FWv1",
"description": "Firmware for the MatekH743 board",
"image": "",
"build_time": 0,
"summary": "MatekH743",
"version": "0.1",
"image_size": 0,
"image_maxsize": 1966080,
"git_identity": "",
"board_revision": 0
}
+1 -1
View File
@@ -1,4 +1,4 @@
#!/usr/bin/python
#!/usr/bin/python3
# temporary solution to print a message to reconnect the usb cable
#At some point hopefully this can be automated (without replugging)
print("\n ")
+1 -1
View File
@@ -1,4 +1,4 @@
#!/usr/bin/env python
#!/usr/bin/env python3
############################################################################
#
# Copyright (C) 2012, 2013 PX4 Development Team. All rights reserved.
+1 -1
View File
@@ -1,4 +1,4 @@
#!/usr/bin/env python
#!/usr/bin/env python3
from __future__ import print_function
import os