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
naze32_common.h
Go to the documentation of this file.
1#ifndef CONFIG_NAZE32_COMMON_H
2#define CONFIG_NAZE32_COMMON_H
3
4#define BOARD_NAZE32
5
6/*
7 * Onboard LEDs
8 */
9
10
11/* L0 red status led, on PB4 */
12#ifndef USE_LED_1
13#define USE_LED_1 1
14#endif
15#define LED_1_GPIO GPIOB
16#define LED_1_GPIO_PIN GPIO4
17#define LED_1_GPIO_ON gpio_clear
18#define LED_1_GPIO_OFF gpio_set
19#define LED_1_AFIO_REMAP { \
20 rcc_periph_clock_enable(RCC_AFIO); \
21 AFIO_MAPR |= AFIO_MAPR_SWJ_CFG_JTAG_OFF_SW_ON; \
22 }
23
24/* L1 green status led, on PB3 */
25#ifndef USE_LED_2
26#define USE_LED_2 1
27#endif
28#define LED_2_GPIO GPIOB
29#define LED_2_GPIO_PIN GPIO3
30#define LED_2_GPIO_ON gpio_clear
31#define LED_2_GPIO_OFF gpio_set
32#define LED_2_AFIO_REMAP ((void)0)
33
34/*
35 * UART pin configuration
36 *
37 * sets on which pins the UARTs are connected
38 */
39/* UART1 on main port, TX (PA9), RX (PA10) */
40#define UART1_GPIO_AF 0
41#define UART1_GPIO_PORT_RX GPIO_BANK_USART1_RX
42#define UART1_GPIO_RX GPIO_USART1_RX
43#define UART1_GPIO_PORT_TX GPIO_BANK_USART1_TX
44#define UART1_GPIO_TX GPIO_USART1_TX
45
46/* UART2 on RC I/O, TX (PA2) pin 5/id "3", RX (PA3) pin 6/id "4" */
47#define UART2_GPIO_AF 0
48#define UART2_GPIO_PORT_RX GPIO_BANK_USART2_RX
49#define UART2_GPIO_RX GPIO_USART2_RX
50#define UART2_GPIO_PORT_TX GPIO_BANK_USART2_TX
51#define UART2_GPIO_TX GPIO_USART2_TX
52
53/*
54 * Spektrum
55 */
56/* The line that is pulled low at power up to initiate the bind process */
57/* set to ppm/servo6 input pin on RC connector for now */
58#define SPEKTRUM_BIND_PIN GPIO1
59#define SPEKTRUM_BIND_PIN_PORT GPIOA
60
61#define SPEKTRUM_UART1_RCC RCC_USART1
62#define SPEKTRUM_UART1_BANK GPIO_BANK_USART1_RX
63#define SPEKTRUM_UART1_PIN GPIO_USART1_RX
64#define SPEKTRUM_UART1_AF 0
65#define SPEKTRUM_UART1_IRQ NVIC_USART1_IRQ
66#define SPEKTRUM_UART1_ISR usart1_isr
67#define SPEKTRUM_UART1_DEV USART1
68
69#define SPEKTRUM_UART2_RCC RCC_USART2
70#define SPEKTRUM_UART2_BANK GPIO_BANK_USART2_RX
71#define SPEKTRUM_UART2_PIN GPIO_USART2_RX
72#define SPEKTRUM_UART2_AF 0
73#define SPEKTRUM_UART2_IRQ NVIC_USART2_IRQ
74#define SPEKTRUM_UART2_ISR usart2_isr
75#define SPEKTRUM_UART2_DEV USART2
76
77
78
79/* PPM
80 *
81 * Default: PPM_CONFIG 1: servos 3-6, input on PA0: RC I/O rx_ppm pin 3/id "1"
82 * PPM_CONFIG 2: servos 1-6, input on PA7: RC I/O unused pin 8/id "6"
83 */
84
85#ifndef PPM_CONFIG
86#define PPM_CONFIG 1
87#endif
88
89#if PPM_CONFIG == 1
90/* input on PA0 (ppm_in), TIM2 CH1 */
91#define USE_PPM_TIM2 1
92#define PPM_CHANNEL TIM_IC1
93#define PPM_TIMER_INPUT TIM_IC_IN_TI1
94#define PPM_IRQ NVIC_TIM2_IRQ
95// Capture/Compare InteruptEnable and InterruptFlag
96#define PPM_CC_IE TIM_DIER_CC1IE
97#define PPM_CC_IF TIM_SR_CC1IF
98#define PPM_GPIO_PORT GPIOA
99#define PPM_GPIO_PIN GPIO0
100#define PPM_GPIO_AF 0
101
102// Move default ADC timer
103#if USE_AD_TIM2
104#undef USE_AD_TIM2
105#endif
106#define USE_AD_TIM1 1
107
108#elif PPM_CONFIG == 2
109/* input on PA7 (unused), TIM3 CH2 */
110#define USE_PPM_TIM3 1
111#define PPM_CHANNEL TIM_IC2
112#define PPM_TIMER_INPUT TIM_IC_IN_TI2
113#define PPM_IRQ NVIC_TIM3_IRQ
114// Capture/Compare InteruptEnable and InterruptFlag
115#define PPM_CC_IE TIM_DIER_CC2IE
116#define PPM_CC_IF TIM_SR_CC2IF
117#define PPM_GPIO_PORT GPIOA
118#define PPM_GPIO_PIN GPIO7
119#define PPM_GPIO_AF 0
120
121// Move default ADC timer
122#if USE_AD_TIM1
123#undef USE_AD_TIM1
124#endif
125#define USE_AD_TIM2 1
126
127#else
128#error "Unknown PPM config"
129
130#endif // PPM_CONFIG
131
132
133/*
134 * ADC
135 */
136
137// Internal ADC for battery enabled by default
138#ifndef USE_ADC_4
139#define USE_ADC_4 1
140#endif
141#if USE_ADC_4
142#define AD1_4_CHANNEL 4
143#define ADC_4 AD1_4
144#define ADC_4_GPIO_PORT GPIOA
145#define ADC_4_GPIO_PIN GPIO4
146#endif
147
148/* allow to define ADC_CHANNEL_VSUPPLY in the airframe file*/
149#ifndef ADC_CHANNEL_VSUPPLY
150#define ADC_CHANNEL_VSUPPLY ADC_4
151#endif
152
153/* 10k/1k resistor divider, 11 * 3.3V / 4096 */
154#define DefaultVoltageOfAdc(adc) (0.008862*adc)
155
156
157/* by default activate onboard baro */
158#ifndef USE_BARO_BOARD
159#define USE_BARO_BOARD 1
160#endif
161
162/*
163 * I2C
164 */
165/* RC port */
166#define I2C2_GPIO_PORT GPIOB
167#define I2C2_GPIO_SCL GPIO10
168#define I2C2_GPIO_SDA GPIO11
169
170
171/*
172 * PWM
173 *
174 * Servo output numbering on silkscreen starts with '1'
175 *
176 * silk default PPM_CONFIG=2 (PPM_PIN=PA7)
177 *
178 * '1' PA8 - servo1
179 * '2' PA11 - servo2
180 * '3' PB6 servo3 servo3
181 * '4' PB7 servo4 servo4
182 * '5' PB8 servo5 servo5
183 * '6' PB9 servo6 servo6
184 *
185 * PPM_in: PA0 PA7
186 *
187 */
188
189#if PPM_CONFIG == 2
190
191/* use all servos */
192#define ACTUATORS_PWM_NB 6
193#define PWM_USE_TIM1 1
194#define USE_PWM1 1
195#define USE_PWM2 1
196#define PWM_SERVO_1 0
197#define PWM_SERVO_2 1
198#define PWM_SERVO_3 2
199#define PWM_SERVO_4 3
200#define PWM_SERVO_5 4
201#define PWM_SERVO_6 5
202
203#else // PPM_CONFIG == 1
204
205/* servos 1-2 not usable */
206#define ACTUATORS_PWM_NB 4
207/* servos 1-2 not usable */
208#define PWM_USE_TIM1 0
209#define USE_PWM1 0
210#define USE_PWM2 0
211#define PWM_SERVO_3 0
212#define PWM_SERVO_4 1
213#define PWM_SERVO_5 2
214#define PWM_SERVO_6 3
215
216#endif
217
218/* servos 3-6 */
219#define PWM_USE_TIM4 1
220#define USE_PWM3 1
221#define USE_PWM4 1
222#define USE_PWM5 1
223#define USE_PWM6 1
224
225#if USE_PWM1
226#define PWM_SERVO_1_TIMER TIM1
227#define PWM_SERVO_1_GPIO GPIOA
228#define PWM_SERVO_1_PIN GPIO8
229#define PWM_SERVO_1_AF 0
230#define PWM_SERVO_1_OC TIM_OC1
231#define PWM_SERVO_1_OC_BIT (1<<0)
232#else
233#define PWM_SERVO_1_OC_BIT 0
234#endif
235
236#if USE_PWM2
237#define PWM_SERVO_2_TIMER TIM1
238#define PWM_SERVO_2_GPIO GPIOA
239#define PWM_SERVO_2_PIN GPIO11
240#define PWM_SERVO_2_AF 0
241#define PWM_SERVO_2_OC TIM_OC4
242#define PWM_SERVO_2_OC_BIT (1<<3)
243#else
244#define PWM_SERVO_2_OC_BIT 0
245#endif
246
247#if USE_PWM3
248#define PWM_SERVO_3_TIMER TIM4
249#define PWM_SERVO_3_GPIO GPIOB
250#define PWM_SERVO_3_PIN GPIO6
251#define PWM_SERVO_3_AF 0
252#define PWM_SERVO_3_OC TIM_OC1
253#define PWM_SERVO_3_OC_BIT (1<<0)
254#else
255#define PWM_SERVO_3_OC_BIT 0
256#endif
257
258#if USE_PWM4
259#define PWM_SERVO_4_TIMER TIM4
260#define PWM_SERVO_4_GPIO GPIOB
261#define PWM_SERVO_4_PIN GPIO7
262#define PWM_SERVO_4_AF 0
263#define PWM_SERVO_4_OC TIM_OC2
264#define PWM_SERVO_4_OC_BIT (1<<1)
265#else
266#define PWM_SERVO_4_OC_BIT 0
267#endif
268
269#if USE_PWM5
270#define PWM_SERVO_5_TIMER TIM4
271#define PWM_SERVO_5_GPIO GPIOB
272#define PWM_SERVO_5_PIN GPIO8
273#define PWM_SERVO_5_AF 0
274#define PWM_SERVO_5_OC TIM_OC3
275#define PWM_SERVO_5_OC_BIT (1<<2)
276#else
277#define PWM_SERVO_5_OC_BIT 0
278#endif
279
280#if USE_PWM6
281#define PWM_SERVO_6_TIMER TIM4
282#define PWM_SERVO_6_GPIO GPIOB
283#define PWM_SERVO_6_PIN GPIO9
284#define PWM_SERVO_6_AF 0
285#define PWM_SERVO_6_OC TIM_OC4
286#define PWM_SERVO_6_OC_BIT (1<<3)
287#else
288#define PWM_SERVO_6_OC_BIT 0
289#endif
290
291/* servos 1-2 on TIM1 */
292#define PWM_TIM1_CHAN_MASK (PWM_SERVO_1_OC_BIT|PWM_SERVO_2_OC_BIT)
293/* servos 3-6 on TIM4 */
294#define PWM_TIM4_CHAN_MASK (PWM_SERVO_3_OC_BIT|PWM_SERVO_4_OC_BIT|PWM_SERVO_5_OC_BIT|PWM_SERVO_6_OC_BIT)
295
296
297/* Default actuators driver */
298#define DEFAULT_ACTUATORS "modules/actuators/actuators_pwm.h"
299#define ActuatorDefaultSet(_x,_y) ActuatorPwmSet(_x,_y)
300#define ActuatorsDefaultInit() ActuatorsPwmInit()
301#define ActuatorsDefaultCommit() ActuatorsPwmCommit()
302
303
304#endif /* CONFIG_NAZE32_COMMON_H */
305