APM:Libraries
board.h
Go to the documentation of this file.
1 #ifndef _BOARD_STM32V1F4_H_
2 #define _BOARD_STM32V1F4_H_
3 
4 
5 #define BOARD_OWN_NAME "F4Light"
6 
10 #define __CM4_REV 0x0001
11 #define __MPU_PRESENT 1
12 #define __NVIC_PRIO_BITS 4
13 #define __Vendor_SysTickConfig 0
14 #define __FPU_PRESENT 1
16 #define HSE_VALUE (8000000)
17 
18 #define CYCLES_PER_MICROSECOND 168
19 #define SYSTICK_RELOAD_VAL (CYCLES_PER_MICROSECOND*1000-1)
20 
21 #undef STM32_PCLK1
22 #undef STM32_PCLK2
23 #define STM32_PCLK1 (CYCLES_PER_MICROSECOND*1000000/4)
24 #define STM32_PCLK2 (CYCLES_PER_MICROSECOND*1000000/2)
25 
26 #ifndef LOW
27 # define LOW 0
28 #endif
29 #ifndef HIGH
30 # define HIGH 1
31 #endif
32 
33 #define BOARD_BUTTON_PIN 254 // no button
34 
35 //#define BOARD_RFM22B_CS_PIN 103 // PA15 CS_RFM22B
36 //#define BOARD_RFM22B_INT_PIN 26 // PD2 INT_RFM22
37 //#define BOARD_BUZZER_PIN 5 // PB15, PWM2 - used as PPM2
38 #define HAL_BUZZER_ON 1
39 #define HAL_BUZZER_OFF 0
40 
41 #define BOARD_NR_USARTS 5
42 #define BOARD_USART1_TX_PIN 23
43 #define BOARD_USART1_RX_PIN 24
44 #define BOARD_USART3_TX_PIN 0
45 #define BOARD_USART3_RX_PIN 100
46 #define BOARD_USART6_TX_PIN 12
47 #define BOARD_USART6_RX_PIN 13
48 
49 #define BOARD_USART4_RX_PIN 48
50 #define BOARD_USART4_TX_PIN 47
51 
52 
53 
54 
55 
56 #define BOARD_NR_SPI 3
57 #define BOARD_SPI1_SCK_PIN 52
58 #define BOARD_SPI1_MISO_PIN 53
59 #define BOARD_SPI1_MOSI_PIN 54
60 #define BOARD_SPI2_SCK_PIN 255
61 #define BOARD_SPI2_MISO_PIN 255
62 #define BOARD_SPI2_MOSI_PIN 255
63 #define BOARD_SPI3_MOSI_PIN 18
64 #define BOARD_SPI3_MISO_PIN 17
65 #define BOARD_SPI3_SCK_PIN 16
66 
67 #define BOARD_DATAFLASH_CS_PIN 104
68 
69 #define BOARD_MPU6000_CS_PIN 51
70 #define BOARD_MPU6000_DRDY_PIN 10 // PC4
71 
72 
73 #define BOARD_SBUS_INVERTER 6
74 #define BOARD_SBUS_UART 1 // can use some UART as hardware inverted input
75 
76 
77 #define BOARD_USB_SENSE 11 // PC5
78 
79 
80 // bus 2 (soft) pins
81 #define BOARD_SOFT_SCL 14
82 #define BOARD_SOFT_SDA 15
83 
84 // SoftSerial pins
85 #define BOARD_SOFTSERIAL_TX 14
86 #define BOARD_SOFTSERIAL_RX 15
87 
88 
89 # define BOARD_BLUE_LED_PIN 36 // BLUE
90 # define BOARD_GREEN_LED_PIN 105 // GREEN
91 //# define BOARD_GPIO_C_LED_PIN 37 // PB6 YELLOW OPTIONAL (not included)
92 //# define BOARD_GPIO_C_LED_PIN 9 // frequency select - resistor to VCC or ground
93 
94 # define HAL_GPIO_A_LED_PIN BOARD_BLUE_LED_PIN
95 # define HAL_GPIO_B_LED_PIN BOARD_GREEN_LED_PIN
96 
97 # define HAL_GPIO_LED_ON LOW
98 # define HAL_GPIO_LED_OFF HIGH
99 
100 
101 #define BOARD_NR_GPIO_PINS 109
102 
103 #define I2C1_SDA PB9
104 #define I2C1_SCL PB8
105 
106 #define I2C2_SDA PB11
107 #define I2C2_SCL PB10
108 
109 #define BOARD_I2C_BUS_INT 0 // hardware I2C
110 
111 #define BOARD_I2C_BUS_EXT 2 // external soft I2C or flexiPort (by parameter)
112 #define BOARD_I2C_BUS_SLOW 2 // slow down this bus
113 
114 #define BOARD_HAS_UART3
115 #define BOARD_I2C_FLEXI 1 // I2C can be on Flexi port
116 
117 
118 
119 #define BOARD_BARO_DEFAULT HAL_BARO_MS5611_I2C
120 #define BOARD_BARO_MS5611_I2C_ADDR 0x77
121 
122 
123 #define HAL_BARO_MS5611_I2C_BUS BOARD_I2C_BUS_INT
124 #define HAL_BARO_MS5611_I2C_ADDR BOARD_BARO_MS5611_I2C_ADDR
125 
126 //#define HAL_BARO_MS5611_I2C_BUS_EXT BOARD_I2C_BUS_EXT // external baro on soft I2C
127 //#define HAL_BARO_BMP280_BUS BOARD_I2C_BUS_EXT // external baro on soft I2C
128 //#define HAL_BARO_BMP280_I2C_ADDR (0x76)
129 
130 #define BOARD_COMPASS_DEFAULT HAL_COMPASS_HMC5843
131 #define BOARD_COMPASS_HMC5843_I2C_ADDR 0x1E
132 #define BOARD_HMC5883_DRDY_PIN 38 // PB7 - but it not used by driver
133 #define BOARD_COMPASS_HMC5843_ROTATION ROTATION_YAW_270
134 
135 #define HAL_COMPASS_HMC5843_I2C_BUS BOARD_I2C_BUS_INT
136 #define HAL_COMPASS_HMC5843_I2C_EXT_BUS BOARD_I2C_BUS_EXT // external compass on soft I2C
137 #define HAL_COMPASS_HMC5843_I2C_ADDR BOARD_COMPASS_HMC5843_I2C_ADDR
138 #define HAL_COMPASS_HMC5843_ROTATION BOARD_COMPASS_HMC5843_ROTATION
139 
140 #define BOARD_INS_DEFAULT HAL_INS_MPU60XX_SPI
141 #define BOARD_INS_ROTATION ROTATION_YAW_180
142 #define BOARD_INS_MPU60x0_NAME "mpu6000"
143 
144 #define BOARD_STORAGE_SIZE 8192 // 4096 // EEPROM size
145 
146 #define BOARD_DATAFLASH_NAME "dataflash"
147 #define BOARD_DATAFLASH_PAGES 0x2000
148 #define BOARD_DATAFLASH_ERASE_SIZE (65536)// in bytes
149 //#define BOARD_DATAFLASH_EEPROM 1 // use dataflash as EEPROM - TODO
150 
151 #define BOARD_SDCARD_NAME "sdcard"
152 #define BOARD_SDCARD_CS_PIN 103 // PA15 CS_RFM22B
153 #define BOARD_SDCARD_DET_PIN 26 // PD2 EXTI_RFM22B / UART5_RX
154 
155 #define USB_MASSSTORAGE
156 #define HAL_BOARD_LOG_DIRECTORY "0:/"
157 #define HAL_BOARD_TERRAIN_DIRECTORY "0:/TERRAIN"
158 
159 
160 #define BOARD_UARTS_LAYOUT 1
161 #define USE_SOFTSERIAL 1
162 
163 # define BOARD_PUSHBUTTON_PIN 254 // no pushbutton
164 # define BOARD_USB_MUX_PIN -1 // no USB mux
165 # define BOARD_BATTERY_VOLT_PIN 8 // Battery voltage on A0 (PC2) D8
166 # define BOARD_BATTERY_CURR_PIN 7 // Battery current on A1 (PC1) D7
167 # define BOARD_SONAR_SOURCE_ANALOG_PIN 254 // no sonar by default
168 
169 
170 # define HAL_BATT_VOLT_PIN 8 // ChibiOS compatible defines
171 # define HAL_BATT_CURR_PIN 7
172 # define HAL_BATT_VOLT_SCALE 10.1
173 # define HAL_BATT_CURR_SCALE 17
174 
175 
176 #define BOARD_USB_DMINUS 108
177 
178 //#define BOARD_NRF_NAME "nrf24"
179 //#define BOARD_NRF_CS_PIN 103 // PA15 CS_RFM22B
180 
181 // motor layouts
182 #define SERVO_PIN_1 46 // PB0
183 #define SERVO_PIN_2 45 // PB1
184 #define SERVO_PIN_3 50 // PA3
185 #define SERVO_PIN_4 49 // PA2
186 #define SERVO_PIN_5 48 // PA1
187 #define SERVO_PIN_6 47 // PA0
188 
189 // input pins as servo outputs
190 #define SERVO_PIN_7 5 // PB15 CH2_IN - PPM2
191 #define SERVO_PIN_8 12 // PC6 CH3_IN UART6
192 #define SERVO_PIN_9 13 // PC7 CH4_IN UART6
193 #define SERVO_PIN_10 14 // PC8 CH5_IN i2c
194 #define SERVO_PIN_11 15 // PC9 CH6_IN i2c
195 
196 #define MOTOR_LAYOUT_DEFAULT 0
197 
198 #define USE_SERIAL_4WAY_BLHELI_INTERFACE
199 
200 
201 //#define HAL_CONSOLE USB_Driver // console on USB
202 //#define HAL_CONSOLE_PORT 0 // USB
203 #define HAL_CONSOLE uart1Driver // console on radio
204 #define HAL_CONSOLE_PORT 1 // console on radio
205 
206 /*
207  // @Param: FLEXI_I2C
208  // @DisplayName: use FlexiPort as I2C, not USART
209  // @Description: Allows to switch FlexiPort usage between USART and I2C modes
210  // @Values: 0:USART, 1:I2C
211  // @User: Advanced
212  AP_GROUPINFO("FLEXI_I2C", 6, AP_Param_Helper, _flexi_i2c, 0) \
213 
214  // @Param: USB_STORAGE
215  // @DisplayName: allows access to SD card at next reboot
216  // @Description: Allows to read/write internal SD card via USB mass-storage protocol. Auto-reset.
217  // @Values: 0:normal, 1:work as USB flash drive
218  // @User: Advanced
219  AP_GROUPINFO("USB_STORAGE", 8, AP_Param_Helper, _usb_storage, 0), \
220 
221  // @Param: SD_REFORMAT
222  // @DisplayName: Allows to re-format SD card in case of errors in FS
223  // @Description: Any FS errors that cause failure of logging will be corrected by SD card formatting
224  // @Values: 0: not allow, 1:allow
225  // @User: Advanced
226  AP_GROUPINFO("SD_REFORMAT", 7, AP_Param_Helper, _sd_format, 0),
227 */
228 
229 #define BOARD_HAL_VARINFO \
230  AP_GROUPINFO("FLEXI_I2C", 30, AP_Param_Helper, _flexi_i2c, 0), \
231  AP_GROUPINFO("USB_STORAGE", 31, AP_Param_Helper, _usb_storage, 0), \
232  AP_GROUPINFO("SD_REFORMAT", 32, AP_Param_Helper, _sd_format, 0),
233 
234 
235 // parameters
236 #define BOARD_HAL_PARAMS \
237  AP_Int8 _flexi_i2c; \
238  AP_Int8 _usb_storage; \
239  AP_Int8 _sd_format;
240 
241 #define ERROR_USART _USART1 // main port - telemetry, all panic messages goes there
242 
243 #endif