I2C configurable clockspeed
[betaflight.git] / src / main / target / common_defaults_post.h
blob7324c629bd718f71f2eb6cf7510f6d00ed6fdf5c
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 // pg/max7456
23 #ifndef DEBUG_MODE
24 #define DEBUG_MODE DEBUG_NONE
25 #endif
27 #ifdef USE_MAX7456
28 #ifndef MAX7456_CLOCK_CONFIG_DEFAULT
29 #define MAX7456_CLOCK_CONFIG_DEFAULT MAX7456_CLOCK_CONFIG_OC
30 #endif
32 #ifndef MAX7456_SPI_CS_PIN
33 #define MAX7456_SPI_CS_PIN NONE
34 #endif
36 #ifndef MAX7456_SPI_INSTANCE
37 #define MAX7456_SPI_INSTANCE NULL
38 #endif
39 #endif
41 // pg/flash
43 #ifdef USE_FLASH_M25P16
44 #ifndef FLASH_CS_PIN
45 #define FLASH_CS_PIN NONE
46 #endif
48 #ifndef FLASH_SPI_INSTANCE
49 #define FLASH_SPI_INSTANCE NULL
50 #endif
51 #endif
53 // pg/flash
55 #ifdef USE_FLASH_M25P16
56 #ifndef FLASH_CS_PIN
57 #define FLASH_CS_PIN NONE
58 #endif
60 #ifndef FLASH_SPI_INSTANCE
61 #define FLASH_SPI_INSTANCE NULL
62 #endif
63 #endif
65 // pg/bus_i2c
67 #ifdef I2C_FULL_RECONFIGURABILITY
68 #ifdef USE_I2C_DEVICE_1
69 #define I2C1_SCL NONE
70 #define I2C1_SDA NONE
71 #endif
73 #ifdef USE_I2C_DEVICE_2
74 #define I2C2_SCL NONE
75 #define I2C2_SDA NONE
76 #endif
78 #ifdef USE_I2C_DEVICE_3
79 #define I2C3_SCL NONE
80 #define I2C3_SDA NONE
81 #endif
83 #ifdef USE_I2C_DEVICE_4
84 #define I2C4_SCL NONE
85 #define I2C4_SDA NONE
86 #endif
88 #else // I2C_FULL_RECONFIGURABILITY
90 // Backward compatibility for exisiting targets
92 #ifdef STM32F1
93 #ifndef I2C1_SCL
94 #define I2C1_SCL PB8
95 #endif
96 #ifndef I2C1_SDA
97 #define I2C1_SDA PB9
98 #endif
99 #ifndef I2C2_SCL
100 #define I2C2_SCL PB10
101 #endif
102 #ifndef I2C2_SDA
103 #define I2C2_SDA PB11
104 #endif
105 #endif // STM32F1
107 #ifdef STM32F3
108 #ifndef I2C1_SCL
109 #define I2C1_SCL PB6
110 #endif
111 #ifndef I2C1_SDA
112 #define I2C1_SDA PB7
113 #endif
114 #ifndef I2C2_SCL
115 #define I2C2_SCL PA9
116 #endif
117 #ifndef I2C2_SDA
118 #define I2C2_SDA PA10
119 #endif
120 #endif // STM32F3
122 #ifdef STM32F4
123 #ifndef I2C1_SCL
124 #define I2C1_SCL PB6
125 #endif
126 #ifndef I2C1_SDA
127 #define I2C1_SDA PB7
128 #endif
129 #ifndef I2C2_SCL
130 #define I2C2_SCL PB10
131 #endif
132 #ifndef I2C2_SDA
133 #define I2C2_SDA PB11
134 #endif
135 #ifndef I2C3_SCL
136 #define I2C3_SCL PA8
137 #endif
138 #ifndef I2C3_SDA
139 #define I2C3_SDA PC9
140 #endif
141 #endif // STM32F4
143 #ifdef STM32F7
144 #ifndef I2C1_SCL
145 #define I2C1_SCL PB6
146 #endif
147 #ifndef I2C1_SDA
148 #define I2C1_SDA PB7
149 #endif
150 #ifndef I2C2_SCL
151 #define I2C2_SCL PB10
152 #endif
153 #ifndef I2C2_SDA
154 #define I2C2_SDA PB11
155 #endif
156 #ifndef I2C3_SCL
157 #define I2C3_SCL PA8
158 #endif
159 #ifndef I2C3_SDA
160 #define I2C3_SDA PB4
161 #endif
162 #ifndef I2C4_SCL
163 #define I2C4_SCL PD12
164 #endif
165 #ifndef I2C4_SDA
166 #define I2C4_SDA PD13
167 #endif
168 #endif // STM32F7
170 #endif // I2C_FULL_RECONFIGURABILITY
172 #ifndef I2C1_CLOCKSPEED
173 #define I2C1_CLOCKSPEED 800
174 #endif
175 #ifndef I2C2_CLOCKSPEED
176 #define I2C2_CLOCKSPEED 800
177 #endif
178 #ifndef I2C3_CLOCKSPEED
179 #define I2C3_CLOCKSPEED 800
180 #endif
181 #ifndef I2C4_CLOCKSPEED
182 #define I2C4_CLOCKSPEED 800
183 #endif
185 // Default values for internal pullup
187 #if defined(USE_I2C_PULLUP)
188 #define I2C1_PULLUP true
189 #define I2C2_PULLUP true
190 #define I2C3_PULLUP true
191 #define I2C4_PULLUP true
192 #else
193 #define I2C1_PULLUP false
194 #define I2C2_PULLUP false
195 #define I2C3_PULLUP false
196 #define I2C4_PULLUP false
197 #endif
199 // pg/bus_spi
201 #ifdef SPI_FULL_RECONFIGURABILITY
203 #ifdef USE_SPI_DEVICE_1
204 #define SPI1_SCK_PIN NONE
205 #define SPI1_MISO_PIN NONE
206 #define SPI1_MOSI_PIN NONE
207 #endif
209 #ifdef USE_SPI_DEVICE_2
210 #define SPI2_SCK_PIN NONE
211 #define SPI2_MISO_PIN NONE
212 #define SPI2_MOSI_PIN NONE
213 #endif
215 #ifdef USE_SPI_DEVICE_3
216 #define SPI3_SCK_PIN NONE
217 #define SPI3_MISO_PIN NONE
218 #define SPI3_MOSI_PIN NONE
219 #endif
221 #ifdef USE_SPI_DEVICE_4
222 #define SPI4_SCK_PIN NONE
223 #define SPI4_MISO_PIN NONE
224 #define SPI4_MOSI_PIN NONE
225 #endif
227 #else
229 // Pin defaults for backward compatibility
231 #ifndef SPI1_SCK_PIN
232 #define SPI1_SCK_PIN PA5
233 #define SPI1_MISO_PIN PA6
234 #define SPI1_MOSI_PIN PA7
235 #endif
237 #ifndef SPI2_SCK_PIN
238 #define SPI2_SCK_PIN PB13
239 #define SPI2_MISO_PIN PB14
240 #define SPI2_MOSI_PIN PB15
241 #endif
243 #ifndef SPI3_SCK_PIN
244 #define SPI3_SCK_PIN PB3
245 #define SPI3_MISO_PIN PB4
246 #define SPI3_MOSI_PIN PB5
247 #endif
249 #ifndef SPI4_SCK_PIN
250 #define SPI4_SCK_PIN NONE
251 #define SPI4_MISO_PIN NONE
252 #define SPI4_MOSI_PIN NONE
253 #endif
255 #ifndef SPI5_SCK_PIN
256 #define SPI5_SCK_PIN NONE
257 #define SPI5_MISO_PIN NONE
258 #define SPI5_MOSI_PIN NONE
259 #endif
261 #ifndef SPI6_SCK_PIN
262 #define SPI6_SCK_PIN NONE
263 #define SPI6_MISO_PIN NONE
264 #define SPI6_MOSI_PIN NONE
265 #endif
267 #endif
269 // Extracted from rx/rx.c and rx/rx.h
271 #define RX_MAPPABLE_CHANNEL_COUNT 8
273 #ifndef RX_SPI_DEFAULT_PROTOCOL
274 #define RX_SPI_DEFAULT_PROTOCOL 0
275 #endif
276 #ifndef SERIALRX_PROVIDER
277 #define SERIALRX_PROVIDER 0
278 #endif
280 #define RX_MIN_USEC 885
281 #define RX_MAX_USEC 2115
282 #define RX_MID_USEC 1500
284 #ifndef SPEKTRUM_BIND_PIN
285 #define SPEKTRUM_BIND_PIN NONE
286 #endif
288 #ifndef BINDPLUG_PIN
289 #define BINDPLUG_PIN NONE
290 #endif
292 #ifdef USE_RX_SPI
293 #if !defined(RX_SPI_INSTANCE)
294 #define RX_SPI_INSTANCE NULL
295 #endif
297 #if !defined(RX_NSS_PIN)
298 #define RX_NSS_PIN NONE
299 #endif
301 #ifndef RX_SPI_LED_PIN
302 #define RX_SPI_LED_PIN NONE
303 #endif
305 #if !defined(RX_SPI_EXTI_PIN)
306 #define RX_SPI_EXTI_PIN NONE
307 #endif
309 #if !defined(RX_SPI_BIND_PIN)
310 #define RX_SPI_BIND_PIN NONE
311 #endif
313 #if defined(USE_RX_CC2500)
314 #if !defined(RX_CC2500_SPI_TX_EN_PIN)
315 #define RX_CC2500_SPI_TX_EN_PIN NONE
316 #endif
318 #if !defined(RX_CC2500_SPI_LNA_EN_PIN)
319 #define RX_CC2500_SPI_LNA_EN_PIN NONE
320 #endif
322 #if !defined(RX_CC2500_SPI_ANT_SEL_PIN)
323 #define RX_CC2500_SPI_ANT_SEL_PIN NONE
324 #endif
325 #endif
326 #endif
328 // gyro hardware
330 #if !defined(GYRO_1_SPI_INSTANCE)
331 #define GYRO_1_SPI_INSTANCE NULL
332 #endif
334 #if !defined(GYRO_1_CS_PIN)
335 #define GYRO_1_CS_PIN NONE
336 #endif
338 #if !defined(GYRO_1_EXTI_PIN)
339 #define GYRO_1_EXTI_PIN NONE
340 #endif
342 // F4 and F7 single gyro boards
343 #if defined(USE_MULTI_GYRO) && !defined(GYRO_2_SPI_INSTANCE)
344 #define GYRO_2_SPI_INSTANCE NULL
345 #define GYRO_2_CS_PIN NONE
346 #define GYRO_2_EXTI_PIN NONE
347 #endif
349 #if defined(MPU_ADDRESS)
350 #define GYRO_I2C_ADDRESS MPU_ADDRESS
351 #else
352 #define GYRO_I2C_ADDRESS 0 // AUTO
353 #endif
355 #ifdef USE_MULTI_GYRO
356 #define MAX_GYRODEV_COUNT 2
357 #define MAX_ACCDEV_COUNT 2
358 #else
359 #define MAX_GYRODEV_COUNT 1
360 #define MAX_ACCDEV_COUNT 1
361 #endif
363 // gyro alignments
365 #if !defined(GYRO_1_ALIGN)
366 #define GYRO_1_ALIGN CW0_DEG
367 #endif
369 #if !defined(GYRO_2_ALIGN)
370 #define GYRO_2_ALIGN CW0_DEG
371 #endif
373 // Previously there was logic here to default GYRO_1_CUSTOM_ALIGN and GYRO_2_CUSTOM_ALIGN
374 // to CUSTOM_ALIGN_CW0_DEG if they weren't defined in the target. The defaulting logic
375 // has been moved to pg/gyrodev.c to set the custom alignment based on the sensor alignment
376 // if a custom alignment is not applied in the target.
378 #ifdef USE_VCP
379 #ifndef USB_DETECT_PIN
380 #define USB_DETECT_PIN NONE
381 #endif
382 #ifndef USB_MSC_BUTTON_PIN
383 #define USB_MSC_BUTTON_PIN NONE
384 #endif
385 #if !defined(MSC_BUTTON_IPU)
386 #define MSC_BUTTON_IPU true
387 #endif
388 #endif
390 #ifdef USE_TIMER_MGMT
391 #ifndef MAX_TIMER_PINMAP_COUNT
392 #define MAX_TIMER_PINMAP_COUNT 21 // Largest known for F405RG (OMNINXT)
393 #endif
394 #endif
396 #ifdef USE_SDCARD
397 #ifndef SDCARD_DETECT_PIN
398 #define SDCARD_DETECT_PIN NONE
399 #endif
400 #ifdef SDCARD_DETECT_INVERTED
401 #define SDCARD_DETECT_IS_INVERTED 1
402 #else
403 #define SDCARD_DETECT_IS_INVERTED 0
404 #endif
405 #ifdef USE_SDCARD_SPI
406 #ifndef SDCARD_SPI_INSTANCE
407 #define SDCARD_SPI_INSTANCE NULL
408 #endif
409 #ifndef SDCARD_SPI_CS_PIN
410 #define SDCARD_SPI_CS_PIN NONE
411 #endif
412 #endif // USE_SDCARD_SPI
413 #ifdef USE_SDCARD_SDIO
414 #ifndef SDCARD_SDIO_DMA_OPT
415 #define SDCARD_SDIO_DMA_OPT (DMA_OPT_UNUSED)
416 #endif
417 #ifndef SDIO_DEVICE
418 #define SDIO_DEVICE SDIOINVALID
419 #endif
420 #ifndef SDIO_USE_4BIT
421 #define SDIO_USE_4BIT false
422 #endif
423 #ifndef SDIO_CK_PIN
424 #define SDIO_CK_PIN NONE
425 #endif
426 #ifndef SDIO_CMD_PIN
427 #define SDIO_CMD_PIN NONE
428 #endif
429 #ifndef SDIO_D0_PIN
430 #define SDIO_D0_PIN NONE
431 #endif
432 #ifndef SDIO_D1_PIN
433 #define SDIO_D1_PIN NONE
434 #endif
435 #ifndef SDIO_D2_PIN
436 #define SDIO_D2_PIN NONE
437 #endif
438 #ifndef SDIO_D3_PIN
439 #define SDIO_D3_PIN NONE
440 #endif
441 #endif // USE_SDCARD_SDIO
442 #endif // USE_SDCARD
444 #if defined(USE_UART1) || defined(USE_UART2) || defined(USE_UART3) || defined(USE_UART4) || defined(USE_UART5) || defined(USE_UART6) || defined(USE_UART7) || defined(USE_UART8)
445 #define USE_UART
446 #endif
448 #ifdef USE_UART
449 #if defined(INVERTER_PIN_UART1) || defined(INVERTER_PIN_UART2) || defined(INVERTER_PIN_UART3) || defined(INVERTER_PIN_UART4) || defined(INVERTER_PIN_UART5) || defined(INVERTER_PIN_UART6)
450 #define USE_INVERTER
451 #endif
452 #endif
454 #ifndef DEFAULT_MIXER
455 #define DEFAULT_MIXER MIXER_QUADX
456 #endif
458 #if defined(USE_RANGEFINDER) && defined(USE_RANGEFINDER_HCSR04)
459 #ifndef RANGEFINDER_HCSR04_TRIGGER_PIN
460 #define RANGEFINDER_HCSR04_TRIGGER_PIN NONE
461 #endif
462 #ifndef RANGEFINDER_HCSR04_ECHO_PIN
463 #define RANGEFINDER_HCSR04_ECHO_PIN NONE
464 #endif
465 #endif
467 // Mag
468 #if defined(USE_MAG)
469 #ifndef MAG_SPI_INSTANCE
470 #define MAG_SPI_INSTANCE NULL
471 #endif
472 #ifndef MAG_CS_PIN
473 #define MAG_CS_PIN NONE
474 #endif
475 #ifndef MAG_I2C_INSTANCE
476 #define MAG_I2C_INSTANCE I2C_DEVICE
477 #endif
478 #endif
480 #ifndef MAG_INT_EXTI
481 #define MAG_INT_EXTI NONE
482 #endif
484 // Baro
485 #if defined(USE_BARO)
486 #ifndef BARO_SPI_INSTANCE
487 #define BARO_SPI_INSTANCE NULL
488 #endif
489 #ifndef BARO_CS_PIN
490 #define BARO_CS_PIN NONE
491 #endif
492 #ifndef BARO_I2C_INSTANCE
493 #define BARO_I2C_INSTANCE I2C_DEVICE
494 #endif
495 #ifndef BARO_XCLR_PIN
496 #define BARO_XCLR_PIN NONE
497 #endif
498 #endif
500 #ifdef USE_ADC
501 #if !defined(USE_UNIFIED_TARGET) && !defined(ADC_INSTANCE)
502 #define ADC_INSTANCE ADC1
503 #ifndef ADC1_DMA_OPT
504 #define ADC1_DMA_OPT 1
505 #endif
506 #endif
508 #if !defined(ADC1_DMA_OPT)
509 #define ADC1_DMA_OPT (DMA_OPT_UNUSED)
510 #endif
511 #if !defined(ADC2_DMA_OPT)
512 #define ADC2_DMA_OPT (DMA_OPT_UNUSED)
513 #endif
514 #if !defined(ADC3_DMA_OPT)
515 #define ADC3_DMA_OPT (DMA_OPT_UNUSED)
516 #endif
517 #if !defined(ADC4_DMA_OPT)
518 #define ADC4_DMA_OPT (DMA_OPT_UNUSED)
519 #endif
520 #if !defined(ADC5_DMA_OPT)
521 #define ADC5_DMA_OPT (DMA_OPT_UNUSED)
522 #endif
524 #endif // USE_ADC
526 #ifdef USE_SPI
527 #ifdef USE_SPI_DEVICE_1
528 #ifndef SPI1_TX_DMA_OPT
529 #define SPI1_TX_DMA_OPT (DMA_OPT_UNUSED)
530 #endif
531 #ifndef SPI1_RX_DMA_OPT
532 #define SPI1_RX_DMA_OPT (DMA_OPT_UNUSED)
533 #endif
534 #endif
535 #ifdef USE_SPI_DEVICE_2
536 #ifndef SPI2_TX_DMA_OPT
537 #define SPI2_TX_DMA_OPT (DMA_OPT_UNUSED)
538 #endif
539 #ifndef SPI2_RX_DMA_OPT
540 #define SPI2_RX_DMA_OPT (DMA_OPT_UNUSED)
541 #endif
542 #endif
543 #ifdef USE_SPI_DEVICE_3
544 #ifndef SPI3_TX_DMA_OPT
545 #define SPI3_TX_DMA_OPT (DMA_OPT_UNUSED)
546 #endif
547 #ifndef SPI3_RX_DMA_OPT
548 #define SPI3_RX_DMA_OPT (DMA_OPT_UNUSED)
549 #endif
550 #endif
551 #ifdef USE_SPI_DEVICE_4
552 #ifndef SPI4_TX_DMA_OPT
553 #define SPI4_TX_DMA_OPT (DMA_OPT_UNUSED)
554 #endif
555 #ifndef SPI4_RX_DMA_OPT
556 #define SPI4_RX_DMA_OPT (DMA_OPT_UNUSED)
557 #endif
558 #endif
559 #endif
561 #ifdef USE_UART1
562 #ifndef UART1_TX_DMA_OPT
563 #define UART1_TX_DMA_OPT (DMA_OPT_UNUSED)
564 #endif
565 #ifndef UART1_RX_DMA_OPT
566 #define UART1_RX_DMA_OPT (DMA_OPT_UNUSED)
567 #endif
568 #endif
570 #ifdef USE_UART2
571 #ifndef UART2_TX_DMA_OPT
572 #define UART2_TX_DMA_OPT (DMA_OPT_UNUSED)
573 #endif
574 #ifndef UART2_RX_DMA_OPT
575 #define UART2_RX_DMA_OPT (DMA_OPT_UNUSED)
576 #endif
577 #endif
579 #ifdef USE_UART3
580 #ifndef UART3_TX_DMA_OPT
581 #define UART3_TX_DMA_OPT (DMA_OPT_UNUSED)
582 #endif
583 #ifndef UART3_RX_DMA_OPT
584 #define UART3_RX_DMA_OPT (DMA_OPT_UNUSED)
585 #endif
586 #endif
588 #ifdef USE_UART4
589 #ifndef UART4_TX_DMA_OPT
590 #define UART4_TX_DMA_OPT (DMA_OPT_UNUSED)
591 #endif
592 #ifndef UART4_RX_DMA_OPT
593 #define UART4_RX_DMA_OPT (DMA_OPT_UNUSED)
594 #endif
595 #endif
597 #ifdef USE_UART5
598 #ifndef UART5_TX_DMA_OPT
599 #define UART5_TX_DMA_OPT (DMA_OPT_UNUSED)
600 #endif
601 #ifndef UART5_RX_DMA_OPT
602 #define UART5_RX_DMA_OPT (DMA_OPT_UNUSED)
603 #endif
604 #endif
606 #ifdef USE_UART6
607 #ifndef UART6_TX_DMA_OPT
608 #define UART6_TX_DMA_OPT (DMA_OPT_UNUSED)
609 #endif
610 #ifndef UART6_RX_DMA_OPT
611 #define UART6_RX_DMA_OPT (DMA_OPT_UNUSED)
612 #endif
613 #endif
615 #ifdef USE_UART7
616 #ifndef UART7_TX_DMA_OPT
617 #define UART7_TX_DMA_OPT (DMA_OPT_UNUSED)
618 #endif
619 #ifndef UART7_RX_DMA_OPT
620 #define UART7_RX_DMA_OPT (DMA_OPT_UNUSED)
621 #endif
622 #endif
624 #ifdef USE_UART8
625 #ifndef UART8_TX_DMA_OPT
626 #define UART8_TX_DMA_OPT (DMA_OPT_UNUSED)
627 #endif
628 #ifndef UART8_RX_DMA_OPT
629 #define UART8_RX_DMA_OPT (DMA_OPT_UNUSED)
630 #endif
631 #endif
633 #ifdef USE_UART9
634 #ifndef UART9_TX_DMA_OPT
635 #define UART9_TX_DMA_OPT (DMA_OPT_UNUSED)
636 #endif
637 #ifndef UART9_RX_DMA_OPT
638 #define UART9_RX_DMA_OPT (DMA_OPT_UNUSED)
639 #endif
640 #endif
642 #ifndef RTC6705_CS_PIN
643 #define RTC6705_CS_PIN NONE
644 #endif
646 #ifndef RTC6705_POWER_PIN
647 #define RTC6705_POWER_PIN NONE
648 #endif
650 #ifndef RTC6705_SPICLK_PIN
651 #define RTC6705_SPICLK_PIN NONE
652 #endif
654 #ifndef RTC6705_SPI_MOSI_PIN
655 #define RTC6705_SPI_MOSI_PIN NONE
656 #endif
658 #ifndef RTC6705_SPI_INSTANCE
659 #define RTC6705_SPI_INSTANCE NULL
660 #endif
662 #if defined(USE_QUAD_MIXER_ONLY)
663 #define MAX_SUPPORTED_MOTORS 4
664 #define MAX_SUPPORTED_SERVOS 1
665 #else
666 #ifndef MAX_SUPPORTED_MOTORS
667 #define MAX_SUPPORTED_MOTORS 8
668 #endif
669 #define MAX_SUPPORTED_SERVOS 8
670 #endif
672 #if defined(USE_DSHOT_BITBANG)
673 #if !defined(DSHOT_BITBANG_DEFAULT)
674 #define DSHOT_BITBANG_DEFAULT DSHOT_BITBANG_AUTO
675 #endif
677 #if !defined(DSHOT_BITBANGED_TIMER_DEFAULT)
678 #define DSHOT_BITBANGED_TIMER_DEFAULT DSHOT_BITBANGED_TIMER_AUTO
679 #endif
680 #endif // USE_DSHOT_BITBANG