/
hwdef.dat
260 lines (193 loc) · 5.55 KB
/
hwdef.dat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
# hw definition file for processing by chibios_hwdef.py
# for the HolybroV6C hardware
# default to all pins low to avoid ESD issues
#DEFAULTGPIO OUTPUT LOW PULLDOWN
# MCU class and specific type
MCU STM32H7xx STM32H743xx
# crystal frequency
OSCILLATOR_HZ 16000000
# ChibiOS system timer
STM32_ST_USE_TIMER 2
# USB setup
USB_VENDOR 0x3162 # ONLY FOR USE BY Holybro
USB_PRODUCT 0x0053
USB_STRING_MANUFACTURER "Holybro"
# board ID for firmware load
APJ_BOARD_ID 56
FLASH_RESERVE_START_KB 128
# to be compatible with the px4 bootloader we need
# to use a different RAM_MAP
env USE_ALT_RAM_MAP 1
# flash size
FLASH_SIZE_KB 2048
env OPTIMIZE -O2
# order of UARTs (and USB)
SERIAL_ORDER OTG1 UART7 UART5 USART1 UART8 USART2 USART3 OTG2
# USB
PA11 OTG_FS_DM OTG1
PA12 OTG_FS_DP OTG1
PA9 VBUS INPUT OPENDRAIN
# pins for SWD debugging
PA13 JTMS-SWDIO SWD
PA14 JTCK-SWCLK SWD
# telem1
PE8 UART7_TX UART7
PE7 UART7_RX UART7
PE9 UART7_RTS UART7 LOW PULLDOWN
PE10 UART7_CTS UART7
# telem2
PC12 UART5_TX UART5
PD2 UART5_RX UART5
PC8 UART5_RTS UART5 LOW PULLDOWN
PC9 UART5_CTS UART5
# GPS1
PB6 USART1_TX USART1
PA10 USART1_RX USART1
# GPS2
PE1 UART8_TX UART8
PE0 UART8_RX UART8
# uart2 telem3
PD5 USART2_TX USART2
PA3 USART2_RX USART2
# debug uart
PD8 USART3_TX USART3
PD9 USART3_RX USART3
# USART6 is for IOMCU
PC6 USART6_TX USART6
PC7 USART6_RX USART6
IOMCU_UART USART6
# ADC
PC5 BATT_VOLTAGE_SENS ADC1 SCALE(1)
PC4 BATT_CURRENT_SENS ADC1 SCALE(1)
PB1 BATT2_VOLTAGE_SENS ADC1 SCALE(1)
PA2 BATT2_CURRENT_SENS ADC1 SCALE(1)
define HAL_BATT_VOLT_PIN 8
define HAL_BATT_CURR_PIN 4
define HAL_BATT_VOLT_SCALE 18.18
define HAL_BATT_CURR_SCALE 36.36
PA4 VDD_5V_SENS ADC1 SCALE(2)
# SPI1 - IMUs
PA5 SPI1_SCK SPI1
PA6 SPI1_MISO SPI1
PA7 SPI1_MOSI SPI1
PC13 ICM42688_CS CS
PC14 BMI055_G_CS CS
PC15 BMI055_A_CS CS
PE4 BMI055_DRDY_A INPUT
PE5 BMI055_DRDY_G INPUT
PE6 ICM42688_DRDY INPUT
# SPI2 - FRAM
PD3 SPI2_SCK SPI2
PC2 SPI2_MISO SPI2
PC3 SPI2_MOSI SPI2
PD4 FRAM_CS CS
# PWM output pins
PA8 TIM1_CH1 TIM1 PWM(1) GPIO(50)
PE11 TIM1_CH2 TIM1 PWM(2) GPIO(51)
PE13 TIM1_CH3 TIM1 PWM(3) GPIO(52)
PE14 TIM1_CH4 TIM1 PWM(4) GPIO(53)
PD14 TIM4_CH3 TIM4 PWM(5) GPIO(54)
PD15 TIM4_CH4 TIM4 PWM(6) GPIO(55)
PA0 TIM5_CH1 TIM5 PWM(7) GPIO(56)
PA1 TIM5_CH2 TIM5 PWM(8) GPIO(57)
# CAN bus
PD0 CAN1_RX CAN1
PD1 CAN1_TX CAN1
PB5 CAN2_RX CAN2
PB13 CAN2_TX CAN2
# I2C buses
# I2C1, GPS+MAG
PB7 I2C1_SDA I2C1
PB8 I2C1_SCL I2C1
# I2C2, GPS2+MAG
PB10 I2C2_SCL I2C2
PB11 I2C2_SDA I2C2
# I2C4 internal
PD12 I2C4_SCL I2C4
PD13 I2C4_SDA I2C4
# order of I2C buses
I2C_ORDER I2C4 I2C1 I2C2
define HAL_I2C_INTERNAL_MASK 1
# this board is tight on DMA channels. To allow for more UART DMA we
# disable DMA on I2C. This also prevents a problem with DMA on I2C
# interfering with IMUs
# heater
PB9 HEATER_EN OUTPUT LOW GPIO(80)
define HAL_HEATER_GPIO_PIN 80
# Setup the IMU heater
define HAL_HAVE_IMU_HEATER 1
define HAL_IMU_TEMP_DEFAULT 45
define HAL_IMUHEAT_P_DEFAULT 50
define HAL_IMUHEAT_I_DEFAULT 0.07
# power enable pins
PB2 VDD_3V3_SENSORS1_EN OUTPUT HIGH
# start peripheral power off, then enable after init
# this prevents a problem with radios that use RTS for
# bootloader hold
PC10 nVDD_5V_HIPOWER_EN OUTPUT HIGH
PE2 nVDD_5V_PERIPH_EN OUTPUT HIGH
# Control of Spektrum power pin
PH2 SPEKTRUM_PWR OUTPUT HIGH GPIO(73)
define HAL_GPIO_SPEKTRUM_PWR 73
# Spektrum Power is Active High
define HAL_SPEKTRUM_PWR_ENABLED 1
# power sensing
PE3 VDD_5V_PERIPH_nOC INPUT PULLUP
PF13 VDD_5V_HIPOWER_nOC INPUT PULLUP
PA15 VDD_BRICK_nVALID INPUT PULLUP
PB12 VDD_BRICK2_nVALID INPUT PULLUP
# microSD support
PD6 SDMMC2_CK SDMMC2
PD7 SDMMC2_CMD SDMMC2
PB14 SDMMC2_D0 SDMMC2
PB15 SDMMC2_D1 SDMMC2
PB3 SDMMC2_D2 SDMMC2
PB4 SDMMC2_D3 SDMMC2
define FATFS_HAL_DEVICE SDCD2
# LEDs
PD10 LED_RED OUTPUT OPENDRAIN GPIO(90) HIGH
PD11 LED_BLUE OUTPUT OPENDRAIN GPIO(92) HIGH
# setup for BoardLED2
define HAL_GPIO_A_LED_PIN 90
define HAL_GPIO_B_LED_PIN 92
define HAL_GPIO_LED_ON 0
# ID pins
PE12 HW_VER_REV_DRIVE OUTPUT LOW
# PC0 HW_REV_SENS ADC1 SCALE(1)
# PC1 HW_VER_SENS ADC1 SCALE(1)
# PWM output for buzzer
PB0 TIM3_CH3 TIM3 GPIO(77) ALARM
# barometers
BARO MS56XX I2C:0:0x76
BARO MS56XX I2C:0:0x77
BARO BMP388 I2C:0:0x77
# prototypes may have no baro
define HAL_BARO_ALLOW_INIT_NO_BARO 1
# compass
define HAL_PROBE_EXTERNAL_I2C_COMPASSES
COMPASS IST8310 I2C:0:0x0C false ROTATION_NONE
# compensate for magnetic field generated by the heater on 6C IST8310
define HAL_HEATER_MAG_OFFSET {AP_HAL::Device::make_bus_id(AP_HAL::Device::BUS_TYPE_I2C,0,0xc,0xa),Vector3f(17,14,0)}
# we need to stop the probe of an IST8310 as an internal compass with PITCH_180
define HAL_COMPASS_DISABLE_IST8310_INTERNAL_PROBE
# SPI devices
SPIDEV bmi055_g SPI1 DEVID1 BMI055_G_CS MODE3 10*MHZ 10*MHZ
SPIDEV bmi055_a SPI1 DEVID2 BMI055_A_CS MODE3 10*MHZ 10*MHZ
SPIDEV icm42688 SPI1 DEVID3 ICM42688_CS MODE3 2*MHZ 8*MHZ
SPIDEV ramtron SPI2 DEVID1 FRAM_CS MODE3 8*MHZ 8*MHZ
# 2 IMUs
IMU Invensensev3 SPI:icm42688 ROTATION_PITCH_180_YAW_90
IMU BMI055 SPI:bmi055_a SPI:bmi055_g ROTATION_PITCH_180
define HAL_DEFAULT_INS_FAST_SAMPLE 3
# enable RAMTROM parameter storage
define HAL_STORAGE_SIZE 32768
define HAL_WITH_RAMTRON 1
# allow to have have a dedicated safety switch pin
define HAL_HAVE_SAFETY_SWITCH 1
DMA_PRIORITY SDMMC* USART6* ADC* UART* USART* SPI* TIM*
# enable FAT filesystem support (needs a microSD defined via SDMMC)
define HAL_OS_FATFS_IO 1
ROMFS io_firmware.bin Tools/IO_Firmware/iofirmware_f103_lowpolh.bin
# enable support for dshot on iomcu
ROMFS io_firmware_dshot.bin Tools/IO_Firmware/iofirmware_f103_dshot_lowpolh.bin
define HAL_WITH_IO_MCU_DSHOT 1