mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-30 11:37:06 +08:00
[board] support Holybro Kakute F7 (#2746)
This commit is contained in:
committed by
GitHub
parent
bfee649fe9
commit
726c44682e
@@ -0,0 +1,280 @@
|
|||||||
|
<!DOCTYPE airframe SYSTEM "../../airframe.dtd">
|
||||||
|
|
||||||
|
|
||||||
|
<airframe name="Kakute_F7">
|
||||||
|
|
||||||
|
<description>
|
||||||
|
Holybro Kakute F7 test board
|
||||||
|
</description>
|
||||||
|
|
||||||
|
<firmware name="rotorcraft">
|
||||||
|
<configure name="RTOS_DEBUG" value="0"/>
|
||||||
|
<configure name="PERIODIC_FREQUENCY" value="500"/>
|
||||||
|
|
||||||
|
<target name="ap" board="holybro_kakute_f7">
|
||||||
|
</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="xbee_api"/>
|
||||||
|
<module name="imu" type="mpu6000">
|
||||||
|
<define name="IMU_MPU_CHAN_X" value="1"/>
|
||||||
|
<define name="IMU_MPU_CHAN_Y" value="0"/>
|
||||||
|
<define name="IMU_MPU_GYRO_RANGE" value="MPU60X0_GYRO_RANGE_1000"/>
|
||||||
|
<define name="IMU_MPU_ACCEL_RANGE" value="MPU60X0_ACCEL_RANGE_8G"/>
|
||||||
|
<configure name="IMU_MPU_SPI_DEV" value="spi4"/>
|
||||||
|
<configure name="IMU_MPU_SPI_SLAVE_IDX" value="SPI_SLAVE0"/>
|
||||||
|
</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"/>
|
||||||
|
</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"/>
|
||||||
|
<define name="SENSORS_PARAMS" value="nps_sensors_params_default.h" 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" value="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,97 @@
|
|||||||
|
# Hey Emacs, this is a -*- makefile -*-
|
||||||
|
#
|
||||||
|
# holybr_kakute_f7.makefile
|
||||||
|
#
|
||||||
|
# based on STM32F7
|
||||||
|
# only compatible with ChibiOS
|
||||||
|
#
|
||||||
|
|
||||||
|
BOARD=holybro
|
||||||
|
BOARD_VERSION=kakute_f7
|
||||||
|
BOARD_DIR=$(BOARD)/$(BOARD_VERSION)
|
||||||
|
BOARD_CFG=\"boards/$(BOARD_DIR)/$(BOARD)_$(BOARD_VERSION).h\"
|
||||||
|
|
||||||
|
ARCH=chibios
|
||||||
|
$(TARGET).ARCHDIR = $(ARCH)
|
||||||
|
|
||||||
|
RTOS=chibios
|
||||||
|
MCU=cortex-m7
|
||||||
|
|
||||||
|
## FPU on F7
|
||||||
|
USE_FPU=hard
|
||||||
|
USE_FPU_OPT= -mfpu=fpv5-sp-d16 -fsingle-precision-constant
|
||||||
|
|
||||||
|
USE_LTO ?= yes
|
||||||
|
|
||||||
|
$(TARGET).CFLAGS += -DSTM32F7 -DPPRZLINK_ENABLE_FD -DDSHOT_CHANNEL_FIRST_INDEX=1U
|
||||||
|
#$(TARGET).CFLAGS += -DUSE_HARD_FAULT_RECOVERY
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# 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 = STM32F7xx/platform.mk
|
||||||
|
CHIBIOS_BOARD_PORT = ARMCMx/STM32F7xx/port.mk
|
||||||
|
#CHIBIOS_BOARD_LINKER = STM32F76xxI.ld
|
||||||
|
CHIBIOS_BOARD_LINKER = STM32F746xG.ld
|
||||||
|
CHIBIOS_BOARD_STARTUP = startup_stm32f7xx.mk
|
||||||
|
|
||||||
|
# ITCM flash is a special flash that allow faster operations
|
||||||
|
# At the moment it is not possible to flash the code in this mode using dfu-util
|
||||||
|
# but it should work with the BlackMagicProbe or STLINK
|
||||||
|
# By default, normal flash is used
|
||||||
|
ifeq ($(USE_ITCM),1)
|
||||||
|
$(TARGET).CFLAGS += -DUSE_ITCM=1
|
||||||
|
DFU_ADDR = 0x00200000
|
||||||
|
else
|
||||||
|
$(TARGET).CFLAGS += -DUSE_ITCM=0
|
||||||
|
DFU_ADDR = 0x08000000
|
||||||
|
endif
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# Compiler settings
|
||||||
|
#
|
||||||
|
|
||||||
|
# default flash mode is via usb dfu bootloader
|
||||||
|
# possibilities: DFU-UTIL, SWD, STLINK
|
||||||
|
FLASH_MODE ?= DFU-UTIL
|
||||||
|
|
||||||
|
HAS_LUFTBOOT = FALSE
|
||||||
|
|
||||||
|
#
|
||||||
|
# default LED configuration
|
||||||
|
#
|
||||||
|
RADIO_CONTROL_LED ?= none
|
||||||
|
BARO_LED ?= none
|
||||||
|
AHRS_ALIGNER_LED ?= none
|
||||||
|
GPS_LED ?= none
|
||||||
|
SYS_TIME_LED ?= 1
|
||||||
|
|
||||||
|
#
|
||||||
|
# default UART configuration (modem, gps, spektrum)
|
||||||
|
#
|
||||||
|
|
||||||
|
MODEM_PORT ?= UART1
|
||||||
|
MODEM_BAUD ?= B57600
|
||||||
|
|
||||||
|
GPS_PORT ?= UART2
|
||||||
|
GPS_BAUD ?= B57600
|
||||||
|
|
||||||
|
RADIO_CONTROL_SPEKTRUM_PRIMARY_PORT ?= UART6
|
||||||
|
|
||||||
|
# single mode
|
||||||
|
SBUS_PORT ?= UART6
|
||||||
|
|
||||||
|
#
|
||||||
|
# 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
|
||||||
|
|
||||||
@@ -36,6 +36,7 @@
|
|||||||
<board name="crazyflie_.*"/>
|
<board name="crazyflie_.*"/>
|
||||||
<board name="nucleo.*"/>
|
<board name="nucleo.*"/>
|
||||||
<board name="matek_.*"/>
|
<board name="matek_.*"/>
|
||||||
|
<board name="holybro_.*"/>
|
||||||
</boards>
|
</boards>
|
||||||
</mode>
|
</mode>
|
||||||
<mode name="STLink (SWD)">
|
<mode name="STLink (SWD)">
|
||||||
@@ -53,6 +54,7 @@
|
|||||||
<board name="crazyflie_.*"/>
|
<board name="crazyflie_.*"/>
|
||||||
<board name="nucleo.*"/>
|
<board name="nucleo.*"/>
|
||||||
<board name="matek_.*"/>
|
<board name="matek_.*"/>
|
||||||
|
<board name="holybro_.*"/>
|
||||||
</boards>
|
</boards>
|
||||||
</mode>
|
</mode>
|
||||||
<mode name="BlackMagic Probe (SWD)">
|
<mode name="BlackMagic Probe (SWD)">
|
||||||
@@ -74,6 +76,7 @@
|
|||||||
<board name="crazyflie_.*"/>
|
<board name="crazyflie_.*"/>
|
||||||
<board name="nucleo.*"/>
|
<board name="nucleo.*"/>
|
||||||
<board name="matek_.*"/>
|
<board name="matek_.*"/>
|
||||||
|
<board name="holybro_.*"/>
|
||||||
</boards>
|
</boards>
|
||||||
</mode>
|
</mode>
|
||||||
<mode name="BlackMagic Probe (SWD_NOPWR)">
|
<mode name="BlackMagic Probe (SWD_NOPWR)">
|
||||||
|
|||||||
@@ -0,0 +1,277 @@
|
|||||||
|
/*
|
||||||
|
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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file has been automatically generated using ChibiStudio board
|
||||||
|
* generator plugin. Do not edit manually.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "hal.h"
|
||||||
|
#include "stm32_gpio.h"
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Driver local definitions. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Driver exported variables. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Driver local variables and types. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Type of STM32 GPIO port setup.
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
uint32_t moder;
|
||||||
|
uint32_t otyper;
|
||||||
|
uint32_t ospeedr;
|
||||||
|
uint32_t pupdr;
|
||||||
|
uint32_t odr;
|
||||||
|
uint32_t afrl;
|
||||||
|
uint32_t afrh;
|
||||||
|
} gpio_setup_t;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Type of STM32 GPIO initialization data.
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
#if STM32_HAS_GPIOA || defined(__DOXYGEN__)
|
||||||
|
gpio_setup_t PAData;
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOB || defined(__DOXYGEN__)
|
||||||
|
gpio_setup_t PBData;
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOC || defined(__DOXYGEN__)
|
||||||
|
gpio_setup_t PCData;
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOD || defined(__DOXYGEN__)
|
||||||
|
gpio_setup_t PDData;
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOE || defined(__DOXYGEN__)
|
||||||
|
gpio_setup_t PEData;
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOF || defined(__DOXYGEN__)
|
||||||
|
gpio_setup_t PFData;
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOG || defined(__DOXYGEN__)
|
||||||
|
gpio_setup_t PGData;
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOH || defined(__DOXYGEN__)
|
||||||
|
gpio_setup_t PHData;
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOI || defined(__DOXYGEN__)
|
||||||
|
gpio_setup_t PIData;
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOJ || defined(__DOXYGEN__)
|
||||||
|
gpio_setup_t PJData;
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOK || defined(__DOXYGEN__)
|
||||||
|
gpio_setup_t PKData;
|
||||||
|
#endif
|
||||||
|
} gpio_config_t;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief STM32 GPIO static initialization data.
|
||||||
|
*/
|
||||||
|
static const gpio_config_t gpio_default_config = {
|
||||||
|
#if STM32_HAS_GPIOA
|
||||||
|
{VAL_GPIOA_MODER, VAL_GPIOA_OTYPER, VAL_GPIOA_OSPEEDR, VAL_GPIOA_PUPDR,
|
||||||
|
VAL_GPIOA_ODR, VAL_GPIOA_AFRL, VAL_GPIOA_AFRH},
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOB
|
||||||
|
{VAL_GPIOB_MODER, VAL_GPIOB_OTYPER, VAL_GPIOB_OSPEEDR, VAL_GPIOB_PUPDR,
|
||||||
|
VAL_GPIOB_ODR, VAL_GPIOB_AFRL, VAL_GPIOB_AFRH},
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOC
|
||||||
|
{VAL_GPIOC_MODER, VAL_GPIOC_OTYPER, VAL_GPIOC_OSPEEDR, VAL_GPIOC_PUPDR,
|
||||||
|
VAL_GPIOC_ODR, VAL_GPIOC_AFRL, VAL_GPIOC_AFRH},
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOD
|
||||||
|
{VAL_GPIOD_MODER, VAL_GPIOD_OTYPER, VAL_GPIOD_OSPEEDR, VAL_GPIOD_PUPDR,
|
||||||
|
VAL_GPIOD_ODR, VAL_GPIOD_AFRL, VAL_GPIOD_AFRH},
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOE
|
||||||
|
{VAL_GPIOE_MODER, VAL_GPIOE_OTYPER, VAL_GPIOE_OSPEEDR, VAL_GPIOE_PUPDR,
|
||||||
|
VAL_GPIOE_ODR, VAL_GPIOE_AFRL, VAL_GPIOE_AFRH},
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOF
|
||||||
|
{VAL_GPIOF_MODER, VAL_GPIOF_OTYPER, VAL_GPIOF_OSPEEDR, VAL_GPIOF_PUPDR,
|
||||||
|
VAL_GPIOF_ODR, VAL_GPIOF_AFRL, VAL_GPIOF_AFRH},
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOG
|
||||||
|
{VAL_GPIOG_MODER, VAL_GPIOG_OTYPER, VAL_GPIOG_OSPEEDR, VAL_GPIOG_PUPDR,
|
||||||
|
VAL_GPIOG_ODR, VAL_GPIOG_AFRL, VAL_GPIOG_AFRH},
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOH
|
||||||
|
{VAL_GPIOH_MODER, VAL_GPIOH_OTYPER, VAL_GPIOH_OSPEEDR, VAL_GPIOH_PUPDR,
|
||||||
|
VAL_GPIOH_ODR, VAL_GPIOH_AFRL, VAL_GPIOH_AFRH},
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOI
|
||||||
|
{VAL_GPIOI_MODER, VAL_GPIOI_OTYPER, VAL_GPIOI_OSPEEDR, VAL_GPIOI_PUPDR,
|
||||||
|
VAL_GPIOI_ODR, VAL_GPIOI_AFRL, VAL_GPIOI_AFRH},
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOJ
|
||||||
|
{VAL_GPIOJ_MODER, VAL_GPIOJ_OTYPER, VAL_GPIOJ_OSPEEDR, VAL_GPIOJ_PUPDR,
|
||||||
|
VAL_GPIOJ_ODR, VAL_GPIOJ_AFRL, VAL_GPIOJ_AFRH},
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOK
|
||||||
|
{VAL_GPIOK_MODER, VAL_GPIOK_OTYPER, VAL_GPIOK_OSPEEDR, VAL_GPIOK_PUPDR,
|
||||||
|
VAL_GPIOK_ODR, VAL_GPIOK_AFRL, VAL_GPIOK_AFRH}
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Driver local functions. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
static void gpio_init(stm32_gpio_t *gpiop, const gpio_setup_t *config) {
|
||||||
|
|
||||||
|
gpiop->OTYPER = config->otyper;
|
||||||
|
gpiop->OSPEEDR = config->ospeedr;
|
||||||
|
gpiop->PUPDR = config->pupdr;
|
||||||
|
gpiop->ODR = config->odr;
|
||||||
|
gpiop->AFRL = config->afrl;
|
||||||
|
gpiop->AFRH = config->afrh;
|
||||||
|
gpiop->MODER = config->moder;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void stm32_gpio_init(void) {
|
||||||
|
|
||||||
|
/* Enabling GPIO-related clocks, the mask comes from the
|
||||||
|
registry header file.*/
|
||||||
|
rccResetAHB1(STM32_GPIO_EN_MASK);
|
||||||
|
rccEnableAHB1(STM32_GPIO_EN_MASK, true);
|
||||||
|
|
||||||
|
/* Initializing all the defined GPIO ports.*/
|
||||||
|
#if STM32_HAS_GPIOA
|
||||||
|
gpio_init(GPIOA, &gpio_default_config.PAData);
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOB
|
||||||
|
gpio_init(GPIOB, &gpio_default_config.PBData);
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOC
|
||||||
|
gpio_init(GPIOC, &gpio_default_config.PCData);
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOD
|
||||||
|
gpio_init(GPIOD, &gpio_default_config.PDData);
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOE
|
||||||
|
gpio_init(GPIOE, &gpio_default_config.PEData);
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOF
|
||||||
|
gpio_init(GPIOF, &gpio_default_config.PFData);
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOG
|
||||||
|
gpio_init(GPIOG, &gpio_default_config.PGData);
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOH
|
||||||
|
gpio_init(GPIOH, &gpio_default_config.PHData);
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOI
|
||||||
|
gpio_init(GPIOI, &gpio_default_config.PIData);
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOJ
|
||||||
|
gpio_init(GPIOJ, &gpio_default_config.PJData);
|
||||||
|
#endif
|
||||||
|
#if STM32_HAS_GPIOK
|
||||||
|
gpio_init(GPIOK, &gpio_default_config.PKData);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Driver interrupt handlers. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Driver exported functions. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Early initialization code.
|
||||||
|
* @details GPIO ports and system clocks are initialized before everything
|
||||||
|
* else.
|
||||||
|
*/
|
||||||
|
void __early_init(void) {
|
||||||
|
|
||||||
|
stm32_gpio_init();
|
||||||
|
stm32_clock_init();
|
||||||
|
}
|
||||||
|
|
||||||
|
#if HAL_USE_SDC || defined(__DOXYGEN__)
|
||||||
|
/**
|
||||||
|
* @brief SDC card detection.
|
||||||
|
*/
|
||||||
|
bool sdc_lld_is_card_inserted(SDCDriver *sdcp) {
|
||||||
|
(void)sdcp;
|
||||||
|
/* assume card is inserted as there is no SD_DETECT pin
|
||||||
|
* actual detection will be done by the software
|
||||||
|
*/
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief SDC card write protection detection.
|
||||||
|
*/
|
||||||
|
bool sdc_lld_is_write_protected(SDCDriver *sdcp) {
|
||||||
|
|
||||||
|
(void)sdcp;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
#endif /* HAL_USE_SDC */
|
||||||
|
|
||||||
|
#if HAL_USE_MMC_SPI || defined(__DOXYGEN__)
|
||||||
|
/**
|
||||||
|
* @brief MMC_SPI card detection.
|
||||||
|
*/
|
||||||
|
bool mmc_lld_is_card_inserted(MMCDriver *mmcp) {
|
||||||
|
|
||||||
|
(void)mmcp;
|
||||||
|
/* TODO: Fill the implementation.*/
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief MMC_SPI card write protection detection.
|
||||||
|
*/
|
||||||
|
bool mmc_lld_is_write_protected(MMCDriver *mmcp) {
|
||||||
|
|
||||||
|
(void)mmcp;
|
||||||
|
/* TODO: Fill the implementation.*/
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Board-specific initialization code.
|
||||||
|
* @todo Add your board-specific code, if any.
|
||||||
|
*/
|
||||||
|
void boardInit(void) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Energy saving procedure for SD log closing
|
||||||
|
*/
|
||||||
|
void mcu_periph_energy_save(void)
|
||||||
|
{
|
||||||
|
palSetLineMode(LINE_LED1, PAL_MODE_INPUT);
|
||||||
|
palSetLineMode(LINE_OSD_CS, PAL_MODE_INPUT);
|
||||||
|
palSetLineMode(LINE_IMU_CS, PAL_MODE_INPUT);
|
||||||
|
palSetLineMode(LINE_SDCARD_CS, PAL_MODE_INPUT);
|
||||||
|
}
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,24 @@
|
|||||||
|
#
|
||||||
|
# ChibiOS/RT - Copyright (C) 2006-2013 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.
|
||||||
|
#
|
||||||
|
# Required include directories
|
||||||
|
BOARDINC = $(CHIBIOS_BOARD_DIR)
|
||||||
|
|
||||||
|
# List of all the board related files.
|
||||||
|
BOARDSRC = ${BOARDINC}/board.c
|
||||||
|
|
||||||
|
# Shared variables
|
||||||
|
ALLCSRC += $(BOARDSRC)
|
||||||
|
ALLINC += $(BOARDINC)
|
||||||
@@ -0,0 +1,116 @@
|
|||||||
|
MCU_MODEL = STM32F745V(E-G)Tx
|
||||||
|
CHIBIOS_VERSION = 3.0
|
||||||
|
|
||||||
|
HEADER
|
||||||
|
/*
|
||||||
|
* Board identifier.
|
||||||
|
*/
|
||||||
|
#define BOARD_KAKUTE_F7
|
||||||
|
#define BOARD_NAME "HOLYBRO KAKUTE F7"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Board oscillators-related settings.
|
||||||
|
*/
|
||||||
|
#if !defined(STM32_HSECLK)
|
||||||
|
#define STM32_HSECLK 8000000U
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(STM32_LSECLK)
|
||||||
|
#define STM32_LSECLK 32768U
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define STM32_LSEDRV (3U << 3U)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Board voltages.
|
||||||
|
* Required for performance limits calculation.
|
||||||
|
*/
|
||||||
|
#define STM32_VDD 300U
|
||||||
|
|
||||||
|
/*
|
||||||
|
* MCU type as defined in the ST header.
|
||||||
|
*/
|
||||||
|
#define STM32F745xx
|
||||||
|
|
||||||
|
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:SYS_JTMS-SWDIO
|
||||||
|
A14 SWCLK SYS AF:SYS_JTCK-SWCLK
|
||||||
|
C14 OSC32_IN SYS AF0
|
||||||
|
C15 OSC32_OUT SYS AF0
|
||||||
|
H00 OSC_IN SYS AF0
|
||||||
|
H01 OSC_OUT SYS AF0
|
||||||
|
|
||||||
|
#DEFAULT
|
||||||
|
DEFAULT INPUT PUSHPULL SPEED_VERYLOW PULLDOWN LEVEL_LOW AF0
|
||||||
|
|
||||||
|
# ACTIVE PINS
|
||||||
|
|
||||||
|
PA00 UART4_TX UART AF:UART4_TX
|
||||||
|
PA01 UART4_RX UART AF:UART4_RX
|
||||||
|
PA02 LED1 LED
|
||||||
|
PA03 S6 PWM AF:TIM5_CH4 ()
|
||||||
|
PA04 SDCARD_CS OUTPUT PUSHPULL SPEED_HIGH FLOATING LEVEL_HIGH
|
||||||
|
PA05 SPI1_SCK SPI AF:SPI1_SCK # SDCARD
|
||||||
|
PA06 SPI1_MISO SPI AF:SPI1_MISO # SDCARD
|
||||||
|
PA07 SPI1_MOSI SPI AF:SPI1_MOSI # SDCARD
|
||||||
|
PA09 UART1_TX UART AF:USART1_TX
|
||||||
|
PA10 UART1_RX UART AF:USART1_RX
|
||||||
|
PA11 OTG_FS_DM OTG AF:USB_OTG_FS_DM
|
||||||
|
PA12 OTG_FS_DP OTG AF:USB_OTG_FS_DP
|
||||||
|
|
||||||
|
PB00 S4 PWM AF:TIM3_CH3 ()
|
||||||
|
PB01 S1 PWM AF:TIM1_CH3N ()
|
||||||
|
PB06 I2C1_SCL I2C AF:I2C1_SCL
|
||||||
|
PB07 I2C1_SDA I2C AF:I2C1_SDA
|
||||||
|
PB10 UART3_TX UART AF:USART3_TX
|
||||||
|
PB11 UART3_RX UART AF:USART3_RX
|
||||||
|
PB12 OSD_CS OUTPUT PUSHPULL SPEED_HIGH FLOATING LEVEL_HIGH # MAX7456
|
||||||
|
PB13 SPI2_SCK SPI AF:SPI2_SCK # MAX7456
|
||||||
|
PB14 SPI2_MISO SPI AF:SPI2_MISO # MAX7456
|
||||||
|
PB15 SPI2_MOSI SPI AF:SPI2_MOSI # MAX7456
|
||||||
|
|
||||||
|
PC02 CURRENT_MEAS ADC ADC1_IN12 ()
|
||||||
|
PC03 VBAT_MEAS ADC ADC1_IN13 ()
|
||||||
|
PC05 RSSI ADC ADC1_IN15 ()
|
||||||
|
PC06 RC2 PASSIVE (AF:TIM8_CH1, AF:USART6_TX)
|
||||||
|
PC07 RC1 PASSIVE (AF:TIM3_CH2, AF:USART6_RX)
|
||||||
|
PC09 S5 PWM AF:TIM3_CH4 ()
|
||||||
|
|
||||||
|
PD05 UART2_TX UART AF:USART2_TX
|
||||||
|
PD06 UART2_RX UART AF:USART2_RX
|
||||||
|
PD15 BUZZER PWM AF:TIM4_CH4 ()
|
||||||
|
|
||||||
|
PE02 SPI4_CLK SPI AF:SPI4_SCK # IMU ICM20689 (MPU6000)
|
||||||
|
PE04 IMU_CS OUTPUT PUSHPULL SPEED_HIGH FLOATING LEVEL_HIGH
|
||||||
|
PE05 SPI4_MISO SPI AF:SPI4_MISO
|
||||||
|
PE06 SPI4_MOSI SPI AF:SPI4_MOSI
|
||||||
|
PE07 UART7_RX UART AF:UART7_RX
|
||||||
|
PE08 UART7_TX UART AF:UART7_TX
|
||||||
|
PE09 S2 PWM AF:TIM1_CH1 ()
|
||||||
|
PE11 S3 PWM AF:TIM1_CH2 ()
|
||||||
@@ -0,0 +1,466 @@
|
|||||||
|
#ifndef CONFIG_HOLYBRO_KAKUTE_F7_H
|
||||||
|
#define CONFIG_HOLYBRO_KAKUTE_F7_H
|
||||||
|
|
||||||
|
#define BOARD_HOLYBRO_KAKUTE_F7
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ChibiOS board file
|
||||||
|
*/
|
||||||
|
#include "board.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PPRZ definitions
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* AHB_CLK
|
||||||
|
*/
|
||||||
|
#define AHB_CLK STM32_HCLK
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Concat macro
|
||||||
|
*/
|
||||||
|
#define _CONCAT_BOARD_PARAM(_s1, _s2) _s1 ## _s2
|
||||||
|
#define CONCAT_BOARD_PARAM(_s1, _s2) _CONCAT_BOARD_PARAM(_s1, _s2)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LEDs
|
||||||
|
*/
|
||||||
|
/* blue, 1 on LED_ON, 0 on LED_OFF */
|
||||||
|
#ifndef USE_LED_1
|
||||||
|
#define USE_LED_1 1
|
||||||
|
#endif
|
||||||
|
#define LED_1_GPIO PAL_PORT(LINE_LED1)
|
||||||
|
#define LED_1_GPIO_PIN PAL_PAD(LINE_LED1)
|
||||||
|
#define LED_1_GPIO_ON gpio_set
|
||||||
|
#define LED_1_GPIO_OFF gpio_clear
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ADCs
|
||||||
|
*/
|
||||||
|
// RSSI
|
||||||
|
#if USE_ADC_1
|
||||||
|
#define AD1_1_CHANNEL CONCAT_BOARD_PARAM(ADC_CHANNEL_IN, RSSI_ADC_IN)
|
||||||
|
#define ADC_1 AD1_1
|
||||||
|
#define ADC_1_GPIO_PORT PAL_PORT(LINE_RSSI)
|
||||||
|
#define ADC_1_GPIO_PIN PAL_PAD(LINE_RSSI)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// VBAT enabled by default
|
||||||
|
#ifndef USE_ADC_2
|
||||||
|
#define USE_ADC_2 1
|
||||||
|
#endif
|
||||||
|
#if USE_ADC_2
|
||||||
|
#define AD1_2_CHANNEL CONCAT_BOARD_PARAM(ADC_CHANNEL_IN, VBAT_MEAS_ADC_IN)
|
||||||
|
#define ADC_2 AD1_2
|
||||||
|
#define ADC_2_GPIO_PORT PAL_PORT(LINE_VBAT_MEAS)
|
||||||
|
#define ADC_2_GPIO_PIN PAL_PAD(LINE_VBAT_MEAS)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// CURRENT
|
||||||
|
#if USE_ADC_3
|
||||||
|
#define AD1_3_CHANNEL CONCAT_BOARD_PARAM(ADC_CHANNEL_IN, CURRENT_MEAS_ADC_IN)
|
||||||
|
#define ADC_3 AD1_3
|
||||||
|
#define ADC_3_GPIO_PORT PAL_PORT(LINE_CURRENT_MEAS)
|
||||||
|
#define ADC_3_GPIO_PIN PAL_PAD(LINE_CURRENT_MEAS)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* allow to define ADC_CHANNEL_VSUPPLY in the airframe file*/
|
||||||
|
#ifndef ADC_CHANNEL_VSUPPLY
|
||||||
|
#define ADC_CHANNEL_VSUPPLY ADC_2
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* R1 = 1k
|
||||||
|
* R2 = 10k
|
||||||
|
* adc * (3.3 / 2^12) * ((R1 + R2) / R1)
|
||||||
|
*/
|
||||||
|
#define VBAT_R1 1000.0f
|
||||||
|
#define VBAT_R2 10000.0f
|
||||||
|
#define DefaultVoltageOfAdc(adc) ((3.3f/4096.0f)*((VBAT_R1+VBAT_R2)/VBAT_R1)*adc)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* current sensor: 132A, 3.3V 12bits ADC -> 40 A/V -> 40000 * 3.3/2^12 mA/ADC
|
||||||
|
*/
|
||||||
|
#define DefaultMilliAmpereOfAdc(adc) ((40000.f*3.3f/4096.f)*adc)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PWM defines
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef USE_PWM1
|
||||||
|
#define USE_PWM1 1
|
||||||
|
#endif
|
||||||
|
#if USE_PWM1
|
||||||
|
#define PWM_SERVO_1 1
|
||||||
|
#define PWM_SERVO_1_GPIO PAL_PORT(LINE_S1)
|
||||||
|
#define PWM_SERVO_1_PIN PAL_PAD(LINE_S1)
|
||||||
|
#define PWM_SERVO_1_AF AF_S1
|
||||||
|
#define PWM_SERVO_1_DRIVER CONCAT_BOARD_PARAM(PWMD, S1_TIM)
|
||||||
|
#define PWM_SERVO_1_CHANNEL (S1_TIM_CH-1)
|
||||||
|
#define PWM_SERVO_1_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
|
||||||
|
#else
|
||||||
|
#define PWM_SERVO_1_ACTIVE PWM_OUTPUT_DISABLED
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef USE_PWM2
|
||||||
|
#define USE_PWM2 1
|
||||||
|
#endif
|
||||||
|
#if USE_PWM2
|
||||||
|
#define PWM_SERVO_2 2
|
||||||
|
#define PWM_SERVO_2_GPIO PAL_PORT(LINE_S2)
|
||||||
|
#define PWM_SERVO_2_PIN PAL_PAD(LINE_S2)
|
||||||
|
#define PWM_SERVO_2_AF AF_S2
|
||||||
|
#define PWM_SERVO_2_DRIVER CONCAT_BOARD_PARAM(PWMD, S2_TIM)
|
||||||
|
#define PWM_SERVO_2_CHANNEL (S2_TIM_CH-1)
|
||||||
|
#define PWM_SERVO_2_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
|
||||||
|
#else
|
||||||
|
#define PWM_SERVO_2_ACTIVE PWM_OUTPUT_DISABLED
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef USE_PWM3
|
||||||
|
#define USE_PWM3 1
|
||||||
|
#endif
|
||||||
|
#if USE_PWM3
|
||||||
|
#define PWM_SERVO_3 3
|
||||||
|
#define PWM_SERVO_3_GPIO PAL_PORT(LINE_S3)
|
||||||
|
#define PWM_SERVO_3_PIN PAL_PAD(LINE_S3)
|
||||||
|
#define PWM_SERVO_3_AF AF_S3
|
||||||
|
#define PWM_SERVO_3_DRIVER CONCAT_BOARD_PARAM(PWMD, S3_TIM)
|
||||||
|
#define PWM_SERVO_3_CHANNEL (S3_TIM_CH-1)
|
||||||
|
#define PWM_SERVO_3_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
|
||||||
|
#else
|
||||||
|
#define PWM_SERVO_3_ACTIVE PWM_OUTPUT_DISABLED
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef USE_PWM4
|
||||||
|
#define USE_PWM4 1
|
||||||
|
#endif
|
||||||
|
#if USE_PWM4
|
||||||
|
#define PWM_SERVO_4 4
|
||||||
|
#define PWM_SERVO_4_GPIO PAL_PORT(LINE_S4)
|
||||||
|
#define PWM_SERVO_4_PIN PAL_PAD(LINE_S4)
|
||||||
|
#define PWM_SERVO_4_AF AF_S4
|
||||||
|
#define PWM_SERVO_4_DRIVER CONCAT_BOARD_PARAM(PWMD, S4_TIM)
|
||||||
|
#define PWM_SERVO_4_CHANNEL (S4_TIM_CH-1)
|
||||||
|
#define PWM_SERVO_4_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
|
||||||
|
#else
|
||||||
|
#define PWM_SERVO_4_ACTIVE PWM_OUTPUT_DISABLED
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef USE_PWM5
|
||||||
|
#define USE_PWM5 1
|
||||||
|
#endif
|
||||||
|
#if USE_PWM5
|
||||||
|
#define PWM_SERVO_5 5
|
||||||
|
#define PWM_SERVO_5_GPIO PAL_PORT(LINE_S5)
|
||||||
|
#define PWM_SERVO_5_PIN PAL_PAD(LINE_S5)
|
||||||
|
#define PWM_SERVO_5_AF AF_S5
|
||||||
|
#define PWM_SERVO_5_DRIVER CONCAT_BOARD_PARAM(PWMD, S5_TIM)
|
||||||
|
#define PWM_SERVO_5_CHANNEL (S5_TIM_CH-1)
|
||||||
|
#define PWM_SERVO_5_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
|
||||||
|
#else
|
||||||
|
#define PWM_SERVO_5_ACTIVE PWM_OUTPUT_DISABLED
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef USE_PWM6
|
||||||
|
#define USE_PWM6 1
|
||||||
|
#endif
|
||||||
|
#if USE_PWM6
|
||||||
|
#define PWM_SERVO_6 6
|
||||||
|
#define PWM_SERVO_6_GPIO PAL_PORT(LINE_S6)
|
||||||
|
#define PWM_SERVO_6_PIN PAL_PAD(LINE_S6)
|
||||||
|
#define PWM_SERVO_6_AF AF_S6
|
||||||
|
#define PWM_SERVO_6_DRIVER CONCAT_BOARD_PARAM(PWMD, S6_TIM)
|
||||||
|
#define PWM_SERVO_6_CHANNEL (S6_TIM_CH-1)
|
||||||
|
#define PWM_SERVO_6_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
|
||||||
|
#else
|
||||||
|
#define PWM_SERVO_6_ACTIVE PWM_OUTPUT_DISABLED
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// servo index starting at 1 + regular servos
|
||||||
|
// so NB = 1+6
|
||||||
|
#define ACTUATORS_PWM_NB 7
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef STM32_PWM_USE_TIM1
|
||||||
|
#define PWM_CONF_TIM1 STM32_PWM_USE_TIM1
|
||||||
|
#else
|
||||||
|
#define PWM_CONF_TIM1 1
|
||||||
|
#endif
|
||||||
|
#define PWM_CONF1_DEF { \
|
||||||
|
PWM_FREQUENCY, \
|
||||||
|
PWM_FREQUENCY/TIM1_SERVO_HZ, \
|
||||||
|
NULL, \
|
||||||
|
{ \
|
||||||
|
{ PWM_SERVO_2_ACTIVE, NULL }, \
|
||||||
|
{ PWM_SERVO_3_ACTIVE, NULL }, \
|
||||||
|
{ PWM_SERVO_1_ACTIVE, NULL }, \
|
||||||
|
{ PWM_OUTPUT_DISABLED, NULL }, \
|
||||||
|
}, \
|
||||||
|
0, \
|
||||||
|
0 \
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef STM32_PWM_USE_TIM3
|
||||||
|
#define PWM_CONF_TIM3 STM32_PWM_USE_TIM3
|
||||||
|
#else
|
||||||
|
#define PWM_CONF_TIM3 1
|
||||||
|
#endif
|
||||||
|
#define PWM_CONF3_DEF { \
|
||||||
|
PWM_FREQUENCY, \
|
||||||
|
PWM_FREQUENCY/TIM3_SERVO_HZ, \
|
||||||
|
NULL, \
|
||||||
|
{ \
|
||||||
|
{ PWM_OUTPUT_DISABLED, NULL }, \
|
||||||
|
{ PWM_OUTPUT_DISABLED, NULL }, \
|
||||||
|
{ PWM_SERVO_4_ACTIVE, NULL }, \
|
||||||
|
{ PWM_SERVO_5_ACTIVE, NULL }, \
|
||||||
|
}, \
|
||||||
|
0, \
|
||||||
|
0 \
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef STM32_PWM_USE_TIM5
|
||||||
|
#define PWM_CONF_TIM5 STM32_PWM_USE_TIM5
|
||||||
|
#else
|
||||||
|
#define PWM_CONF_TIM5 1
|
||||||
|
#endif
|
||||||
|
#define PWM_CONF5_DEF { \
|
||||||
|
PWM_FREQUENCY, \
|
||||||
|
PWM_FREQUENCY/TIM5_SERVO_HZ, \
|
||||||
|
NULL, \
|
||||||
|
{ \
|
||||||
|
{ PWM_OUTPUT_DISABLED, NULL }, \
|
||||||
|
{ PWM_OUTPUT_DISABLED, NULL }, \
|
||||||
|
{ PWM_OUTPUT_DISABLED, NULL }, \
|
||||||
|
{ PWM_SERVO_6_ACTIVE, NULL }, \
|
||||||
|
}, \
|
||||||
|
0, \
|
||||||
|
0 \
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DSHOT
|
||||||
|
*/
|
||||||
|
#ifndef DSHOT_TELEMETRY_DEV
|
||||||
|
#define DSHOT_TELEMETRY_DEV NULL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef USE_DSHOT_TIM
|
||||||
|
#define USE_DSHOT_TIM 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if USE_DSHOT_TIM
|
||||||
|
|
||||||
|
#define DSHOT_SERVO_1 1
|
||||||
|
#define DSHOT_SERVO_1_GPIO PAL_PORT(LINE_S1)
|
||||||
|
#define DSHOT_SERVO_1_PIN PAL_PAD(LINE_S1)
|
||||||
|
#define DSHOT_SERVO_1_AF AF_S1
|
||||||
|
#define DSHOT_SERVO_1_DRIVER CONCAT_BOARD_PARAM(DSHOTD, S1_TIM)
|
||||||
|
#define DSHOT_SERVO_1_CHANNEL S1_TIM_CH
|
||||||
|
|
||||||
|
#define DSHOT_SERVO_2 2
|
||||||
|
#define DSHOT_SERVO_2_GPIO PAL_PORT(LINE_S2)
|
||||||
|
#define DSHOT_SERVO_2_PIN PAL_PAD(LINE_S2)
|
||||||
|
#define DSHOT_SERVO_2_AF AF_S2
|
||||||
|
#define DSHOT_SERVO_2_DRIVER CONCAT_BOARD_PARAM(DSHOTD, S2_TIM)
|
||||||
|
#define DSHOT_SERVO_2_CHANNEL S2_TIM_CH
|
||||||
|
|
||||||
|
#define DSHOT_SERVO_3 3
|
||||||
|
#define DSHOT_SERVO_3_GPIO PAL_PORT(LINE_S3)
|
||||||
|
#define DSHOT_SERVO_3_PIN PAL_PAD(LINE_S3)
|
||||||
|
#define DSHOT_SERVO_3_AF AF_S3
|
||||||
|
#define DSHOT_SERVO_3_DRIVER CONCAT_BOARD_PARAM(DSHOTD, S3_TIM)
|
||||||
|
#define DSHOT_SERVO_3_CHANNEL S3_TIM_CH
|
||||||
|
|
||||||
|
#define DSHOT_SERVO_4 4
|
||||||
|
#define DSHOT_SERVO_4_GPIO PAL_PORT(LINE_S4)
|
||||||
|
#define DSHOT_SERVO_4_PIN PAL_PAD(LINE_S4)
|
||||||
|
#define DSHOT_SERVO_4_AF AF_S4
|
||||||
|
#define DSHOT_SERVO_4_DRIVER CONCAT_BOARD_PARAM(DSHOTD, S4_TIM)
|
||||||
|
#define DSHOT_SERVO_4_CHANNEL S4_TIM_CH
|
||||||
|
|
||||||
|
#define DSHOT_CONF_TIM1 1
|
||||||
|
#define DSHOT_CONF4_DEF { \
|
||||||
|
.dma_stream = STM32_PWM1_UP_DMA_STREAM, \
|
||||||
|
.dma_channel = STM32_PWM1_UP_DMA_CHANNEL, \
|
||||||
|
.pwmp = &PWMD1, \
|
||||||
|
.tlm_sd = DSHOT_TELEMETRY_DEV, \
|
||||||
|
.dma_buf = &dshot4DmaBuffer, \
|
||||||
|
.dcache_memory_in_use = false \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define DSHOT_CONF_TIM3 1
|
||||||
|
#define DSHOT_CONF3_DEF { \
|
||||||
|
.dma_stream = STM32_PWM3_UP_DMA_STREAM, \
|
||||||
|
.dma_channel = STM32_PWM3_UP_DMA_CHANNEL, \
|
||||||
|
.pwmp = &PWMD3, \
|
||||||
|
.tlm_sd = DSHOT_TELEMETRY_DEV, \
|
||||||
|
.dma_buf = &dshot4DmaBuffer, \
|
||||||
|
.dcache_memory_in_use = false \
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UART1 (Modem)
|
||||||
|
*/
|
||||||
|
#define UART1_GPIO_PORT_TX PAL_PORT(LINE_UART1_TX)
|
||||||
|
#define UART1_GPIO_TX PAL_PAD(LINE_UART1_TX)
|
||||||
|
#define UART1_GPIO_PORT_RX PAL_PORT(LINE_UART1_RX)
|
||||||
|
#define UART1_GPIO_RX PAL_PAD(LINE_UART1_RX)
|
||||||
|
#define UART1_GPIO_AF AF_UART1_TX
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UART2 (GPS)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define UART2_GPIO_PORT_TX PAL_PORT(LINE_UART2_TX)
|
||||||
|
#define UART2_GPIO_TX PAL_PAD(LINE_UART2_TX)
|
||||||
|
#define UART2_GPIO_PORT_RX PAL_PORT(LINE_UART2_RX)
|
||||||
|
#define UART2_GPIO_RX PAL_PAD(LINE_UART2_RX)
|
||||||
|
#define UART2_GPIO_AF AF_UART2_TX
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UART3 (Companion)
|
||||||
|
*/
|
||||||
|
#define UART3_GPIO_PORT_TX PAL_PORT(LINE_UART3_TX)
|
||||||
|
#define UART3_GPIO_TX PAL_PAD(LINE_UART3_TX)
|
||||||
|
#define UART3_GPIO_PORT_RX PAL_PORT(LINE_UART3_RX)
|
||||||
|
#define UART3_GPIO_RX PAL_PAD(LINE_UART3_RX)
|
||||||
|
#define UART3_GPIO_AF AF_UART3_TX
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UART4
|
||||||
|
*/
|
||||||
|
#define UART4_GPIO_PORT_TX PAL_PORT(LINE_UART4_TX)
|
||||||
|
#define UART4_GPIO_TX PAL_PAD(LINE_UART4_TX)
|
||||||
|
#define UART4_GPIO_PORT_RX PAL_PORT(LINE_UART4_RX)
|
||||||
|
#define UART4_GPIO_RX PAL_PAD(LINE_UART4_RX)
|
||||||
|
#define UART4_GPIO_AF AF_UART4_TX
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SBUS / Spektrum port
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define USE_UART6_RX TRUE
|
||||||
|
#define USE_UART6_TX FALSE
|
||||||
|
#define UART6_GPIO_PORT_RX PAL_PORT(LINE_RC1)
|
||||||
|
#define UART6_GPIO_RX PAL_PAD(LINE_RC1)
|
||||||
|
#define UART6_GPIO_AF RC1_USART_AF
|
||||||
|
|
||||||
|
/* The line that is pulled low at power up to initiate the bind process
|
||||||
|
*/
|
||||||
|
#define SPEKTRUM_BIND_PIN PAL_PORT(LINE_XXX)
|
||||||
|
#define SPEKTRUM_BIND_PIN_PORT PAL_PAD(LINE_XXX)
|
||||||
|
|
||||||
|
// no wait with chibios as the RTC oscillator takes longer to stabilize
|
||||||
|
#define SPEKTRUM_BIND_WAIT 30000
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PPM radio defines
|
||||||
|
*
|
||||||
|
* available on RC2
|
||||||
|
*/
|
||||||
|
#define RC_PPM_TICKS_PER_USEC 6
|
||||||
|
#define PPM_TIMER_FREQUENCY 6000000
|
||||||
|
#define PPM_CHANNEL CONCAT_BOARD_PARAM(ICU_CHANNEL_, RC2_TIM_CH)
|
||||||
|
#define PPM_TIMER CONCAT_BOARD_PARAM(ICUD, RC2_TIM)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* I2C defines
|
||||||
|
*/
|
||||||
|
// Digital noise filter: 0 disabled, [0x1 - 0xF] enable up to n t_I2CCLK
|
||||||
|
#define STM32_CR1_DNF(n) ((n & 0x0f) << 8)
|
||||||
|
// Timing register
|
||||||
|
#define I2C_FAST_400KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR (STM32_TIMINGR_PRESC(0U) | \
|
||||||
|
STM32_TIMINGR_SCLDEL(10U) | STM32_TIMINGR_SDADEL(0U) | \
|
||||||
|
STM32_TIMINGR_SCLH(34U) | STM32_TIMINGR_SCLL(86U))
|
||||||
|
#define I2C_STD_100KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR (STM32_TIMINGR_PRESC(1U) | \
|
||||||
|
STM32_TIMINGR_SCLDEL(9U) | STM32_TIMINGR_SDADEL(0U) | \
|
||||||
|
STM32_TIMINGR_SCLH(105U) | STM32_TIMINGR_SCLL(153U))
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef I2C1_CLOCK_SPEED
|
||||||
|
#define I2C1_CLOCK_SPEED 400000
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if I2C1_CLOCK_SPEED == 400000
|
||||||
|
#define I2C1_CFG_DEF { \
|
||||||
|
.timingr = I2C_FAST_400KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR, \
|
||||||
|
.cr1 = STM32_CR1_DNF(0), \
|
||||||
|
.cr2 = 0 \
|
||||||
|
}
|
||||||
|
#elif I2C1_CLOCK_SPEED == 100000
|
||||||
|
#define I2C1_CFG_DEF { \
|
||||||
|
.timingr = I2C_STD_100KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR, \
|
||||||
|
.cr1 = STM32_CR1_DNF(0), \
|
||||||
|
.cr2 = 0 \
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#error "Unknown I2C1 clock speed"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SPI Config
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Internal SPI (SDCARD)
|
||||||
|
#define SPI1_GPIO_AF AF_SPI1_CLK
|
||||||
|
#define SPI1_GPIO_PORT_MISO PAL_PORT(LINE_SPI1_MISO)
|
||||||
|
#define SPI1_GPIO_MISO PAL_PAD(LINE_SPI1_MISO)
|
||||||
|
#define SPI1_GPIO_PORT_MOSI PAL_PORT(LINE_SPI1_MOSI)
|
||||||
|
#define SPI1_GPIO_MOSI PAL_PAD(LINE_SPI1_MOSI)
|
||||||
|
#define SPI1_GPIO_PORT_SCK PAL_PORT(LINE_SPI1_CLK)
|
||||||
|
#define SPI1_GPIO_SCK PAL_PAD(LINE_SPI1_CLK)
|
||||||
|
|
||||||
|
// Internal SPI (OSD)
|
||||||
|
#define SPI2_GPIO_AF AF_SPI2_CLK
|
||||||
|
#define SPI2_GPIO_PORT_MISO PAL_PORT(LINE_SPI2_MISO)
|
||||||
|
#define SPI2_GPIO_MISO PAL_PAD(LINE_SPI2_MISO)
|
||||||
|
#define SPI2_GPIO_PORT_MOSI PAL_PORT(LINE_SPI2_MOSI)
|
||||||
|
#define SPI2_GPIO_MOSI PAL_PAD(LINE_SPI2_MOSI)
|
||||||
|
#define SPI2_GPIO_PORT_SCK PAL_PORT(LINE_SPI2_CLK)
|
||||||
|
#define SPI2_GPIO_SCK PAL_PAD(LINE_SPI2_CLK)
|
||||||
|
|
||||||
|
// Internal SPI (IMU)
|
||||||
|
#define SPI4_GPIO_AF AF_SPI4_INTERNAL_CLK
|
||||||
|
#define SPI4_GPIO_PORT_MISO PAL_PORT(LINE_SPI4_INTERNAL_MISO)
|
||||||
|
#define SPI4_GPIO_MISO PAL_PAD(LINE_SPI4_INTERNAL_MISO)
|
||||||
|
#define SPI4_GPIO_PORT_MOSI PAL_PORT(LINE_SPI4_INTERNAL_MOSI)
|
||||||
|
#define SPI4_GPIO_MOSI PAL_PAD(LINE_SPI4_INTERNAL_MOSI)
|
||||||
|
#define SPI4_GPIO_PORT_SCK PAL_PORT(LINE_SPI4_INTERNAL_CLK)
|
||||||
|
#define SPI4_GPIO_SCK PAL_PAD(LINE_SPI4_INTERNAL_CLK)
|
||||||
|
|
||||||
|
// SLAVE0 on IMU1 (MPU6000)
|
||||||
|
#define SPI_SELECT_SLAVE0_PORT PAL_PORT(LINE_IMU_CS)
|
||||||
|
#define SPI_SELECT_SLAVE0_PIN PAL_PAD(LINE_IMU_CS)
|
||||||
|
// SLAVE1 on SDCARD
|
||||||
|
#define SPI_SELECT_SLAVE1_PORT PAL_PORT(LINE_SDCARD_CS)
|
||||||
|
#define SPI_SELECT_SLAVE1_PIN PAL_PAD(LINE_SDCARD_CS)
|
||||||
|
// SLAVE2 on OSD
|
||||||
|
#define SPI_SELECT_SLAVE2_PORT PAL_PORT(LINE_OSD_CS)
|
||||||
|
#define SPI_SELECT_SLAVE2_PIN PAL_PAD(LINE_OSD_CS)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Baro
|
||||||
|
*
|
||||||
|
* Apparently needed for backwards compatibility
|
||||||
|
* with the ancient onboard baro boards
|
||||||
|
*/
|
||||||
|
#ifndef USE_BARO_BOARD
|
||||||
|
#define USE_BARO_BOARD 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Actuators for fixedwing
|
||||||
|
*/
|
||||||
|
/* Default actuators driver */
|
||||||
|
#define DEFAULT_ACTUATORS "subsystems/actuators/actuators_pwm.h"
|
||||||
|
#define ActuatorDefaultSet(_x,_y) ActuatorPwmSet(_x,_y)
|
||||||
|
#define ActuatorsDefaultInit() ActuatorsPwmInit()
|
||||||
|
#define ActuatorsDefaultCommit() ActuatorsPwmCommit()
|
||||||
|
|
||||||
|
#endif /* CONFIG_HOLYBRO_KAKUTE_F7_H */
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user