mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-09-25 21:44:53 +08:00
[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:
@@ -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>
|
||||
@@ -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
|
||||
|
||||
@@ -102,6 +102,7 @@
|
||||
<board name="px4fmu_.*"/>
|
||||
<board name="px4io_.*"/>
|
||||
<board name="cube_.*"/>
|
||||
<board name="matek_.*"/>
|
||||
</boards>
|
||||
</mode>
|
||||
<mode name="JTAG (OpenOCD)">
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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,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,4 +1,4 @@
|
||||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python3
|
||||
############################################################################
|
||||
#
|
||||
# Copyright (C) 2012, 2013 PX4 Development Team. All rights reserved.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python3
|
||||
|
||||
from __future__ import print_function
|
||||
import os
|
||||
|
||||
Reference in New Issue
Block a user