Paparazzi UAS
v5.15_devel-230-gc96ce27
Paparazzi is a free software Unmanned Aircraft System.
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Modules
Pages
tawaki.h
Go to the documentation of this file.
1
#ifndef CONFIG_TAWAKI_1_00_H
2
#define CONFIG_TAWAKI_1_00_H
3
4
#define BOARD_TAWAKI
5
9
#include "
boards/tawaki/chibios/v1.0/board.h
"
10
15
/*
16
* AHB_CLK
17
*/
18
#define AHB_CLK STM32_HCLK
19
20
21
/*
22
* LEDs
23
*/
24
/* red, on PD15, 1 on LED_ON, 0 on LED_OFF */
25
#ifndef USE_LED_1
26
#define USE_LED_1 1
27
#endif
28
#define LED_1_GPIO GPIOD
29
#define LED_1_GPIO_PIN GPIO15
30
#define LED_1_GPIO_ON gpio_set
31
#define LED_1_GPIO_OFF gpio_clear
32
33
/* orange, on PA10, 1 on LED_ON, 0 on LED_OFF */
34
#ifndef USE_LED_2
35
#define USE_LED_2 1
36
#endif
37
#define LED_2_GPIO GPIOA
38
#define LED_2_GPIO_PIN GPIO10
39
#define LED_2_GPIO_ON gpio_set
40
#define LED_2_GPIO_OFF gpio_clear
41
42
/* green, on PC7, 1 on LED_ON, 0 on LED_OFF */
43
#ifndef USE_LED_3
44
#define USE_LED_3 1
45
#endif
46
#define LED_3_GPIO GPIOC
47
#define LED_3_GPIO_PIN GPIO7
48
#define LED_3_GPIO_ON gpio_set
49
#define LED_3_GPIO_OFF gpio_clear
50
51
/* yellow, on PD10, 1 on LED_ON, 0 on LED_OFF */
52
#ifndef USE_LED_4
53
#define USE_LED_4 1
54
#endif
55
#define LED_4_GPIO GPIOD
56
#define LED_4_GPIO_PIN GPIO10
57
#define LED_4_GPIO_ON gpio_set
58
#define LED_4_GPIO_OFF gpio_clear
59
60
/*
61
* ADCs
62
*/
63
// AUXa1
64
#if USE_ADC_1
65
#define AD1_1_CHANNEL ADC_CHANNEL_IN0
66
#define ADC_1 AD1_1
67
#define ADC_1_GPIO_PORT GPIOA
68
#define ADC_1_GPIO_PIN GPIO0
69
#endif
70
71
// AUXa2
72
#if USE_ADC_2
73
#define AD1_2_CHANNEL ADC_CHANNEL_IN1
74
#define ADC_2 AD1_2
75
#define ADC_2_GPIO_PORT GPIOA
76
#define ADC_2_GPIO_PIN GPIO1
77
#endif
78
79
// AUXa3
80
#if USE_ADC_3
81
#define AD1_3_CHANNEL ADC_CHANNEL_IN2
82
#define ADC_3 AD1_3
83
#define ADC_3_GPIO_PORT GPIOA
84
#define ADC_3_GPIO_PIN GPIO2
85
#endif
86
87
// AUXa4
88
#if USE_ADC_4
89
#define AD1_4_CHANNEL ADC_CHANNEL_IN6
90
#define ADC_4 AD1_4
91
#define ADC_4_GPIO_PORT GPIOA
92
#define ADC_4_GPIO_PIN GPIO6
93
#endif
94
95
// AUXb1
96
#if USE_ADC_5
97
#define AD1_5_CHANNEL ADC_CHANNEL_IN3
98
#define ADC_5 AD1_5
99
#define ADC_5_GPIO_PORT GPIOA
100
#define ADC_5_GPIO_PIN GPIO3
101
#endif
102
103
// AUXb2
104
#if USE_ADC_6
105
#define AD1_6_CHANNEL ADC_CHANNEL_IN7
106
#define ADC_6 AD1_6
107
#define ADC_6_GPIO_PORT GPIOA
108
#define ADC_6_GPIO_PIN GPIO7
109
#endif
110
111
// AUXb3
112
#if USE_ADC_7
113
#define AD1_7_CHANNEL ADC_CHANNEL_IN8
114
#define ADC_7 AD1_7
115
#define ADC_7_GPIO_PORT GPIOB
116
#define ADC_7_GPIO_PIN GPIO0
117
#endif
118
119
// AUXb4
120
#if USE_ADC_8
121
#define AD1_8_CHANNEL ADC_CHANNEL_IN9
122
#define ADC_8 AD1_8
123
#define ADC_8_GPIO_PORT GPIOB
124
#define ADC_8_GPIO_PIN GPIO1
125
#endif
126
127
// Internal ADC for battery enabled by default
128
#ifndef USE_ADC_9
129
#define USE_ADC_9 1
130
#endif
131
#if USE_ADC_9
132
#define AD1_9_CHANNEL ADC_CHANNEL_IN10
133
#define ADC_9 AD1_9
134
#define ADC_9_GPIO_PORT GPIOC
135
#define ADC_9_GPIO_PIN GPIO0
136
#endif
137
138
/* allow to define ADC_CHANNEL_VSUPPLY in the airframe file*/
139
#ifndef ADC_CHANNEL_VSUPPLY
140
#define ADC_CHANNEL_VSUPPLY ADC_9
141
#endif
142
143
/*
144
* R1 = 2.2k
145
* R2 = 12k
146
* adc * (3.3 / 2^12) * ((R1 + R2) / R1)
147
*/
148
#define VBAT_R1 2200.0f
149
#define VBAT_R2 12000.0f
150
#define DefaultVoltageOfAdc(adc) ((3.3f/4096.0f)*((VBAT_R1+VBAT_R2)/VBAT_R1)*adc)
151
152
/*
153
* PWM defines
154
*/
155
156
// SRVa connectors, activated in PWM mode by default
157
158
#ifndef USE_PWM1
159
#define USE_PWM1 1
160
#endif
161
#if USE_PWM1
162
#define PWM_SERVO_1 1
163
#define PWM_SERVO_1_GPIO GPIOE
164
#define PWM_SERVO_1_PIN GPIO9
165
#define PWM_SERVO_1_AF GPIO_AF1
166
#define PWM_SERVO_1_DRIVER PWMD1
167
#define PWM_SERVO_1_CHANNEL 0
168
#define PWM_SERVO_1_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
169
#else
170
#define PWM_SERVO_1_ACTIVE PWM_OUTPUT_DISABLED
171
#endif
172
173
#ifndef USE_PWM2
174
#define USE_PWM2 1
175
#endif
176
#if USE_PWM2
177
#define PWM_SERVO_2 2
178
#define PWM_SERVO_2_GPIO GPIOE
179
#define PWM_SERVO_2_PIN GPIO11
180
#define PWM_SERVO_2_AF GPIO_AF1
181
#define PWM_SERVO_2_DRIVER PWMD1
182
#define PWM_SERVO_2_CHANNEL 1
183
#define PWM_SERVO_2_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
184
#else
185
#define PWM_SERVO_2_ACTIVE PWM_OUTPUT_DISABLED
186
#endif
187
188
#ifndef USE_PWM3
189
#define USE_PWM3 1
190
#endif
191
#if USE_PWM3
192
#define PWM_SERVO_3 3
193
#define PWM_SERVO_3_GPIO GPIOE
194
#define PWM_SERVO_3_PIN GPIO13
195
#define PWM_SERVO_3_AF GPIO_AF1
196
#define PWM_SERVO_3_DRIVER PWMD1
197
#define PWM_SERVO_3_CHANNEL 2
198
#define PWM_SERVO_3_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
199
#else
200
#define PWM_SERVO_3_ACTIVE PWM_OUTPUT_DISABLED
201
#endif
202
203
#ifndef USE_PWM4
204
#define USE_PWM4 1
205
#endif
206
#if USE_PWM4
207
#define PWM_SERVO_4 4
208
#define PWM_SERVO_4_GPIO GPIOE
209
#define PWM_SERVO_4_PIN GPIO14
210
#define PWM_SERVO_4_AF GPIO_AF1
211
#define PWM_SERVO_4_DRIVER PWMD1
212
#define PWM_SERVO_4_CHANNEL 3
213
#define PWM_SERVO_4_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
214
#else
215
#define PWM_SERVO_4_ACTIVE PWM_OUTPUT_DISABLED
216
#endif
217
218
// SRVb connector, PWM mode disabled by default (DShot is enabled by default)
219
220
#ifndef USE_PWM5
221
#define USE_PWM5 0
222
#endif
223
#if USE_PWM5
224
#define PWM_SERVO_5 5
225
#define PWM_SERVO_5_GPIO GPIOB
226
#define PWM_SERVO_5_PIN GPIO6
227
#define PWM_SERVO_5_AF GPIO_AF2
228
#define PWM_SERVO_5_DRIVER PWMD4
229
#define PWM_SERVO_5_CHANNEL 0
230
#define PWM_SERVO_5_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
231
#else
232
#define PWM_SERVO_5_ACTIVE PWM_OUTPUT_DISABLED
233
#endif
234
235
#ifndef USE_PWM6
236
#define USE_PWM6 0
237
#endif
238
#if USE_PWM6
239
#define PWM_SERVO_6 6
240
#define PWM_SERVO_6_GPIO GPIOB
241
#define PWM_SERVO_6_PIN GPIO7
242
#define PWM_SERVO_6_AF GPIO_AF2
243
#define PWM_SERVO_6_DRIVER PWMD4
244
#define PWM_SERVO_6_CHANNEL 1
245
#define PWM_SERVO_6_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
246
#else
247
#define PWM_SERVO_6_ACTIVE PWM_OUTPUT_DISABLED
248
#endif
249
250
#ifndef USE_PWM7
251
#define USE_PWM7 0
252
#endif
253
#if USE_PWM7
254
#define PWM_SERVO_7 7
255
#define PWM_SERVO_7_GPIO GPIOB
256
#define PWM_SERVO_7_PIN GPIO8
257
#define PWM_SERVO_7_AF GPIO_AF2
258
#define PWM_SERVO_7_DRIVER PWMD4
259
#define PWM_SERVO_7_CHANNEL 2
260
#define PWM_SERVO_7_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
261
#else
262
#define PWM_SERVO_7_ACTIVE PWM_OUTPUT_DISABLED
263
#endif
264
265
#ifndef USE_PWM8
266
#define USE_PWM8 0
267
#endif
268
#if USE_PWM8
269
#define PWM_SERVO_8 8
270
#define PWM_SERVO_8_GPIO GPIOB
271
#define PWM_SERVO_8_PIN GPIO9
272
#define PWM_SERVO_8_AF GPIO_AF2
273
#define PWM_SERVO_8_DRIVER PWMD4
274
#define PWM_SERVO_8_CHANNEL 3
275
#define PWM_SERVO_8_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
276
#else
277
#define PWM_SERVO_8_ACTIVE PWM_OUTPUT_DISABLED
278
#endif
279
280
#ifndef USE_PWM9
281
#define USE_PWM9 0
282
#endif
283
#if USE_PWM9
284
#define PWM_SERVO_9 9
285
#define PWM_SERVO_9_GPIO GPIOA
286
#define PWM_SERVO_9_PIN GPIO0
287
#define PWM_SERVO_9_AF GPIO_AF2
288
#define PWM_SERVO_9_DRIVER PWMD5
289
#define PWM_SERVO_9_CHANNEL 0
290
#define PWM_SERVO_9_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
291
#else
292
#define PWM_SERVO_9_ACTIVE PWM_OUTPUT_DISABLED
293
#endif
294
295
#ifndef USE_PWM10
296
#define USE_PWM10 0
297
#endif
298
#if USE_PWM10
299
#define PWM_SERVO_10 10
300
#define PWM_SERVO_10_GPIO GPIOA
301
#define PWM_SERVO_10_PIN GPIO1
302
#define PWM_SERVO_10_AF GPIO_AF2
303
#define PWM_SERVO_10_DRIVER PWMD5
304
#define PWM_SERVO_10_CHANNEL 1
305
#define PWM_SERVO_10_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
306
#else
307
#define PWM_SERVO_10_ACTIVE PWM_OUTPUT_DISABLED
308
#endif
309
310
#ifndef USE_PWM11
311
#define USE_PWM11 0
312
#endif
313
#if USE_PWM11
314
#define PWM_SERVO_11 11
315
#define PWM_SERVO_11_GPIO GPIOA
316
#define PWM_SERVO_11_PIN GPIO2
317
#define PWM_SERVO_11_AF GPIO_AF2
318
#define PWM_SERVO_11_DRIVER PWMD5
319
#define PWM_SERVO_11_CHANNEL 2
320
#define PWM_SERVO_11_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
321
#else
322
#define PWM_SERVO_11_ACTIVE PWM_OUTPUT_DISABLED
323
#endif
324
325
#ifndef USE_PWM12
326
#define USE_PWM12 0
327
#endif
328
#if USE_PWM12
329
#define PWM_SERVO_12 12
330
#define PWM_SERVO_12_GPIO GPIOA
331
#define PWM_SERVO_12_PIN GPIO6
332
#define PWM_SERVO_12_AF GPIO_AF2
333
#define PWM_SERVO_12_DRIVER PWMD3
334
#define PWM_SERVO_12_CHANNEL 0
335
#define PWM_SERVO_12_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
336
#else
337
#define PWM_SERVO_12_ACTIVE PWM_OUTPUT_DISABLED
338
#endif
339
340
#ifndef USE_PWM13
341
#define USE_PWM13 0
342
#endif
343
#if USE_PWM13
344
#define PWM_SERVO_13 13
345
#define PWM_SERVO_13_GPIO GPIOA
346
#define PWM_SERVO_13_PIN GPIO3
347
#define PWM_SERVO_13_AF GPIO_AF2
348
#define PWM_SERVO_13_DRIVER PWMD5
349
#define PWM_SERVO_13_CHANNEL 3
350
#define PWM_SERVO_13_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
351
#else
352
#define PWM_SERVO_13_ACTIVE PWM_OUTPUT_DISABLED
353
#endif
354
355
#ifndef USE_PWM14
356
#define USE_PWM14 0
357
#endif
358
#if USE_PWM14
359
#define PWM_SERVO_14 14
360
#define PWM_SERVO_14_GPIO GPIOA
361
#define PWM_SERVO_14_PIN GPIO7
362
#define PWM_SERVO_14_AF GPIO_AF2
363
#define PWM_SERVO_14_DRIVER PWMD3
364
#define PWM_SERVO_14_CHANNEL 1
365
#define PWM_SERVO_14_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
366
#else
367
#define PWM_SERVO_14_ACTIVE PWM_OUTPUT_DISABLED
368
#endif
369
370
#ifndef USE_PWM15
371
#define USE_PWM15 0
372
#endif
373
#if USE_PWM15
374
#define PWM_SERVO_15 15
375
#define PWM_SERVO_15_GPIO GPIOB
376
#define PWM_SERVO_15_PIN GPIO0
377
#define PWM_SERVO_15_AF GPIO_AF2
378
#define PWM_SERVO_15_DRIVER PWMD3
379
#define PWM_SERVO_15_CHANNEL 2
380
#define PWM_SERVO_15_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
381
#else
382
#define PWM_SERVO_15_ACTIVE PWM_OUTPUT_DISABLED
383
#endif
384
385
#ifndef USE_PWM16
386
#define USE_PWM16 0
387
#endif
388
#if USE_PWM16
389
#define PWM_SERVO_16 16
390
#define PWM_SERVO_16_GPIO GPIOB
391
#define PWM_SERVO_16_PIN GPIO1
392
#define PWM_SERVO_16_AF GPIO_AF2
393
#define PWM_SERVO_16_DRIVER PWMD3
394
#define PWM_SERVO_16_CHANNEL 3
395
#define PWM_SERVO_16_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
396
#else
397
#define PWM_SERVO_16_ACTIVE PWM_OUTPUT_DISABLED
398
#endif
399
400
// servo index starting at 1 + regular servos + aux servos
401
// so NB = 1+8+8
402
#define ACTUATORS_PWM_NB 17
403
404
405
#ifdef STM32_PWM_USE_TIM1
406
#define PWM_CONF_TIM1 STM32_PWM_USE_TIM1
407
#else
408
#define PWM_CONF_TIM1 1
409
#endif
410
#define PWM_CONF1_DEF { \
411
PWM_FREQUENCY, \
412
PWM_FREQUENCY/TIM1_SERVO_HZ, \
413
NULL, \
414
{ \
415
{ PWM_SERVO_1_ACTIVE, NULL }, \
416
{ PWM_SERVO_2_ACTIVE, NULL }, \
417
{ PWM_SERVO_3_ACTIVE, NULL }, \
418
{ PWM_SERVO_4_ACTIVE, NULL }, \
419
}, \
420
0, \
421
0 \
422
}
423
424
#ifdef STM32_PWM_USE_TIM3
425
#define PWM_CONF_TIM3 STM32_PWM_USE_TIM3
426
#else
427
#define PWM_CONF_TIM3 1
428
#endif
429
#define PWM_CONF3_DEF { \
430
PWM_FREQUENCY, \
431
PWM_FREQUENCY/TIM3_SERVO_HZ, \
432
NULL, \
433
{ \
434
{ PWM_SERVO_12_ACTIVE, NULL }, \
435
{ PWM_SERVO_14_ACTIVE, NULL }, \
436
{ PWM_SERVO_15_ACTIVE, NULL }, \
437
{ PWM_SERVO_16_ACTIVE, NULL }, \
438
}, \
439
0, \
440
0 \
441
}
442
443
#ifdef STM32_PWM_USE_TIM4
444
#define PWM_CONF_TIM4 STM32_PWM_USE_TIM4
445
#else
446
#define PWM_CONF_TIM4 1
447
#endif
448
#define PWM_CONF4_DEF { \
449
PWM_FREQUENCY, \
450
PWM_FREQUENCY/TIM4_SERVO_HZ, \
451
NULL, \
452
{ \
453
{ PWM_SERVO_5_ACTIVE, NULL }, \
454
{ PWM_SERVO_6_ACTIVE, NULL }, \
455
{ PWM_SERVO_7_ACTIVE, NULL }, \
456
{ PWM_SERVO_8_ACTIVE, NULL }, \
457
}, \
458
0, \
459
0 \
460
}
461
462
#ifdef STM32_PWM_USE_TIM5
463
#define PWM_CONF_TIM5 STM32_PWM_USE_TIM5
464
#else
465
#define PWM_CONF_TIM5 1
466
#endif
467
#define PWM_CONF5_DEF { \
468
PWM_FREQUENCY, \
469
PWM_FREQUENCY/TIM5_SERVO_HZ, \
470
NULL, \
471
{ \
472
{ PWM_SERVO_9_ACTIVE, NULL }, \
473
{ PWM_SERVO_10_ACTIVE, NULL }, \
474
{ PWM_SERVO_11_ACTIVE, NULL }, \
475
{ PWM_SERVO_13_ACTIVE, NULL }, \
476
}, \
477
0, \
478
0 \
479
}
480
484
#ifndef DSHOT_TELEMETRY_DEV
485
#define DSHOT_TELEMETRY_DEV NULL
486
#endif
487
488
#ifndef USE_DSHOT_TIM4
489
#define USE_DSHOT_TIM4 1 // use SRVb for DShot by default
490
#endif
491
492
#if USE_DSHOT_TIM4 // Servo B1, B2, B3, B4 on TIM4
493
494
// Servo B1, B2, B3, B4 on TM4 are primary DSHOT connector
495
#define DSHOT_SERVO_1 1
496
#define DSHOT_SERVO_1_GPIO GPIOB
497
#define DSHOT_SERVO_1_PIN GPIO6
498
#define DSHOT_SERVO_1_AF GPIO_AF2
499
#define DSHOT_SERVO_1_DRIVER DSHOTD4
500
#define DSHOT_SERVO_1_CHANNEL 0
501
502
#define DSHOT_SERVO_2 2
503
#define DSHOT_SERVO_2_GPIO GPIOB
504
#define DSHOT_SERVO_2_PIN GPIO7
505
#define DSHOT_SERVO_2_AF GPIO_AF2
506
#define DSHOT_SERVO_2_DRIVER DSHOTD4
507
#define DSHOT_SERVO_2_CHANNEL 1
508
509
#define DSHOT_SERVO_3 3
510
#define DSHOT_SERVO_3_GPIO GPIOB
511
#define DSHOT_SERVO_3_PIN GPIO8
512
#define DSHOT_SERVO_3_AF GPIO_AF2
513
#define DSHOT_SERVO_3_DRIVER DSHOTD4
514
#define DSHOT_SERVO_3_CHANNEL 2
515
516
#define DSHOT_SERVO_4 4
517
#define DSHOT_SERVO_4_GPIO GPIOB
518
#define DSHOT_SERVO_4_PIN GPIO9
519
#define DSHOT_SERVO_4_AF GPIO_AF2
520
#define DSHOT_SERVO_4_DRIVER DSHOTD4
521
#define DSHOT_SERVO_4_CHANNEL 3
522
523
#define DSHOT_CONF_TIM4 1
524
#define DSHOT_CONF4_DEF { \
525
.dma_stream = STM32_PWM4_UP_DMA_STREAM, \
526
.dma_channel = STM32_PWM4_UP_DMA_CHANNEL, \
527
.pwmp = &PWMD4, \
528
.tlm_sd = DSHOT_TELEMETRY_DEV \
529
}
530
531
#endif
532
533
#if USE_DSHOT_TIM1 // Servo A1, A2, A3, A4 on TIM1 only activated if needed
534
535
#define DSHOT_SERVO_5 5
536
#define DSHOT_SERVO_5_GPIO GPIOE
537
#define DSHOT_SERVO_5_PIN GPIO9
538
#define DSHOT_SERVO_5_AF GPIO_AF1
539
#define DSHOT_SERVO_5_DRIVER DSHOTD1
540
#define DSHOT_SERVO_5_CHANNEL 0
541
542
#define DSHOT_SERVO_6 6
543
#define DSHOT_SERVO_6_GPIO GPIOE
544
#define DSHOT_SERVO_6_PIN GPIO11
545
#define DSHOT_SERVO_6_AF GPIO_AF1
546
#define DSHOT_SERVO_6_DRIVER DSHOTD1
547
#define DSHOT_SERVO_6_CHANNEL 1
548
549
#define DSHOT_SERVO_7 7
550
#define DSHOT_SERVO_7_GPIO GPIOE
551
#define DSHOT_SERVO_7_PIN GPIO13
552
#define DSHOT_SERVO_7_AF GPIO_AF1
553
#define DSHOT_SERVO_7_DRIVER DSHOTD1
554
#define DSHOT_SERVO_7_CHANNEL 2
555
556
#define DSHOT_SERVO_8 8
557
#define DSHOT_SERVO_8_GPIO GPIOE
558
#define DSHOT_SERVO_8_PIN GPIO14
559
#define DSHOT_SERVO_8_AF GPIO_AF1
560
#define DSHOT_SERVO_8_DRIVER DSHOTD1
561
#define DSHOT_SERVO_8_CHANNEL 3
562
563
#define DSHOT_CONF_TIM1 1
564
#define DSHOT_CONF1_DEF { \
565
.dma_stream = STM32_PWM1_UP_DMA_STREAM, \
566
.dma_channel = STM32_PWM1_UP_DMA_CHANNEL, \
567
.pwmp = &PWMD1, \
568
.tlm_sd = DSHOT_TELEMETRY_DEV \
569
}
570
571
#endif
572
576
#define UART2_GPIO_PORT_TX GPIOD
577
#define UART2_GPIO_TX GPIO5
578
#define UART2_GPIO_PORT_RX GPIOD
579
#define UART2_GPIO_RX GPIO6
580
#define UART2_GPIO_AF 7
581
#ifndef UART2_HW_FLOW_CONTROL
582
#define UART2_HW_FLOW_CONTROL FALSE
583
#endif
584
590
#define UART3_GPIO_PORT_TX GPIOD
591
#define UART3_GPIO_TX GPIO8
592
#define UART3_GPIO_PORT_RX GPIOD
593
#define UART3_GPIO_RX GPIO9
594
#define UART3_GPIO_AF 7
595
596
#define UART7_GPIO_PORT_TX GPIOA
597
#define UART7_GPIO_TX GPIO15
598
#define UART7_GPIO_PORT_RX GPIOB
599
#define UART7_GPIO_RX GPIO3
600
#define UART7_GPIO_AF 12
601
606
#define UART4_GPIO_PORT_TX GPIOA
607
#define UART4_GPIO_TX GPIO0
608
#define UART4_GPIO_PORT_RX GPIOA
609
#define UART4_GPIO_RX GPIO1
610
#define UART4_GPIO_AF 8
611
624
// In case, do dynamic config of UARTs
625
#define USE_UART8_RX TRUE
626
#ifndef USE_UART8_TX // may be used in half duplex mode
627
#define USE_UART8_TX FALSE
628
#endif
629
#define UART8_GPIO_PORT_RX GPIOE
630
#define UART8_GPIO_RX GPIO0
631
#define UART8_GPIO_AF 8
632
633
// FIXME when RC2 is used for FrSky telemetry
634
#define USE_UART6_RX TRUE
635
#define USE_UART6_TX FALSE
636
#define UART6_GPIO_PORT_RX GPIOC
637
#define UART6_GPIO_RX GPIO6
638
#define UART6_GPIO_AF 8
639
640
/* The line that is pulled low at power up to initiate the bind process
641
* PB1: AUXb4
642
*/
643
#define SPEKTRUM_BIND_PIN GPIO1
644
#define SPEKTRUM_BIND_PIN_PORT GPIOB
645
646
// no wait with chibios as the RTC oscillator takes longer to stabilize
647
#define SPEKTRUM_BIND_WAIT 30000
648
654
#define RC_PPM_TICKS_PER_USEC 6
655
#define PPM_TIMER_FREQUENCY 6000000
656
#define PPM_CHANNEL ICU_CHANNEL_1
657
#define PPM_TIMER ICUD8
658
659
/*
660
* PWM input
661
*/
662
// PWM_INPUT 1 on PA0 (AUXa1)
663
#define PWM_INPUT1_ICU ICUD2
664
#define PWM_INPUT1_CHANNEL ICU_CHANNEL_1
665
#define PWM_INPUT1_GPIO_PORT GPIOA
666
#define PWM_INPUT1_GPIO_PIN GPIO0
667
#define PWM_INPUT1_GPIO_AF GPIO_AF1
668
669
// PWM_INPUT 2 on PA1 (AUXa2)
670
#define PWM_INPUT2_ICU ICUD5
671
#define PWM_INPUT2_CHANNEL ICU_CHANNEL_2
672
#define PWM_INPUT2_GPIO_PORT GPIOA
673
#define PWM_INPUT2_GPIO_PIN GPIO1
674
#define PWM_INPUT2_GPIO_AF GPIO_AF2
675
679
// Digital noise filter: 0 disabled, [0x1 - 0xF] enable up to n t_I2CCLK
680
#define STM32_CR1_DNF(n) ((n & 0x0f) << 8)
681
// Timing register
682
#define I2C_FAST_400KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR (STM32_TIMINGR_PRESC(0U) | \
683
STM32_TIMINGR_SCLDEL(10U) | STM32_TIMINGR_SDADEL(0U) | \
684
STM32_TIMINGR_SCLH(34U) | STM32_TIMINGR_SCLL(86U))
685
#define I2C_STD_100KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR (STM32_TIMINGR_PRESC(1U) | \
686
STM32_TIMINGR_SCLDEL(9U) | STM32_TIMINGR_SDADEL(0U) | \
687
STM32_TIMINGR_SCLH(105U) | STM32_TIMINGR_SCLL(153U))
688
689
690
// Internal I2C (baro, magneto)
691
692
#ifndef I2C4_CLOCK_SPEED
693
#define I2C4_CLOCK_SPEED 400000
694
#endif
695
696
#if I2C4_CLOCK_SPEED == 400000
697
#define I2C4_CFG_DEF { \
698
.timingr = I2C_FAST_400KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR, \
699
.cr1 = STM32_CR1_DNF(0), \
700
.cr2 = 0 \
701
}
702
#elif I2C4_CLOCK_SPEED == 100000
703
#define I2C4_CFG_DEF { \
704
.timingr = I2C_STD_100KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR, \
705
.cr1 = STM32_CR1_DNF(0), \
706
.cr2 = 0 \
707
}
708
#else
709
#error "Unknown I2C4 clock speed"
710
#endif
711
712
// External I2C
713
714
#ifndef I2C2_CLOCK_SPEED
715
#define I2C2_CLOCK_SPEED 400000
716
#endif
717
718
#if I2C2_CLOCK_SPEED == 400000
719
#define I2C2_CFG_DEF { \
720
.timingr = I2C_FAST_400KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR, \
721
.cr1 = STM32_CR1_DNF(0), \
722
.cr2 = 0 \
723
}
724
#elif I2C2_CLOCK_SPEED == 100000
725
#define I2C2_CFG_DEF { \
726
.timingr = I2C_STD_100KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR, \
727
.cr1 = STM32_CR1_DNF(0), \
728
.cr2 = 0 \
729
}
730
#else
731
#error "Unknown I2C2 clock speed"
732
#endif
733
738
// Internal SPI (IMU)
739
#define SPI4_GPIO_AF GPIO_AF5
740
#define SPI4_GPIO_PORT_MISO GPIOE
741
#define SPI4_GPIO_MISO GPIO5
742
#define SPI4_GPIO_PORT_MOSI GPIOE
743
#define SPI4_GPIO_MOSI GPIO6
744
#define SPI4_GPIO_PORT_SCK GPIOE
745
#define SPI4_GPIO_SCK GPIO2
746
747
// External SPI
748
#define SPI2_GPIO_AF GPIO_AF5
749
#define SPI2_GPIO_PORT_MISO GPIOB
750
#define SPI2_GPIO_MISO GPIO14
751
#define SPI2_GPIO_PORT_MOSI GPIOB
752
#define SPI2_GPIO_MOSI GPIO15
753
#define SPI2_GPIO_PORT_SCK GPIOD
754
#define SPI2_GPIO_SCK GPIO3
755
756
// SLAVE0 on SPI connector (NSS possible)
757
#define SPI_SELECT_SLAVE0_PORT GPIOB
758
#define SPI_SELECT_SLAVE0_PIN GPIO12
759
// SLAVE1 on AUXb1
760
#define SPI_SELECT_SLAVE1_PORT GPIOA
761
#define SPI_SELECT_SLAVE1_PIN GPIO3
762
// SLAVE2 on AUXb2
763
#define SPI_SELECT_SLAVE2_PORT GPIOA
764
#define SPI_SELECT_SLAVE2_PIN GPIO7
765
// SLAVE3 on AUXb3
766
#define SPI_SELECT_SLAVE3_PORT GPIOB
767
#define SPI_SELECT_SLAVE3_PIN GPIO0
768
// SLAVE4 on AUXb4
769
#define SPI_SELECT_SLAVE4_PORT GPIOB
770
#define SPI_SELECT_SLAVE4_PIN GPIO1
771
// SLAVE5 on PE4 (internal IMU)
772
#define SPI_SELECT_SLAVE5_PORT GPIOE
773
#define SPI_SELECT_SLAVE5_PIN GPIO4
774
781
#ifndef USE_BARO_BOARD
782
#define USE_BARO_BOARD 0
783
#endif
784
788
#define SDIO_D0_PORT GPIOC
789
#define SDIO_D0_PIN GPIO8
790
#define SDIO_D1_PORT GPIOC
791
#define SDIO_D1_PIN GPIO9
792
#define SDIO_D2_PORT GPIOC
793
#define SDIO_D2_PIN GPIO10
794
#define SDIO_D3_PORT GPIOC
795
#define SDIO_D3_PIN GPIO11
796
#define SDIO_CK_PORT GPIOC
797
#define SDIO_CK_PIN GPIO12
798
#define SDIO_CMD_PORT GPIOD
799
#define SDIO_CMD_PIN GPIO2
800
#define SDIO_AF 12
801
// bat monitoring for file closing
802
#define SDLOG_BAT_ADC ADCD1
803
#define SDLOG_BAT_CHAN ADC_CHANNEL_IN10
804
// usb led status
805
#define SDLOG_USB_LED 4
806
#define SDLOG_USB_VBUS_PORT GPIOA
807
#define SDLOG_USB_VBUS_PIN GPIO9
808
809
810
/*
811
* Actuators for fixedwing
812
*/
813
/* Default actuators driver */
814
#define DEFAULT_ACTUATORS "subsystems/actuators/actuators_pwm.h"
815
#define ActuatorDefaultSet(_x,_y) ActuatorPwmSet(_x,_y)
816
#define ActuatorsDefaultInit() ActuatorsPwmInit()
817
#define ActuatorsDefaultCommit() ActuatorsPwmCommit()
818
822
#define WS2812D1_GPIO GPIOA
823
#define WS2812D1_PIN GPIO0
824
#define WS2812D1_AF 2
825
#define WS2812D1_CFG_DEF { \
826
.dma_stream = STM32_PWM5_UP_DMA_STREAM, \
827
.dma_channel = STM32_PWM5_UP_DMA_CHANNEL, \
828
.dma_priority = STM32_PWM5_UP_DMA_PRIORITY, \
829
.pwm_channel = 0, \
830
.pwmp = &PWMD5 \
831
}
832
833
#endif
/* CONFIG_TAWAKI_1_00_H */
834
board.h
sw
airborne
boards
tawaki
chibios
v1.0
tawaki.h
Generated on Wed Feb 10 2021 04:33:58 for Paparazzi UAS by
1.8.8