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
chimera.h
Go to the documentation of this file.
1
#ifndef CONFIG_CHIMERA_1_00_H
2
#define CONFIG_CHIMERA_1_00_H
3
4
#define BOARD_CHIMERA
5
9
#include "
boards/chimera/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 PB12, 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 GPIOB
29
#define LED_1_GPIO_PIN GPIO12
30
#define LED_1_GPIO_ON gpio_set
31
#define LED_1_GPIO_OFF gpio_clear
32
33
/* orange, on PB13, 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 GPIOB
38
#define LED_2_GPIO_PIN GPIO13
39
#define LED_2_GPIO_ON gpio_set
40
#define LED_2_GPIO_OFF gpio_clear
41
42
/* green, on PD10, 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 GPIOD
47
#define LED_3_GPIO_PIN GPIO10
48
#define LED_3_GPIO_ON gpio_set
49
#define LED_3_GPIO_OFF gpio_clear
50
51
/* yellow, on PD11, 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 GPIO11
57
#define LED_4_GPIO_ON gpio_set
58
#define LED_4_GPIO_OFF gpio_clear
59
60
/* AUX0, on PA5, 1 on LED_ON, 0 on LED_OFF */
61
#ifndef USE_LED_5
62
#define USE_LED_5 0
63
#endif
64
#define LED_5_GPIO GPIOA
65
#define LED_5_GPIO_PIN GPIO5
66
#define LED_5_GPIO_ON gpio_set
67
#define LED_5_GPIO_OFF gpio_clear
68
69
/* AUX1, on PA3, 1 on LED_ON, 0 on LED_OFF */
70
#ifndef USE_LED_6
71
#define USE_LED_6 0
72
#endif
73
#define LED_6_GPIO GPIOA
74
#define LED_6_GPIO_PIN GPIO3
75
#define LED_6_GPIO_ON gpio_set
76
#define LED_6_GPIO_OFF gpio_clear
77
78
/* AUX2, on PA2, 1 on LED_ON, 0 on LED_OFF */
79
#ifndef USE_LED_7
80
#define USE_LED_7 0
81
#endif
82
#define LED_7_GPIO GPIOA
83
#define LED_7_GPIO_PIN GPIO2
84
#define LED_7_GPIO_ON gpio_set
85
#define LED_7_GPIO_OFF gpio_clear
86
87
/* AUX3, on PA0, 1 on LED_ON, 0 on LED_OFF */
88
#ifndef USE_LED_8
89
#define USE_LED_8 0
90
#endif
91
#define LED_8_GPIO GPIOA
92
#define LED_8_GPIO_PIN GPIO0
93
#define LED_8_GPIO_ON gpio_set
94
#define LED_8_GPIO_OFF gpio_clear
95
96
/* AUX4, on PC3, 1 on LED_ON, 0 on LED_OFF */
97
#ifndef USE_LED_9
98
#define USE_LED_9 0
99
#endif
100
#define LED_9_GPIO GPIOC
101
#define LED_9_GPIO_PIN GPIO3
102
#define LED_9_GPIO_ON gpio_set
103
#define LED_9_GPIO_OFF gpio_clear
104
105
/* AUX5, on PC2, 1 on LED_ON, 0 on LED_OFF */
106
#ifndef USE_LED_10
107
#define USE_LED_10 0
108
#endif
109
#define LED_10_GPIO GPIOC
110
#define LED_10_GPIO_PIN GPIO2
111
#define LED_10_GPIO_ON gpio_set
112
#define LED_10_GPIO_OFF gpio_clear
113
114
/* AUX6, on PC6, 1 on LED_ON, 0 on LED_OFF */
115
#ifndef USE_LED_11
116
#define USE_LED_11 0
117
#endif
118
#define LED_11_GPIO GPIOC
119
#define LED_11_GPIO_PIN GPIO6
120
#define LED_11_GPIO_ON gpio_set
121
#define LED_11_GPIO_OFF gpio_clear
122
123
/* AUX7, on PC7, 1 on LED_ON, 0 on LED_OFF */
124
#ifndef USE_LED_12
125
#define USE_LED_12 0
126
#endif
127
#define LED_12_GPIO GPIOC
128
#define LED_12_GPIO_PIN GPIO7
129
#define LED_12_GPIO_ON gpio_set
130
#define LED_12_GPIO_OFF gpio_clear
131
132
/*
133
* ADCs
134
*/
135
// AUX0
136
#if USE_ADC_1
137
#define AD1_1_CHANNEL ADC_CHANNEL_IN5
138
#define ADC_1 AD1_1
139
#define ADC_1_GPIO_PORT GPIOA
140
#define ADC_1_GPIO_PIN GPIO5
141
#endif
142
143
// AUX1
144
#if USE_ADC_2
145
#define AD1_2_CHANNEL ADC_CHANNEL_IN3
146
#define ADC_2 AD1_2
147
#define ADC_2_GPIO_PORT GPIOA
148
#define ADC_2_GPIO_PIN GPIO3
149
#endif
150
151
// AUX2
152
#if USE_ADC_3
153
#define AD1_3_CHANNEL ADC_CHANNEL_IN2
154
#define ADC_3 AD1_3
155
#define ADC_3_GPIO_PORT GPIOA
156
#define ADC_3_GPIO_PIN GPIO2
157
#endif
158
159
// AUX3
160
#if USE_ADC_4
161
#define AD1_4_CHANNEL ADC_CHANNEL_IN0
162
#define ADC_4 AD1_4
163
#define ADC_4_GPIO_PORT GPIOA
164
#define ADC_4_GPIO_PIN GPIO0
165
#endif
166
167
// AUX4
168
#if USE_ADC_5
169
#define AD1_5_CHANNEL ADC_CHANNEL_IN13
170
#define ADC_5 AD1_5
171
#define ADC_5_GPIO_PORT GPIOC
172
#define ADC_5_GPIO_PIN GPIO3
173
#endif
174
175
// AUX5
176
#if USE_ADC_6
177
#define AD1_6_CHANNEL ADC_CHANNEL_IN12
178
#define ADC_6 AD1_6
179
#define ADC_6_GPIO_PORT GPIOC
180
#define ADC_6_GPIO_PIN GPIO2
181
#endif
182
183
// Internal ADC for battery enabled by default
184
#ifndef USE_ADC_7
185
#define USE_ADC_7 1
186
#endif
187
#if USE_ADC_7
188
#define AD1_7_CHANNEL ADC_CHANNEL_IN4
189
#define ADC_7 AD1_7
190
#define ADC_7_GPIO_PORT GPIOA
191
#define ADC_7_GPIO_PIN GPIO4
192
#endif
193
194
/* allow to define ADC_CHANNEL_VSUPPLY in the airframe file*/
195
#ifndef ADC_CHANNEL_VSUPPLY
196
#define ADC_CHANNEL_VSUPPLY ADC_7
197
#endif
198
199
/*
200
* R1 = 3.3k
201
* R2 = 22k
202
* adc * (3.3 / 2^12) * ((R1 + R2) / R1)
203
*/
204
#define VBAT_R1 3300.0f
205
#define VBAT_R2 22000.0f
206
#define DefaultVoltageOfAdc(adc) ((3.3f/4096.0f)*((VBAT_R1+VBAT_R2)/VBAT_R1)*adc)
207
208
//TODO configure DAC (ADC_1)
209
210
/*
211
* PWM defines
212
*/
213
#ifndef USE_PWM0
214
#define USE_PWM0 1
215
#endif
216
#if USE_PWM0
217
#define PWM_SERVO_0 0
218
#define PWM_SERVO_0_GPIO GPIOA
219
#define PWM_SERVO_0_PIN GPIO6
220
#define PWM_SERVO_0_AF GPIO_AF2
221
#define PWM_SERVO_0_DRIVER PWMD3
222
#define PWM_SERVO_0_CHANNEL 0
223
#define PWM_SERVO_0_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
224
#else
225
#define PWM_SERVO_0_ACTIVE PWM_OUTPUT_DISABLED
226
#endif
227
228
#ifndef USE_PWM1
229
#define USE_PWM1 1
230
#endif
231
#if USE_PWM1
232
#define PWM_SERVO_1 1
233
#define PWM_SERVO_1_GPIO GPIOA
234
#define PWM_SERVO_1_PIN GPIO7
235
#define PWM_SERVO_1_AF GPIO_AF2
236
#define PWM_SERVO_1_DRIVER PWMD3
237
#define PWM_SERVO_1_CHANNEL 1
238
#define PWM_SERVO_1_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
239
#else
240
#define PWM_SERVO_1_ACTIVE PWM_OUTPUT_DISABLED
241
#endif
242
243
#ifndef USE_PWM2
244
#define USE_PWM2 1
245
#endif
246
#if USE_PWM2
247
#define PWM_SERVO_2 2
248
#define PWM_SERVO_2_GPIO GPIOB
249
#define PWM_SERVO_2_PIN GPIO0
250
#define PWM_SERVO_2_AF GPIO_AF2
251
#define PWM_SERVO_2_DRIVER PWMD3
252
#define PWM_SERVO_2_CHANNEL 2
253
#define PWM_SERVO_2_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
254
#else
255
#define PWM_SERVO_2_ACTIVE PWM_OUTPUT_DISABLED
256
#endif
257
258
#ifndef USE_PWM3
259
#define USE_PWM3 1
260
#endif
261
#if USE_PWM3
262
#define PWM_SERVO_3 3
263
#define PWM_SERVO_3_GPIO GPIOB
264
#define PWM_SERVO_3_PIN GPIO1
265
#define PWM_SERVO_3_AF GPIO_AF2
266
#define PWM_SERVO_3_DRIVER PWMD3
267
#define PWM_SERVO_3_CHANNEL 3
268
#define PWM_SERVO_3_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
269
#else
270
#define PWM_SERVO_3_ACTIVE PWM_OUTPUT_DISABLED
271
#endif
272
273
#ifndef USE_PWM4
274
#define USE_PWM4 1
275
#endif
276
#if USE_PWM4
277
#define PWM_SERVO_4 4
278
#define PWM_SERVO_4_GPIO GPIOD
279
#define PWM_SERVO_4_PIN GPIO12
280
#define PWM_SERVO_4_AF GPIO_AF2
281
#define PWM_SERVO_4_DRIVER PWMD4
282
#define PWM_SERVO_4_CHANNEL 0
283
#define PWM_SERVO_4_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
284
#else
285
#define PWM_SERVO_4_ACTIVE PWM_OUTPUT_DISABLED
286
#endif
287
288
#ifndef USE_PWM5
289
#define USE_PWM5 1
290
#endif
291
#if USE_PWM5
292
#define PWM_SERVO_5 5
293
#define PWM_SERVO_5_GPIO GPIOD
294
#define PWM_SERVO_5_PIN GPIO13
295
#define PWM_SERVO_5_AF GPIO_AF2
296
#define PWM_SERVO_5_DRIVER PWMD4
297
#define PWM_SERVO_5_CHANNEL 1
298
#define PWM_SERVO_5_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
299
#else
300
#define PWM_SERVO_5_ACTIVE PWM_OUTPUT_DISABLED
301
#endif
302
303
#ifndef USE_PWM6
304
#define USE_PWM6 1
305
#endif
306
#if USE_PWM6
307
#define PWM_SERVO_6 6
308
#define PWM_SERVO_6_GPIO GPIOD
309
#define PWM_SERVO_6_PIN GPIO14
310
#define PWM_SERVO_6_AF GPIO_AF2
311
#define PWM_SERVO_6_DRIVER PWMD4
312
#define PWM_SERVO_6_CHANNEL 2
313
#define PWM_SERVO_6_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
314
#else
315
#define PWM_SERVO_6_ACTIVE PWM_OUTPUT_DISABLED
316
#endif
317
318
#ifndef USE_PWM6
319
#define USE_PWM6 1
320
#endif
321
#if USE_PWM7
322
#define PWM_SERVO_7 7
323
#define PWM_SERVO_7_GPIO GPIOD
324
#define PWM_SERVO_7_PIN GPIO15
325
#define PWM_SERVO_7_AF GPIO_AF2
326
#define PWM_SERVO_7_DRIVER PWMD4
327
#define PWM_SERVO_7_CHANNEL 3
328
#define PWM_SERVO_7_ACTIVE PWM_OUTPUT_ACTIVE_HIGH
329
#else
330
#define PWM_SERVO_7_ACTIVE PWM_OUTPUT_DISABLED
331
#endif
332
333
// TODO PWM on AUX pins
334
335
#ifdef STM32_PWM_USE_TIM3
336
#define PWM_CONF_TIM3 STM32_PWM_USE_TIM3
337
#else
338
#define PWM_CONF_TIM3 1
339
#endif
340
#define PWM_CONF3_DEF { \
341
PWM_FREQUENCY, \
342
PWM_FREQUENCY/TIM3_SERVO_HZ, \
343
NULL, \
344
{ \
345
{ PWM_SERVO_0_ACTIVE, NULL }, \
346
{ PWM_SERVO_1_ACTIVE, NULL }, \
347
{ PWM_SERVO_2_ACTIVE, NULL }, \
348
{ PWM_SERVO_3_ACTIVE, NULL }, \
349
}, \
350
0, \
351
0 \
352
}
353
354
#ifdef STM32_PWM_USE_TIM4
355
#define PWM_CONF_TIM4 STM32_PWM_USE_TIM4
356
#else
357
#define PWM_CONF_TIM4 1
358
#endif
359
#define PWM_CONF4_DEF { \
360
PWM_FREQUENCY, \
361
PWM_FREQUENCY/TIM4_SERVO_HZ, \
362
NULL, \
363
{ \
364
{ PWM_SERVO_4_ACTIVE, NULL }, \
365
{ PWM_SERVO_5_ACTIVE, NULL }, \
366
{ PWM_SERVO_6_ACTIVE, NULL }, \
367
{ PWM_SERVO_7_ACTIVE, NULL }, \
368
}, \
369
0, \
370
0 \
371
}
372
376
#define UART2_GPIO_PORT_TX GPIOD
377
#define UART2_GPIO_TX GPIO5
378
#define UART2_GPIO_PORT_RX GPIOD
379
#define UART2_GPIO_RX GPIO6
380
#define UART2_GPIO_AF 7
381
#ifndef UART2_HW_FLOW_CONTROL
382
#define UART2_HW_FLOW_CONTROL TRUE
383
#endif
384
390
#define UART1_GPIO_PORT_TX GPIOB
391
#define UART1_GPIO_TX GPIO6
392
#define UART1_GPIO_PORT_RX GPIOB
393
#define UART1_GPIO_RX GPIO7
394
#define UART1_GPIO_AF 7
395
396
#define UART3_GPIO_PORT_TX GPIOD
397
#define UART3_GPIO_TX GPIO8
398
#define UART3_GPIO_PORT_RX GPIOD
399
#define UART3_GPIO_RX GPIO9
400
#define UART3_GPIO_AF 7
401
402
#define UART8_GPIO_PORT_TX GPIOE
403
#define UART8_GPIO_TX GPIO0
404
#define UART8_GPIO_PORT_RX GPIOE
405
#define UART8_GPIO_RX GPIO1
406
#define UART8_GPIO_AF 8
407
420
// In case, do dynamic config of UARTs
421
#define USE_UART7_RX TRUE
422
#ifndef USE_UART7_TX // may be used in half duplex mode
423
#define USE_UART7_TX FALSE
424
#endif
425
#define UART7_GPIO_PORT_RX GPIOE
426
#define UART7_GPIO_RX GPIO7
427
#define UART7_GPIO_AF 8
428
429
#define USE_UART4_RX TRUE
430
#define USE_UART4_TX FALSE
431
#define UART4_GPIO_PORT_RX GPIOA
432
#define UART4_GPIO_RX GPIO1
433
#define UART4_GPIO_AF 8
434
435
/* The line that is pulled low at power up to initiate the bind process
436
* PC7: AUX7
437
*/
438
#define SPEKTRUM_BIND_PIN GPIO7
439
#define SPEKTRUM_BIND_PIN_PORT GPIOC
440
441
// no wait with chibios as the RTC oscillator takes longer to stabilize
442
#define SPEKTRUM_BIND_WAIT 30000
443
449
#define RC_PPM_TICKS_PER_USEC 6
450
#define PPM_TIMER_FREQUENCY 6000000
451
#define PPM_CHANNEL ICU_CHANNEL_2
452
#define PPM_TIMER ICUD5
453
454
/*
455
* PWM input
456
*/
457
// PWM_INPUT 1 on PA0 (AUX3)
458
#define PWM_INPUT1_ICU ICUD2
459
#define PWM_INPUT1_CHANNEL ICU_CHANNEL_1
460
#define PWM_INPUT1_GPIO_PORT GPIOA
461
#define PWM_INPUT1_GPIO_PIN GPIO0
462
#define PWM_INPUT1_GPIO_AF GPIO_AF1
463
464
// PWM_INPUT 2 on PC7 (AUX7)
465
#define PWM_INPUT2_ICU ICUD8
466
#define PWM_INPUT2_CHANNEL ICU_CHANNEL_2
467
#define PWM_INPUT2_GPIO_PORT GPIOC
468
#define PWM_INPUT2_GPIO_PIN GPIO7
469
#define PWM_INPUT2_GPIO_AF GPIO_AF3
470
474
// Digital noise filter: 0 disabled, [0x1 - 0xF] enable up to n t_I2CCLK
475
#define STM32_CR1_DNF(n) ((n & 0x0f) << 8)
476
// Timing register
477
#define I2C_FAST_400KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR (STM32_TIMINGR_PRESC(0U) | \
478
STM32_TIMINGR_SCLDEL(10U) | STM32_TIMINGR_SDADEL(0U) | \
479
STM32_TIMINGR_SCLH(34U) | STM32_TIMINGR_SCLL(86U))
480
#define I2C_STD_100KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR (STM32_TIMINGR_PRESC(1U) | \
481
STM32_TIMINGR_SCLDEL(9U) | STM32_TIMINGR_SDADEL(0U) | \
482
STM32_TIMINGR_SCLH(105U) | STM32_TIMINGR_SCLL(153U))
483
484
485
#ifndef I2C1_CLOCK_SPEED
486
#define I2C1_CLOCK_SPEED 400000
487
#endif
488
489
#if I2C1_CLOCK_SPEED == 400000
490
#define I2C1_CFG_DEF { \
491
.timingr = I2C_FAST_400KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR, \
492
.cr1 = STM32_CR1_DNF(0), \
493
.cr2 = 0 \
494
}
495
#elif I2C1_CLOCK_SPEED == 100000
496
#define I2C1_CFG_DEF { \
497
.timingr = I2C_STD_100KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR, \
498
.cr1 = STM32_CR1_DNF(0), \
499
.cr2 = 0 \
500
}
501
#else
502
#error "Unknown I2C1 clock speed"
503
#endif
504
505
506
#ifndef I2C2_CLOCK_SPEED
507
#define I2C2_CLOCK_SPEED 400000
508
#endif
509
510
#if I2C2_CLOCK_SPEED == 400000
511
#define I2C2_CFG_DEF { \
512
.timingr = I2C_FAST_400KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR, \
513
.cr1 = STM32_CR1_DNF(0), \
514
.cr2 = 0 \
515
}
516
#elif I2C2_CLOCK_SPEED == 100000
517
#define I2C2_CFG_DEF { \
518
.timingr = I2C_STD_100KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR, \
519
.cr1 = STM32_CR1_DNF(0), \
520
.cr2 = 0 \
521
}
522
#else
523
#error "Unknown I2C2 clock speed"
524
#endif
525
529
#define SPI1_GPIO_AF GPIO_AF5
530
#define SPI1_GPIO_PORT_MISO GPIOB
531
#define SPI1_GPIO_MISO GPIO4
532
#define SPI1_GPIO_PORT_MOSI GPIOB
533
#define SPI1_GPIO_MOSI GPIO5
534
#define SPI1_GPIO_PORT_SCK GPIO3
535
#define SPI1_GPIO_SCK GPIO3
536
537
// SLAVE0 on SPI connector
538
#define SPI_SELECT_SLAVE0_PORT GPIOA
539
#define SPI_SELECT_SLAVE0_PIN GPIO15
540
// SLAVE1 on AUX0
541
#define SPI_SELECT_SLAVE1_PORT GPIOA
542
#define SPI_SELECT_SLAVE1_PIN GPIO5
543
// SLAVE2 on AUX1
544
#define SPI_SELECT_SLAVE2_PORT GPIOA
545
#define SPI_SELECT_SLAVE2_PIN GPIO3
546
// SLAVE3 on AUX2
547
#define SPI_SELECT_SLAVE3_PORT GPIOA
548
#define SPI_SELECT_SLAVE3_PIN GPIO2
549
// SLAVE4 on AUX3
550
#define SPI_SELECT_SLAVE4_PORT GPIOA
551
#define SPI_SELECT_SLAVE4_PIN GPIO0
552
// SLAVE5 on AUX4
553
#define SPI_SELECT_SLAVE5_PORT GPIOC
554
#define SPI_SELECT_SLAVE5_PIN GPIO3
555
562
#ifndef USE_BARO_BOARD
563
#define USE_BARO_BOARD 1
564
#endif
565
569
#define SDIO_D0_PORT GPIOC
570
#define SDIO_D0_PIN GPIO8
571
#define SDIO_D1_PORT GPIOC
572
#define SDIO_D1_PIN GPIO9
573
#define SDIO_D2_PORT GPIOC
574
#define SDIO_D2_PIN GPIO10
575
#define SDIO_D3_PORT GPIOC
576
#define SDIO_D3_PIN GPIO11
577
#define SDIO_CK_PORT GPIOC
578
#define SDIO_CK_PIN GPIO12
579
#define SDIO_CMD_PORT GPIOD
580
#define SDIO_CMD_PIN GPIO2
581
#define SDIO_AF 12
582
// bat monitoring for file closing
583
#define SDLOG_BAT_ADC ADCD1
584
#define SDLOG_BAT_CHAN AD1_7_CHANNEL
585
// usb led status
586
#define SDLOG_USB_LED 4
587
#define SDLOG_USB_VBUS_PORT GPIOA
588
#define SDLOG_USB_VBUS_PIN GPIO9
589
590
591
/*
592
* Actuators for fixedwing
593
*/
594
/* Default actuators driver */
595
#define DEFAULT_ACTUATORS "subsystems/actuators/actuators_pwm.h"
596
#define ActuatorDefaultSet(_x,_y) ActuatorPwmSet(_x,_y)
597
#define ActuatorsDefaultInit() ActuatorsPwmInit()
598
#define ActuatorsDefaultCommit() ActuatorsPwmCommit()
599
600
#endif
/* CONFIG_CHIMERA_1_00_H */
601
board.h
sw
airborne
boards
chimera
chibios
v1.0
chimera.h
Generated on Wed Feb 10 2021 04:33:58 for Paparazzi UAS by
1.8.8