Merge pull request #11195 from mathiasvr/pr-elrs-clean
[betaflight.git] / src / main / target / OMNIBUSF4FW / target.h
blobbf7c28e6e3457217d88fd613d91612bb890bc6ce
1 /*
2 * This file is part of Cleanflight and Betaflight.
4 * Cleanflight and Betaflight are free software. You can redistribute
5 * this software and/or modify this software under the terms of the
6 * GNU General Public License as published by the Free Software
7 * Foundation, either version 3 of the License, or (at your option)
8 * any later version.
10 * Cleanflight and Betaflight are distributed in the hope that they
11 * will be useful, but WITHOUT ANY WARRANTY; without even the implied
12 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13 * See the GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this software.
18 * If not, see <http://www.gnu.org/licenses/>.
21 #pragma once
23 #define USE_TARGET_CONFIG
25 // OMNIBUSF4FW for Version 2
26 // OMNIBUSF4FW1/OFW1 for Public Test Version
27 // (Not a valid target, .mk file must be supplied by a user)
28 // OMNIBUSF4V6
30 #if defined(OMNIBUSF4V6)
31 #define TARGET_BOARD_IDENTIFIER "OBV6"
32 #elif defined(OMNIBUSF4FW1)
33 #define TARGET_BOARD_IDENTIFIER "OFW1"
34 #else
35 #define TARGET_BOARD_IDENTIFIER "OBFW"
36 #endif
38 #if defined(OMNIBUSF4FW1)
39 #define USBD_PRODUCT_STRING "OmnibusF4 FWProto1"
40 #elif defined(OMNIBUSF4V6)
41 #define USBD_PRODUCT_STRING "OmnibusF4 V6"
42 #else
43 #define USBD_PRODUCT_STRING "OmnibusF4 Fireworks"
44 #endif
46 #if defined(OMNIBUSF4FW1)
47 #define LED0_PIN PB5
48 #else
49 #define LED0_PIN PA8
50 #endif
52 #define USE_BEEPER
53 #define BEEPER_PIN PB4
54 #define BEEPER_INVERTED
56 #define USE_ACC
57 #define USE_ACC_SPI_MPU6000
58 #define USE_ACC_SPI_MPU6500
60 #define USE_GYRO
61 #define USE_GYRO_SPI_MPU6000
62 #define USE_GYRO_SPI_MPU6500
64 #if defined(OMNIBUSF4V6)
65 #define GYRO_1_CS_PIN PA4 // Onboard IMU
66 #define GYRO_1_SPI_INSTANCE SPI1
67 #define GYRO_2_CS_PIN PC14 // External IMU
68 #define GYRO_2_SPI_INSTANCE SPI1
69 #else
70 #define GYRO_1_CS_PIN PD2
71 #define GYRO_1_SPI_INSTANCE SPI3
72 #define GYRO_2_CS_PIN PA4
73 #define GYRO_2_SPI_INSTANCE SPI1
74 #endif
76 #define GYRO_1_ALIGN CW180_DEG
78 #if defined(OMNIBUSF4V6)
79 #define GYRO_2_ALIGN CW0_DEG
80 #else
81 #define GYRO_2_ALIGN CW0_DEG_FLIP
82 #endif
84 #define GYRO_CONFIG_USE_GYRO_DEFAULT GYRO_CONFIG_USE_GYRO_1
86 // MPU6000 interrupts
87 #define GYRO_1_EXTI_PIN PC4
88 #define GYRO_2_EXTI_PIN NONE
90 #define USE_MAG
91 #define MAG_I2C_INSTANCE (I2CDEV_1)
92 #define USE_MAG_HMC5883
93 #define USE_MAG_LIS3MDL
94 #define MAG_HMC5883_ALIGN CW90_DEG
96 #define USE_BARO
97 #define BARO_I2C_INSTANCE (I2CDEV_1)
98 #define USE_BARO_SPI_BMP280
99 #define BARO_SPI_INSTANCE SPI3
100 #define BARO_CS_PIN PB3
101 #define DEFAULT_BARO_SPI_BMP280
103 #define USE_MAX7456
104 #define MAX7456_SPI_INSTANCE SPI3
105 #define MAX7456_SPI_CS_PIN PA15
107 #define USE_FLASHFS
108 #define USE_FLASH_M25P16
109 #define ENABLE_BLACKBOX_LOGGING_ON_SPIFLASH_BY_DEFAULT
110 #define FLASH_SPI_INSTANCE SPI2
111 #define FLASH_CS_PIN PB12
113 #define USE_VCP
114 #define VBUS_SENSING_PIN PC5
116 #define USE_UART1
117 #define UART1_RX_PIN PA10 // Inverted serial RX
118 #define UART1_TX_PIN PA9 // Non-inverted Half-duplex (exclusive with serial RX
120 #define USE_UART2
121 #define UART2_RX_PIN NONE
122 #define UART2_TX_PIN PA2 // Half-duplex
124 #define USE_UART3
125 #define UART3_RX_PIN PB11 // Shared with I2C2 (SDA)
126 #define UART3_TX_PIN PB10 // Shared with I2C2 (SCL)
128 #define USE_UART4
129 #define UART4_RX_PIN PA1 // Simplex RX, ESC telemetry
130 #define UART4_TX_PIN NONE
132 #define USE_UART6
133 #define UART6_RX_PIN PC7
134 #define UART6_TX_PIN PC6
136 #define USE_SOFTSERIAL1
137 //#define SOFTSERIAL1_TX_PIN PA9 // SmartPort, shared with UART1_TX, doesn't work (timer collision)
139 #define USE_SOFTSERIAL2
141 #define SERIAL_PORT_COUNT 8 // VCP, UART1,2,3,4,6, SOFTSERIAL x 2
143 #define USE_ESCSERIAL
144 #define ESCSERIAL_TIMER_TX_PIN PB8 // (PPM)
146 #define USE_SPI
147 #define USE_SPI_DEVICE_1
148 #define SPI1_SCK_PIN PA5
149 #define SPI1_MISO_PIN PA6
150 #define SPI1_MOSI_PIN PA7
152 #define USE_SPI_DEVICE_2
153 #define SPI2_NSS_PIN PB12
154 #define SPI2_SCK_PIN PB13
155 #define SPI2_MISO_PIN PB14
156 #define SPI2_MOSI_PIN PB15
158 #define USE_SPI_DEVICE_3
159 #define SPI3_NSS_PIN PA15
160 #define SPI3_SCK_PIN PC10
161 #define SPI3_MISO_PIN PC11
162 #define SPI3_MOSI_PIN PC12
164 #define USE_I2C
165 #if defined(OMNIBUSF4V6)
166 #define USE_I2C_DEVICE_1
167 #define I2C1_SCL PB8 // SCL PIN,alt MST8
168 #define I2C1_SDA PB9 // SDA PIN,alt MST7
169 #define I2C_DEVICE (I2CDEV_1)
170 #else
171 #define USE_I2C_DEVICE_2
172 #define I2C2_SCL NONE // PB10, shared with UART3TX
173 #define I2C2_SDA NONE // PB11, shared with UART3RX
174 #define I2C_DEVICE (I2CDEV_2)
175 #endif
177 #define USE_ADC
178 #define ADC_INSTANCE ADC2
179 #define ADC2_DMA_OPT 1 // DMA 2 Stream 3 Channel 1 (compat default)
180 #define CURRENT_METER_ADC_PIN PC1 // Direct from CRNT pad (part of onboard sensor for Pro)
181 #define VBAT_ADC_PIN PC2 // 11:1 (10K + 1K) divider
182 #define RSSI_ADC_PIN PA0 // Direct from RSSI pad
184 // Allegro Systems ACS781KLRTR-150U-T
185 #if !defined(OMNIBUSF4V6)
186 #define CURRENT_METER_SCALE_DEFAULT 176
187 #define CURRENT_METER_OFFSET_DEFAULT -18500
188 #endif
190 #define DEFAULT_VOLTAGE_METER_SOURCE VOLTAGE_METER_ADC
191 #define DEFAULT_CURRENT_METER_SOURCE CURRENT_METER_ADC
193 #define USE_TRANSPONDER
195 #define USE_SONAR
197 #define DEFAULT_RX_FEATURE FEATURE_RX_SERIAL
199 #define DEFAULT_FEATURES (FEATURE_OSD)
201 #define TARGET_IO_PORTA (0xffff & ~(BIT(14)|BIT(13)))
202 #define TARGET_IO_PORTB (0xffff & ~(BIT(2)))
203 #define TARGET_IO_PORTC 0xffff
204 #define TARGET_IO_PORTD BIT(2)
206 #define USABLE_TIMER_CHANNEL_COUNT 15
208 #define USED_TIMERS ( TIM_N(1) | TIM_N(2) | TIM_N(3) | TIM_N(4) | TIM_N(5) | TIM_N(8) | TIM_N(9) | TIM_N(10) | TIM_N(11))