FURYF3 and F4 support
[betaflight.git] / src / main / target / FURYF4 / target.h
blob64091a079b84fce1a8421a9a19adbd287c3a422e
1 /*
2 * This file is part of Cleanflight.
4 * Cleanflight is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
9 * Cleanflight is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with Cleanflight. If not, see <http://www.gnu.org/licenses/>.
18 #pragma once
20 #define TARGET_BOARD_IDENTIFIER "FYF4"
21 #define CONFIG_START_FLASH_ADDRESS (0x08080000) //0x08080000 to 0x080A0000 (FLASH_Sector_8)
23 #define USBD_PRODUCT_STRING "FuryF4"
25 #define LED0 PB5
26 #define LED1 PB4
28 #define BEEPER PA8
29 #define BEEPER_INVERTED
31 #define INVERTER PC0 // PC0 used as inverter select GPIO
32 #define INVERTER_USART USART1
34 // MPU6000 interrupts
35 #define USE_EXTI
36 #define MPU_INT_EXTI PC4
37 #define USE_MPU_DATA_READY_SIGNAL
39 #define ICM20689_CS_PIN PA4
40 #define ICM20689_SPI_INSTANCE SPI1
42 #define MPU6000_CS_PIN PA4
43 #define MPU6000_SPI_INSTANCE SPI1
45 #define MPU6500_CS_PIN PA4
46 #define MPU6500_SPI_INSTANCE SPI1
48 #define GYRO
49 #define USE_GYRO_SPI_ICM20689
50 #define GYRO_ICM20689_ALIGN CW180_DEG
52 #define USE_GYRO_SPI_MPU6000
53 #define GYRO_MPU6000_ALIGN CW180_DEG
54 #define USE_ACC_SPI_MPU6000
55 #define ACC_MPU6000_ALIGN CW180_DEG
57 #define USE_GYRO_MPU6500
58 #define USE_GYRO_SPI_MPU6500
59 #define GYRO_MPU6500_ALIGN CW180_DEG
61 #define ACC
62 #define USE_ACC_SPI_ICM20689
63 #define ACC_ICM20689_ALIGN CW180_DEG
65 #define USE_ACC_SPI_MPU6000
66 #define ACC_MPU6000_ALIGN CW180_DEG
68 #define USE_ACC_MPU6500
69 #define USE_ACC_SPI_MPU6500
70 #define ACC_MPU6500_ALIGN CW180_DEG
72 #define BARO
73 #define USE_BARO_MS5611
74 #define MS5611_I2C_INSTANCE I2CDEV_1
76 #define USE_SDCARD
78 #define SDCARD_DETECT_INVERTED
80 #define SDCARD_DETECT_PIN PD2
81 #define SDCARD_SPI_INSTANCE SPI2
82 #define SDCARD_SPI_CS_PIN PB12
85 #define SDCARD_DETECT_PIN PD2
86 #define SDCARD_DETECT_EXTI_LINE EXTI_Line2
87 #define SDCARD_DETECT_EXTI_PIN_SOURCE EXTI_PinSource2
88 #define SDCARD_DETECT_EXTI_PORT_SOURCE EXTI_PortSourceGPIOD
89 #define SDCARD_DETECT_EXTI_IRQn EXTI2_IRQn
91 #define SDCARD_SPI_INSTANCE SPI3
92 #define SDCARD_SPI_CS_PIN PB3
95 // SPI2 is on the APB1 bus whose clock runs at 84MHz. Divide to under 400kHz for init:
96 #define SDCARD_SPI_INITIALIZATION_CLOCK_DIVIDER 256 // 328kHz
97 // Divide to under 25MHz for normal operation:
98 #define SDCARD_SPI_FULL_SPEED_CLOCK_DIVIDER 4 // 21MHz
101 //#define SDCARD_DMA_CHANNEL_TX DMA1_Stream5
102 //#define SDCARD_DMA_CHANNEL_TX_COMPLETE_FLAG DMA_FLAG_TCIF5
103 //#define SDCARD_DMA_CLK RCC_AHB1Periph_DMA1
104 //#define SDCARD_DMA_CHANNEL DMA_Channel_0
106 #define SDCARD_DMA_CHANNEL_TX DMA1_Stream4
107 #define SDCARD_DMA_CHANNEL_TX_COMPLETE_FLAG DMA_FLAG_TCIF4
108 #define SDCARD_DMA_CLK RCC_AHB1Periph_DMA1
109 #define SDCARD_DMA_CHANNEL DMA_Channel_0
112 #define USE_FLASHFS
113 #define USE_FLASH_M25P16
114 #define M25P16_CS_PIN PB3
115 #define M25P16_SPI_INSTANCE SPI3
117 #define USE_VCP
118 #define VBUS_SENSING_PIN PC5
119 #define VBUS_SENSING_ENABLED
121 #define USE_UART1
122 #define UART1_RX_PIN PA10
123 #define UART1_TX_PIN PA9
124 #define UART1_AHB1_PERIPHERALS RCC_AHB1Periph_DMA2
126 #define USE_UART3
127 #define UART3_RX_PIN PB11
128 #define UART3_TX_PIN PB10
130 #define USE_UART6
131 #define UART6_RX_PIN PC7
132 #define UART6_TX_PIN PC6
134 #define SERIAL_PORT_COUNT 4 //VCP, USART1, USART3, USART6
136 #define USE_SPI
138 #define USE_SPI_DEVICE_1
140 #define USE_SPI_DEVICE_2
141 #define SPI2_NSS_PIN PB12
142 #define SPI2_SCK_PIN PB13
143 #define SPI2_MISO_PIN PB14
144 #define SPI2_MOSI_PIN PB15
146 #define USE_SPI_DEVICE_3
147 #define SPI3_NSS_PIN PB3
148 #define SPI3_SCK_PIN PC10
149 #define SPI3_MISO_PIN PC11
150 #define SPI3_MOSI_PIN PC12
152 #define USE_I2C
153 #define I2C_DEVICE (I2CDEV_1) // PB6-SCL, PB7-SDA
154 #define USE_I2C_PULLUP
155 #define I2C1_SCL PB6
156 #define I2C1_SDA PB7
158 #define USE_ADC
159 #define BOARD_HAS_VOLTAGE_DIVIDER
160 #define VBAT_ADC_PIN PC1
161 #define RSSI_ADC_PIN PC2
162 #define CURRENT_METER_ADC_PIN PC3
164 #define DEFAULT_FEATURES (FEATURE_VBAT | FEATURE_BLACKBOX)
165 #define DEFAULT_RX_FEATURE FEATURE_RX_SERIAL
166 #define SERIALRX_PROVIDER SERIALRX_SBUS
168 #define LED_STRIP
169 #define WS2811_PIN PA0
170 #define WS2811_TIMER TIM5
171 #define WS2811_DMA_HANDLER_IDENTIFER DMA1_ST2_HANDLER
172 #define WS2811_DMA_STREAM DMA1_Stream2
173 #define WS2811_DMA_IT DMA_IT_TCIF2
174 #define WS2811_DMA_CHANNEL DMA_Channel_6
175 #define WS2811_TIMER_CHANNEL TIM_Channel_1
176 #define WS2811_TIMER_GPIO_AF GPIO_AF_TIM5
178 #define ENABLE_BLACKBOX_LOGGING_ON_SDCARD_BY_DEFAULT
180 #define SPEKTRUM_BIND
181 // USART3 Rx, PB11
182 #define BIND_PIN PB11
184 #define USE_SERIAL_4WAY_BLHELI_INTERFACE
186 #define USE_DSHOT
188 #define TARGET_IO_PORTA 0xffff
189 #define TARGET_IO_PORTB 0xffff
190 #define TARGET_IO_PORTC 0xffff
191 #define TARGET_IO_PORTD (BIT(2))
193 #define USABLE_TIMER_CHANNEL_COUNT 5
194 #define USED_TIMERS ( TIM_N(2) | TIM_N(3) | TIM_N(8) )