Paparazzi UAS v7.0_unstable
Paparazzi is a free software Unmanned Aircraft System.
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 "board.h"
10
15/*
16 * AHB_CLK
17 */
18#define AHB_CLK STM32_HCLK
19
20/*
21 * Concat macro
22 */
23#define _CONCAT_BOARD_PARAM(_s1, _s2) _s1 ## _s2
24#define CONCAT_BOARD_PARAM(_s1, _s2) _CONCAT_BOARD_PARAM(_s1, _s2)
25
26/*
27 * LEDs
28 */
29/* red, on PD15, 1 on LED_ON, 0 on LED_OFF */
30#ifndef USE_LED_1
31#define USE_LED_1 1
32#endif
33#define LED_1_GPIO PAL_PORT(LINE_LED1)
34#define LED_1_GPIO_PIN PAL_PAD(LINE_LED1)
35#define LED_1_GPIO_ON gpio_set
36#define LED_1_GPIO_OFF gpio_clear
37
38/* orange, on PA10, 1 on LED_ON, 0 on LED_OFF */
39#ifndef USE_LED_2
40#define USE_LED_2 1
41#endif
42#define LED_2_GPIO PAL_PORT(LINE_LED2)
43#define LED_2_GPIO_PIN PAL_PAD(LINE_LED2)
44#define LED_2_GPIO_ON gpio_set
45#define LED_2_GPIO_OFF gpio_clear
46
47/* green, on PC7, 1 on LED_ON, 0 on LED_OFF */
48#ifndef USE_LED_3
49#define USE_LED_3 1
50#endif
51#define LED_3_GPIO PAL_PORT(LINE_LED3)
52#define LED_3_GPIO_PIN PAL_PAD(LINE_LED3)
53#define LED_3_GPIO_ON gpio_set
54#define LED_3_GPIO_OFF gpio_clear
55
56/* yellow, on PD10, 1 on LED_ON, 0 on LED_OFF */
57#ifndef USE_LED_4
58#define USE_LED_4 1
59#endif
60#define LED_4_GPIO PAL_PORT(LINE_LED4)
61#define LED_4_GPIO_PIN PAL_PAD(LINE_LED4)
62#define LED_4_GPIO_ON gpio_set
63#define LED_4_GPIO_OFF gpio_clear
64
65/*
66 * ADCs
67 */
68// AUXa1
69#if USE_ADC_1
70#define AD1_1_CHANNEL CONCAT_BOARD_PARAM(ADC_CHANNEL_IN, AUX_A1_ADC_IN)
71#define ADC_1 AD1_1
72#define ADC_1_GPIO_PORT PAL_PORT(LINE_AUX_A1)
73#define ADC_1_GPIO_PIN PAL_PAD(LINE_AUX_A1)
74#endif
75
76// AUXa2
77#if USE_ADC_2
78#define AD1_2_CHANNEL CONCAT_BOARD_PARAM(ADC_CHANNEL_IN, AUX_A2_ADC_IN)
79#define ADC_2 AD1_2
80#define ADC_2_GPIO_PORT PAL_PORT(LINE_AUX_A2)
81#define ADC_2_GPIO_PIN PAL_PAD(LINE_AUX_A2)
82#endif
83
84// AUXa3
85#if USE_ADC_3
86#define AD1_3_CHANNEL CONCAT_BOARD_PARAM(ADC_CHANNEL_IN, AUX_A3_ADC_IN)
87#define ADC_3 AD1_3
88#define ADC_3_GPIO_PORT PAL_PORT(LINE_AUX_A3)
89#define ADC_3_GPIO_PIN PAL_PAD(LINE_AUX_A3)
90#endif
91
92// AUXa4
93#if USE_ADC_4
94#define AD1_4_CHANNEL CONCAT_BOARD_PARAM(ADC_CHANNEL_IN, AUX_A4_ADC_IN)
95#define ADC_4 AD1_4
96#define ADC_4_GPIO_PORT PAL_PORT(LINE_AUX_A4)
97#define ADC_4_GPIO_PIN PAL_PAD(LINE_AUX_A4)
98#endif
99
100// AUXb1
101#if USE_ADC_5
102#define AD1_5_CHANNEL CONCAT_BOARD_PARAM(ADC_CHANNEL_IN, AUX_B1_ADC_IN)
103#define ADC_5 AD1_5
104#define ADC_5_GPIO_PORT PAL_PORT(LINE_AUX_B1)
105#define ADC_5_GPIO_PIN PAL_PAD(LINE_AUX_B1)
106#endif
107
108// AUXb2
109#if USE_ADC_6
110#define AD1_6_CHANNEL CONCAT_BOARD_PARAM(ADC_CHANNEL_IN, AUX_B2_ADC_IN)
111#define ADC_6 AD1_6
112#define ADC_6_GPIO_PORT PAL_PORT(LINE_AUX_B2)
113#define ADC_6_GPIO_PIN PAL_PAD(LINE_AUX_B2)
114#endif
115
116// AUXb3
117#if USE_ADC_7
118#define AD1_7_CHANNEL CONCAT_BOARD_PARAM(ADC_CHANNEL_IN, AUX_B3_ADC_IN)
119#define ADC_7 AD1_7
120#define ADC_7_GPIO_PORT PAL_PORT(LINE_AUX_B3)
121#define ADC_7_GPIO_PIN PAL_PAD(LINE_AUX_B3)
122#endif
123
124// AUXb4
125#if USE_ADC_8
126#define AD1_8_CHANNEL CONCAT_BOARD_PARAM(ADC_CHANNEL_IN, AUX_B4_ADC_IN)
127#define ADC_8 AD1_8
128#define ADC_8_GPIO_PORT PAL_PORT(LINE_AUX_B4)
129#define ADC_8_GPIO_PIN PAL_PAD(LINE_AUX_B4)
130#endif
131
132// Internal ADC for battery enabled by default
133#ifndef USE_ADC_9
134#define USE_ADC_9 1
135#endif
136#if USE_ADC_9
137#define AD1_9_CHANNEL CONCAT_BOARD_PARAM(ADC_CHANNEL_IN, VBAT_MEAS_ADC_IN)
138#define ADC_9 AD1_9
139#define ADC_9_GPIO_PORT PAL_PORT(LINE_VBAT_MEAS)
140#define ADC_9_GPIO_PIN PAL_PAD(LINE_VBAT_MEAS)
141#endif
142
143/* allow to define ADC_CHANNEL_VSUPPLY in the airframe file*/
144#ifndef ADC_CHANNEL_VSUPPLY
145#define ADC_CHANNEL_VSUPPLY ADC_9
146#endif
147
148/*
149 * R1 = 2.2k
150 * R2 = 12k
151 * adc * (3.3 / 2^12) * ((R1 + R2) / R1)
152 */
153#define VBAT_R1 2200.0f
154#define VBAT_R2 12000.0f
155#define DefaultVoltageOfAdc(adc) ((3.3f/4096.0f)*((VBAT_R1+VBAT_R2)/VBAT_R1)*adc)
156
157/*
158 * PWM defines
159 */
160
161/*
162 * enable TIM1 by default
163 */
164#ifndef USE_PWM_TIM1
165#define USE_PWM_TIM1 1
166#endif
167
168// SRVa connectors, activated in PWM mode by default
169
170#ifndef USE_PWM1
171#define USE_PWM1 1
172#endif
173#if USE_PWM1
174#define PWM_SERVO_1 1
175#define PWM_SERVO_1_GPIO PAL_PORT(LINE_SRVA1)
176#define PWM_SERVO_1_PIN PAL_PAD(LINE_SRVA1)
177#define PWM_SERVO_1_AF AF_SRVA1
178#define PWM_SERVO_1_DRIVER CONCAT_BOARD_PARAM(PWMD, SRVA1_TIM)
179#define PWM_SERVO_1_CHANNEL (SRVA1_TIM_CH-1)
180#define PWM_SERVO_1_CONF CONCAT_BOARD_PARAM(pwmcfg, SRVA1_TIM)
181#endif
182
183#ifndef USE_PWM2
184#define USE_PWM2 1
185#endif
186#if USE_PWM2
187#define PWM_SERVO_2 2
188#define PWM_SERVO_2_GPIO PAL_PORT(LINE_SRVA2)
189#define PWM_SERVO_2_PIN PAL_PAD(LINE_SRVA2)
190#define PWM_SERVO_2_AF AF_SRVA2
191#define PWM_SERVO_2_DRIVER CONCAT_BOARD_PARAM(PWMD, SRVA2_TIM)
192#define PWM_SERVO_2_CHANNEL (SRVA2_TIM_CH-1)
193#define PWM_SERVO_2_CONF CONCAT_BOARD_PARAM(pwmcfg, SRVA2_TIM)
194#endif
195
196#ifndef USE_PWM3
197#define USE_PWM3 1
198#endif
199#if USE_PWM3
200#define PWM_SERVO_3 3
201#define PWM_SERVO_3_GPIO PAL_PORT(LINE_SRVA3)
202#define PWM_SERVO_3_PIN PAL_PAD(LINE_SRVA3)
203#define PWM_SERVO_3_AF AF_SRVA3
204#define PWM_SERVO_3_DRIVER CONCAT_BOARD_PARAM(PWMD, SRVA3_TIM)
205#define PWM_SERVO_3_CHANNEL (SRVA3_TIM_CH-1)
206#define PWM_SERVO_3_CONF CONCAT_BOARD_PARAM(pwmcfg, SRVA3_TIM)
207#endif
208
209#ifndef USE_PWM4
210#define USE_PWM4 1
211#endif
212#if USE_PWM4
213#define PWM_SERVO_4 4
214#define PWM_SERVO_4_GPIO PAL_PORT(LINE_SRVA4)
215#define PWM_SERVO_4_PIN PAL_PAD(LINE_SRVA4)
216#define PWM_SERVO_4_AF AF_SRVA4
217#define PWM_SERVO_4_DRIVER CONCAT_BOARD_PARAM(PWMD, SRVA4_TIM)
218#define PWM_SERVO_4_CHANNEL (SRVA4_TIM_CH-1)
219#define PWM_SERVO_4_CONF CONCAT_BOARD_PARAM(pwmcfg, SRVA4_TIM)
220#endif
221
222// SRVb connector, PWM mode disabled by default (DShot is enabled by default)
223
224#ifndef USE_PWM5
225#define USE_PWM5 0
226#endif
227#if USE_PWM5
228#define PWM_SERVO_5 5
229#define PWM_SERVO_5_GPIO PAL_PORT(LINE_SRVB1)
230#define PWM_SERVO_5_PIN PAL_PAD(LINE_SRVB1)
231#define PWM_SERVO_5_AF AF_SRVB1
232#define PWM_SERVO_5_DRIVER CONCAT_BOARD_PARAM(PWMD, SRVB1_TIM)
233#define PWM_SERVO_5_CHANNEL (SRVB1_TIM_CH-1)
234#define PWM_SERVO_5_CONF CONCAT_BOARD_PARAM(pwmcfg, SRVB1_TIM)
235#endif
236
237#ifndef USE_PWM6
238#define USE_PWM6 0
239#endif
240#if USE_PWM6
241#define PWM_SERVO_6 6
242#define PWM_SERVO_6_GPIO PAL_PORT(LINE_SRVB2)
243#define PWM_SERVO_6_PIN PAL_PAD(LINE_SRVB2)
244#define PWM_SERVO_6_AF AF_SRVB2
245#define PWM_SERVO_6_DRIVER CONCAT_BOARD_PARAM(PWMD, SRVB2_TIM)
246#define PWM_SERVO_6_CHANNEL (SRVB2_TIM_CH-1)
247#define PWM_SERVO_6_CONF CONCAT_BOARD_PARAM(pwmcfg, SRVB2_TIM)
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 PAL_PORT(LINE_SRVB3)
256#define PWM_SERVO_7_PIN PAL_PAD(LINE_SRVB3)
257#define PWM_SERVO_7_AF AF_SRVB3
258#define PWM_SERVO_7_DRIVER CONCAT_BOARD_PARAM(PWMD, SRVB3_TIM)
259#define PWM_SERVO_7_CHANNEL (SRVB3_TIM_CH-1)
260#define PWM_SERVO_7_CONF CONCAT_BOARD_PARAM(pwmcfg, SRVB3_TIM)
261#endif
262
263#ifndef USE_PWM8
264#define USE_PWM8 0
265#endif
266#if USE_PWM8
267#define PWM_SERVO_8 8
268#define PWM_SERVO_8_GPIO PAL_PORT(LINE_SRVB4)
269#define PWM_SERVO_8_PIN PAL_PAD(LINE_SRVB4)
270#define PWM_SERVO_8_AF AF_SRVB4
271#define PWM_SERVO_8_DRIVER CONCAT_BOARD_PARAM(PWMD, SRVB4_TIM)
272#define PWM_SERVO_8_CHANNEL (SRVB4_TIM_CH-1)
273#define PWM_SERVO_8_CONF CONCAT_BOARD_PARAM(pwmcfg, SRVB4_TIM)
274#endif
275
276#ifndef USE_PWM9
277#define USE_PWM9 0
278#endif
279#if USE_PWM9
280#define PWM_SERVO_9 9
281#define PWM_SERVO_9_GPIO PAL_PORT(LINE_AUX_A1)
282#define PWM_SERVO_9_PIN PAL_PAD(LINE_AUX_A1)
283#define PWM_SERVO_9_AF GPIO_AF2
284#define PWM_SERVO_9_DRIVER CONCAT_BOARD_PARAM(PWMD, AUX_A1_TIM)
285#define PWM_SERVO_9_CHANNEL (AUX_A1_TIM_CH-1)
286#define PWM_SERVO_9_CONF CONCAT_BOARD_PARAM(pwmcfg, AUX_A1_TIM)
287#endif
288
289#ifndef USE_PWM10
290#define USE_PWM10 0
291#endif
292#if USE_PWM10
293#define PWM_SERVO_10 10
294#define PWM_SERVO_10_GPIO PAL_PORT(LINE_AUX_A2)
295#define PWM_SERVO_10_PIN PAL_PAD(LINE_AUX_A2)
296#define PWM_SERVO_10_AF GPIO_AF2
297#define PWM_SERVO_10_DRIVER CONCAT_BOARD_PARAM(PWMD, AUX_A2_TIM)
298#define PWM_SERVO_10_CHANNEL (AUX_A2_TIM_CH-1)
299#define PWM_SERVO_10_CONF CONCAT_BOARD_PARAM(pwmcfg, AUX_A2_TIM)
300#endif
301
302#ifndef USE_PWM11
303#define USE_PWM11 0
304#endif
305#if USE_PWM11
306#define PWM_SERVO_11 11
307#define PWM_SERVO_11_GPIO PAL_PORT(LINE_AUX_A3)
308#define PWM_SERVO_11_PIN PAL_PAD(LINE_AUX_A3)
309#define PWM_SERVO_11_AF GPIO_AF2
310#define PWM_SERVO_11_DRIVER CONCAT_BOARD_PARAM(PWMD, AUX_A3_TIM)
311#define PWM_SERVO_11_CHANNEL (AUX_A3_TIM_CH-1)
312#define PWM_SERVO_11_CONF CONCAT_BOARD_PARAM(pwmcfg, AUX_A3_TIM)
313#endif
314
315#ifndef USE_PWM12
316#define USE_PWM12 0
317#endif
318#if USE_PWM12
319#define PWM_SERVO_12 12
320#define PWM_SERVO_12_GPIO PAL_PORT(LINE_AUX_A4)
321#define PWM_SERVO_12_PIN PAL_PAD(LINE_AUX_A4)
322#define PWM_SERVO_12_AF GPIO_AF2
323#define PWM_SERVO_12_DRIVER CONCAT_BOARD_PARAM(PWMD, AUX_A4_TIM)
324#define PWM_SERVO_12_CHANNEL (AUX_A4_TIM_CH-1)
325#define PWM_SERVO_12_CONF CONCAT_BOARD_PARAM(pwmcfg, AUX_A4_TIM)
326#endif
327
328#ifndef USE_PWM13
329#define USE_PWM13 0
330#endif
331#if USE_PWM13
332#define PWM_SERVO_13 13
333#define PWM_SERVO_13_GPIO PAL_PORT(LINE_AUX_B1)
334#define PWM_SERVO_13_PIN PAL_PAD(LINE_AUX_B1)
335#define PWM_SERVO_13_AF GPIO_AF2
336#define PWM_SERVO_13_DRIVER CONCAT_BOARD_PARAM(PWMD, AUX_B1_TIM)
337#define PWM_SERVO_13_CHANNEL (AUX_B1_TIM_CH-1)
338#define PWM_SERVO_13_CONF CONCAT_BOARD_PARAM(pwmcfg, AUX_B1_TIM)
339#endif
340
341#ifndef USE_PWM14
342#define USE_PWM14 0
343#endif
344#if USE_PWM14
345#define PWM_SERVO_14 14
346#define PWM_SERVO_14_GPIO PAL_PORT(LINE_AUX_B2)
347#define PWM_SERVO_14_PIN PAL_PAD(LINE_AUX_B2)
348#define PWM_SERVO_14_AF GPIO_AF2
349#define PWM_SERVO_14_DRIVER CONCAT_BOARD_PARAM(PWMD, AUX_B2_TIM)
350#define PWM_SERVO_14_CHANNEL (AUX_B2_TIM_CH-1)
351#define PWM_SERVO_14_CONF CONCAT_BOARD_PARAM(pwmcfg, AUX_B2_TIM)
352#endif
353
354#ifndef USE_PWM15
355#define USE_PWM15 0
356#endif
357#if USE_PWM15
358#define PWM_SERVO_15 15
359#define PWM_SERVO_15_GPIO PAL_PORT(LINE_AUX_B3)
360#define PWM_SERVO_15_PIN PAL_PAD(LINE_AUX_B3)
361#define PWM_SERVO_15_AF GPIO_AF2
362#define PWM_SERVO_15_DRIVER CONCAT_BOARD_PARAM(PWMD, AUX_B3_TIM)
363#define PWM_SERVO_15_CHANNEL (AUX_B3_TIM_CH-1)
364#define PWM_SERVO_15_CONF CONCAT_BOARD_PARAM(pwmcfg, AUX_B3_TIM)
365#endif
366
367#ifndef USE_PWM16
368#define USE_PWM16 0
369#endif
370#if USE_PWM16
371#define PWM_SERVO_16 16
372#define PWM_SERVO_16_GPIO PAL_PORT(LINE_AUX_B4)
373#define PWM_SERVO_16_PIN PAL_PAD(LINE_AUX_B4)
374#define PWM_SERVO_16_AF GPIO_AF2
375#define PWM_SERVO_16_DRIVER CONCAT_BOARD_PARAM(PWMD, AUX_B4_TIM)
376#define PWM_SERVO_16_CHANNEL (AUX_B4_TIM_CH-1)
377#define PWM_SERVO_16_CONF CONCAT_BOARD_PARAM(pwmcfg, AUX_B4_TIM)
378#endif
379
380// servo index starting at 1 + regular servos + aux servos
381// so NB = 1+8+8
382#define ACTUATORS_PWM_NB 17
383
384
388#ifdef DSHOT_TIM4_TELEMETRY_NUM
389#define DSHOT_TIM4_TELEMETRY_DEV CONCAT_BOARD_PARAM(&SD, DSHOT_TIM4_TELEMETRY_NUM)
390#else
391#define DSHOT_TIM4_TELEMETRY_DEV NULL
392#endif
393
394#ifdef DSHOT_TIM1_TELEMETRY_NUM
395#define DSHOT_TIM1_TELEMETRY_DEV CONCAT_BOARD_PARAM(&SD, DSHOT_TIM1_TELEMETRY_NUM)
396#else
397#define DSHOT_TIM1_TELEMETRY_DEV NULL
398#endif
399
400// macros for possible dshot telemetry
401#define DSHOT_TLM_RX 5
402#define DSHOT_TLM_AUX_RX 4
403
404#ifndef USE_DSHOT_TIM4
405#define USE_DSHOT_TIM4 1 // use SRVb for DShot by default
406#endif
407
408#if USE_DSHOT_TIM4 // Servo B1, B2, B3, B4 on TIM4
409
410// Servo B1, B2, B3, B4 on TM4 are primary DSHOT connector
411#define DSHOT_SERVO_1 1
412#define DSHOT_SERVO_1_GPIO PAL_PORT(LINE_SRVB1)
413#define DSHOT_SERVO_1_PIN PAL_PAD(LINE_SRVB1)
414#define DSHOT_SERVO_1_AF AF_SRVB1
415#define DSHOT_SERVO_1_DRIVER CONCAT_BOARD_PARAM(DSHOTD, SRVB1_TIM)
416#define DSHOT_SERVO_1_CHANNEL SRVB1_TIM_CH
417
418#define DSHOT_SERVO_2 2
419#define DSHOT_SERVO_2_GPIO PAL_PORT(LINE_SRVB2)
420#define DSHOT_SERVO_2_PIN PAL_PAD(LINE_SRVB2)
421#define DSHOT_SERVO_2_AF AF_SRVB2
422#define DSHOT_SERVO_2_DRIVER CONCAT_BOARD_PARAM(DSHOTD, SRVB2_TIM)
423#define DSHOT_SERVO_2_CHANNEL SRVB2_TIM_CH
424
425#define DSHOT_SERVO_3 3
426#define DSHOT_SERVO_3_GPIO PAL_PORT(LINE_SRVB3)
427#define DSHOT_SERVO_3_PIN PAL_PAD(LINE_SRVB3)
428#define DSHOT_SERVO_3_AF AF_SRVB3
429#define DSHOT_SERVO_3_DRIVER CONCAT_BOARD_PARAM(DSHOTD, SRVB3_TIM)
430#define DSHOT_SERVO_3_CHANNEL SRVB3_TIM_CH
431
432#define DSHOT_SERVO_4 4
433#define DSHOT_SERVO_4_GPIO PAL_PORT(LINE_SRVB4)
434#define DSHOT_SERVO_4_PIN PAL_PAD(LINE_SRVB4)
435#define DSHOT_SERVO_4_AF AF_SRVB4
436#define DSHOT_SERVO_4_DRIVER CONCAT_BOARD_PARAM(DSHOTD, SRVB4_TIM)
437#define DSHOT_SERVO_4_CHANNEL SRVB4_TIM_CH
438
439#define DSHOT_CONF_TIM4 1
440#define DSHOT_CONF4_DEF { \
441 .dma_stream = STM32_PWM4_UP_DMA_STREAM, \
442 .dma_channel = STM32_PWM4_UP_DMA_CHANNEL, \
443 .pwmp = &PWMD4, \
444 .tlm_sd = DSHOT_TIM4_TELEMETRY_DEV, \
445 .dma_buf = &dshot4DmaBuffer, \
446 .dcache_memory_in_use = false \
447}
448
449#endif
450
451#if USE_DSHOT_TIM1 // Servo A1, A2, A3, A4 on TIM1 only activated if needed
452
453#define DSHOT_SERVO_5 5
454#define DSHOT_SERVO_5_GPIO PAL_PORT(LINE_SRVA1)
455#define DSHOT_SERVO_5_PIN PAL_PAD(LINE_SRVA1)
456#define DSHOT_SERVO_5_AF AF_SRVA1
457#define DSHOT_SERVO_5_DRIVER CONCAT_BOARD_PARAM(DSHOTD, SRVA1_TIM)
458#define DSHOT_SERVO_5_CHANNEL SRVA1_TIM_CH
459
460#define DSHOT_SERVO_6 6
461#define DSHOT_SERVO_6_GPIO PAL_PORT(LINE_SRVA2)
462#define DSHOT_SERVO_6_PIN PAL_PAD(LINE_SRVA2)
463#define DSHOT_SERVO_6_AF AF_SRVA2
464#define DSHOT_SERVO_6_DRIVER CONCAT_BOARD_PARAM(DSHOTD, SRVA2_TIM)
465#define DSHOT_SERVO_6_CHANNEL SRVA2_TIM_CH
466
467#define DSHOT_SERVO_7 7
468#define DSHOT_SERVO_7_GPIO PAL_PORT(LINE_SRVA3)
469#define DSHOT_SERVO_7_PIN PAL_PAD(LINE_SRVA3)
470#define DSHOT_SERVO_7_AF AF_SRVA3
471#define DSHOT_SERVO_7_DRIVER CONCAT_BOARD_PARAM(DSHOTD, SRVA3_TIM)
472#define DSHOT_SERVO_7_CHANNEL SRVA3_TIM_CH
473
474#define DSHOT_SERVO_8 8
475#define DSHOT_SERVO_8_GPIO PAL_PORT(LINE_SRVA4)
476#define DSHOT_SERVO_8_PIN PAL_PAD(LINE_SRVA4)
477#define DSHOT_SERVO_8_AF AF_SRVA4
478#define DSHOT_SERVO_8_DRIVER CONCAT_BOARD_PARAM(DSHOTD, SRVA4_TIM)
479#define DSHOT_SERVO_8_CHANNEL SRVA4_TIM_CH
480
481#define DSHOT_CONF_TIM1 1
482#define DSHOT_CONF1_DEF { \
483 .dma_stream = STM32_PWM1_UP_DMA_STREAM, \
484 .dma_channel = STM32_PWM1_UP_DMA_CHANNEL, \
485 .pwmp = &PWMD1, \
486 .tlm_sd = DSHOT_TIM1_TELEMETRY_DEV, \
487 .dma_buf = &dshot1DmaBuffer, \
488 .dcache_memory_in_use = false \
489}
490
491#endif
492
496#define UART2_GPIO_PORT_TX PAL_PORT(LINE_UART2_TX)
497#define UART2_GPIO_TX PAL_PAD(LINE_UART2_TX)
498#define UART2_GPIO_PORT_RX PAL_PORT(LINE_UART2_RX)
499#define UART2_GPIO_RX PAL_PAD(LINE_UART2_RX)
500#define UART2_GPIO_AF AF_UART2_TX
501#ifndef UART2_HW_FLOW_CONTROL
502#define UART2_HW_FLOW_CONTROL FALSE
503#endif
504
510#define UART3_GPIO_PORT_TX PAL_PORT(LINE_UART3_TX)
511#define UART3_GPIO_TX PAL_PAD(LINE_UART3_TX)
512#define UART3_GPIO_PORT_RX PAL_PORT(LINE_UART3_RX)
513#define UART3_GPIO_RX PAL_PAD(LINE_UART3_RX)
514#define UART3_GPIO_AF AF_UART3_TX
515
516#define UART7_GPIO_PORT_TX PAL_PORT(LINE_UART7_TX)
517#define UART7_GPIO_TX PAL_PAD(LINE_UART7_TX)
518#define UART7_GPIO_PORT_RX PAL_PORT(LINE_UART7_RX)
519#define UART7_GPIO_RX PAL_PAD(LINE_UART7_RX)
520#define UART7_GPIO_AF AF_UART7_TX
521
526#define UART4_GPIO_PORT_TX PAL_PORT(LINE_AUX_A1)
527#define UART4_GPIO_TX PAL_PAD(LINE_AUX_A1)
528#define UART4_GPIO_PORT_RX PAL_PORT(LINE_AUX_A2)
529#define UART4_GPIO_RX PAL_PAD(LINE_AUX_A2)
530#define UART4_GPIO_AF AUX_A1_UART_AF
531
536#define UART5_GPIO_PORT_RX PAL_PORT(LINE_DSHOT_RX)
537#define UART5_GPIO_RX PAL_PAD(LINE_DSHOT_RX)
538#define UART5_GPIO_AF AF_DSHOT_RX
539
552// In case, do dynamic config of UARTs
553#ifndef USE_UART8_RX
554#define USE_UART8_RX TRUE
555#endif
556#ifndef USE_UART8_TX // may be used in half duplex mode
557#define USE_UART8_TX FALSE
558#endif
559// Tx and Rx are configured on the same pin, only one of them should be used
560#define UART8_GPIO_PORT_TX PAL_PORT(LINE_RC1)
561#define UART8_GPIO_TX PAL_PAD(LINE_RC1)
562#define UART8_GPIO_PORT_RX PAL_PORT(LINE_RC1)
563#define UART8_GPIO_RX PAL_PAD(LINE_RC1)
564#define UART8_GPIO_AF RC1_UART_AF
565
566#ifndef USE_UART6_RX
567#define USE_UART6_RX FALSE
568#endif
569#ifndef USE_UART6_TX
570#define USE_UART6_TX TRUE
571#endif
572// Tx and Rx are configured on the same pin, only one of them should be used
573#define UART6_GPIO_PORT_TX PAL_PORT(LINE_RC2)
574#define UART6_GPIO_TX PAL_PAD(LINE_RC2)
575#define UART6_GPIO_PORT_RX PAL_PORT(LINE_RC2)
576#define UART6_GPIO_RX PAL_PAD(LINE_RC2)
577#define UART6_GPIO_AF RC2_USART_AF
578
579/* The line that is pulled low at power up to initiate the bind process
580 * PB1: AUXb4
581 */
582#define SPEKTRUM_BIND_PIN PAL_PORT(LINE_AUX_B4)
583#define SPEKTRUM_BIND_PIN_PORT PAL_PAD(LINE_AUX_B4)
584
585// no wait with chibios as the RTC oscillator takes longer to stabilize
586#define SPEKTRUM_BIND_WAIT 30000
587
593#define RC_PPM_TICKS_PER_USEC 6
594#define PPM_TIMER_FREQUENCY 6000000
595#define PPM_CHANNEL CONCAT_BOARD_PARAM(ICU_CHANNEL_, RC2_TIM_CH)
596#define PPM_TIMER CONCAT_BOARD_PARAM(ICUD, RC2_TIM)
597
598/*
599 * PWM input
600 */
601// PWM_INPUT 1 on PA0 (AUXa1)
602#define PWM_INPUT1_ICU ICUD2
603#define PWM_INPUT1_CHANNEL ICU_CHANNEL_1
604#define PWM_INPUT1_GPIO_PORT PAL_PORT(LINE_AUX_A1)
605#define PWM_INPUT1_GPIO_PIN PAL_PAD(LINE_AUX_A1)
606#define PWM_INPUT1_GPIO_AF GPIO_AF1
607
608// PWM_INPUT 2 on PA1 (AUXa2)
609#define PWM_INPUT2_ICU ICUD5
610#define PWM_INPUT2_CHANNEL ICU_CHANNEL_2
611#define PWM_INPUT2_GPIO_PORT PAL_PORT(LINE_AUX_A2)
612#define PWM_INPUT2_GPIO_PIN PAL_PAD(LINE_AUX_A2)
613#define PWM_INPUT2_GPIO_AF GPIO_AF2
614
618// Digital noise filter: 0 disabled, [0x1 - 0xF] enable up to n t_I2CCLK
619#define STM32_CR1_DNF(n) ((n & 0x0f) << 8)
620// Timing register
621#define I2C_FAST_400KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR (STM32_TIMINGR_PRESC(0U) | \
622 STM32_TIMINGR_SCLDEL(10U) | STM32_TIMINGR_SDADEL(0U) | \
623 STM32_TIMINGR_SCLH(34U) | STM32_TIMINGR_SCLL(86U))
624#define I2C_STD_100KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR (STM32_TIMINGR_PRESC(1U) | \
625 STM32_TIMINGR_SCLDEL(9U) | STM32_TIMINGR_SDADEL(0U) | \
626 STM32_TIMINGR_SCLH(105U) | STM32_TIMINGR_SCLL(153U))
627
628
629// Internal I2C (baro, magneto)
630
631#ifndef I2C4_CLOCK_SPEED
632#define I2C4_CLOCK_SPEED 400000
633#endif
634
635#if I2C4_CLOCK_SPEED == 400000
636#define I2C4_CFG_DEF { \
637 .timingr = I2C_FAST_400KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR, \
638 .cr1 = STM32_CR1_DNF(0), \
639 .cr2 = 0 \
640}
641#elif I2C4_CLOCK_SPEED == 100000
642#define I2C4_CFG_DEF { \
643 .timingr = I2C_STD_100KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR, \
644 .cr1 = STM32_CR1_DNF(0), \
645 .cr2 = 0 \
646}
647#else
648#error "Unknown I2C4 clock speed"
649#endif
650
651// External I2C
652
653#ifndef I2C2_CLOCK_SPEED
654#define I2C2_CLOCK_SPEED 400000
655#endif
656
657#if I2C2_CLOCK_SPEED == 400000
658#define I2C2_CFG_DEF { \
659 .timingr = I2C_FAST_400KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR, \
660 .cr1 = STM32_CR1_DNF(0), \
661 .cr2 = 0 \
662}
663#elif I2C2_CLOCK_SPEED == 100000
664#define I2C2_CFG_DEF { \
665 .timingr = I2C_STD_100KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR, \
666 .cr1 = STM32_CR1_DNF(0), \
667 .cr2 = 0 \
668}
669#else
670#error "Unknown I2C2 clock speed"
671#endif
672
677// Internal SPI (IMU)
678#define SPI4_GPIO_AF AF_SPI4_INTERNAL_CLK
679#define SPI4_GPIO_PORT_MISO PAL_PORT(LINE_SPI4_INTERNAL_MISO)
680#define SPI4_GPIO_MISO PAL_PAD(LINE_SPI4_INTERNAL_MISO)
681#define SPI4_GPIO_PORT_MOSI PAL_PORT(LINE_SPI4_INTERNAL_MOSI)
682#define SPI4_GPIO_MOSI PAL_PAD(LINE_SPI4_INTERNAL_MOSI)
683#define SPI4_GPIO_PORT_SCK PAL_PORT(LINE_SPI4_INTERNAL_CLK)
684#define SPI4_GPIO_SCK PAL_PAD(LINE_SPI4_INTERNAL_CLK)
685
686// External SPI
687#define SPI2_GPIO_AF AF_SPI2_EXTERNAL_CLK
688#define SPI2_GPIO_PORT_MISO PAL_PORT(LINE_SPI2_EXTERNAL_MISO)
689#define SPI2_GPIO_MISO PAL_PAD(LINE_SPI2_EXTERNAL_MISO)
690#define SPI2_GPIO_PORT_MOSI PAL_PORT(LINE_SPI2_EXTERNAL_MOSI)
691#define SPI2_GPIO_MOSI PAL_PAD(LINE_SPI2_EXTERNAL_MOSI)
692#define SPI2_GPIO_PORT_SCK PAL_PORT(LINE_SPI2_EXTERNAL_CLK)
693#define SPI2_GPIO_SCK PAL_PAD(LINE_SPI2_EXTERNAL_CLK)
694
695// SLAVE0 on SPI connector (NSS possible)
696#define SPI_SELECT_SLAVE0_PORT PAL_PORT(LINE_SPI2_EXTERNAL_CS)
697#define SPI_SELECT_SLAVE0_PIN PAL_PAD(LINE_SPI2_EXTERNAL_CS)
698// SLAVE1 on AUXb1
699#define SPI_SELECT_SLAVE1_PORT PAL_PORT(LINE_AUX_B1)
700#define SPI_SELECT_SLAVE1_PIN PAL_PAD(LINE_AUX_B1)
701// SLAVE2 on AUXb2
702#define SPI_SELECT_SLAVE2_PORT PAL_PORT(LINE_AUX_B2)
703#define SPI_SELECT_SLAVE2_PIN PAL_PAD(LINE_AUX_B2)
704// SLAVE3 on AUXb3
705#define SPI_SELECT_SLAVE3_PORT PAL_PORT(LINE_AUX_B3)
706#define SPI_SELECT_SLAVE3_PIN PAL_PAD(LINE_AUX_B3)
707// SLAVE4 on AUXb4
708#define SPI_SELECT_SLAVE4_PORT PAL_PORT(LINE_AUX_B4)
709#define SPI_SELECT_SLAVE4_PIN PAL_PAD(LINE_AUX_B4)
710// SLAVE5 on PE4 (internal IMU)
711#define SPI_SELECT_SLAVE5_PORT PAL_PORT(LINE_SPI4_INTERNAL_CS)
712#define SPI_SELECT_SLAVE5_PIN PAL_PAD(LINE_SPI4_INTERNAL_CS)
713
720#ifndef USE_BARO_BOARD
721#define USE_BARO_BOARD 0
722#endif
723
727#define SDIO_D0_PORT PAL_PORT(LINE_SDMMC1_D0)
728#define SDIO_D0_PIN PAL_PAD(LINE_SDMMC1_D0)
729#define SDIO_D1_PORT PAL_PORT(LINE_SDMMC1_D1)
730#define SDIO_D1_PIN PAL_PAD(LINE_SDMMC1_D1)
731#define SDIO_D2_PORT PAL_PORT(LINE_SDMMC1_D2)
732#define SDIO_D2_PIN PAL_PAD(LINE_SDMMC1_D2)
733#define SDIO_D3_PORT PAL_PORT(LINE_SDMMC1_D3)
734#define SDIO_D3_PIN PAL_PAD(LINE_SDMMC1_D3)
735#define SDIO_CK_PORT PAL_PORT(LINE_SDMMC1_CK)
736#define SDIO_CK_PIN PAL_PAD(LINE_SDMMC1_CK)
737#define SDIO_CMD_PORT PAL_PORT(LINE_SDMMC1_CMD)
738#define SDIO_CMD_PIN PAL_PAD(LINE_SDMMC1_CMD)
739#define SDIO_AF AF_SDMMC1_CK
740// bat monitoring for file closing
741#define SDLOG_BAT_ADC CONCAT_BOARD_PARAM(ADCD, VBAT_MEAS_ADC)
742#define SDLOG_BAT_CHAN CONCAT_BOARD_PARAM(ADC_CHANNEL_IN, VBAT_MEAS_ADC_IN)
743// usb led status
744#define SDLOG_USB_LED 4
745#define SDLOG_USB_VBUS_PORT PAL_PORT(LINE_USB_VBUS)
746#define SDLOG_USB_VBUS_PIN PAL_PAD(LINE_USB_VBUS)
747
748
749/*
750 * Actuators for fixedwing
751 */
752 /* Default actuators driver */
753#define DEFAULT_ACTUATORS "modules/actuators/actuators_pwm.h"
754#define ActuatorDefaultSet(_x,_y) ActuatorPwmSet(_x,_y)
755#define ActuatorsDefaultInit() ActuatorsPwmInit()
756#define ActuatorsDefaultCommit() ActuatorsPwmCommit()
757
761#define WS2812D1_GPIO PAL_PORT(LINE_AUX_A1)
762#define WS2812D1_PIN PAL_PAD(LINE_AUX_A1)
763#define WS2812D1_AF 2
764#define WS2812D1_CFG_DEF { \
765 .dma_stream = STM32_PWM5_UP_DMA_STREAM, \
766 .dma_channel = STM32_PWM5_UP_DMA_CHANNEL, \
767 .dma_priority = STM32_PWM5_UP_DMA_PRIORITY, \
768 .pwm_channel = 0, \
769 .pwmp = &PWMD5 \
770}
771
772#endif /* CONFIG_TAWAKI_1_00_H */
773