Paparazzi UAS
v5.14.0_stable-0-g3f680d1
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
cc3d.h
Go to the documentation of this file.
1
#ifndef CONFIG_CC3D_H
2
#define CONFIG_CC3D_H
3
4
/* CC3D has a 8MHz external clock and 72MHz internal. */
5
#define EXT_CLK 8000000
6
#define AHB_CLK 72000000
7
8
/*
9
* Onboard LEDs
10
*/
11
12
/* blue status led, on PB3 */
13
#ifndef USE_LED_1
14
#define USE_LED_1 1
15
#endif
16
#define LED_1_GPIO GPIOB
17
#define LED_1_GPIO_PIN GPIO3
18
#define LED_1_GPIO_ON gpio_clear
19
#define LED_1_GPIO_OFF gpio_set
20
#define LED_1_AFIO_REMAP { \
21
rcc_periph_clock_enable(RCC_AFIO); \
22
AFIO_MAPR |= AFIO_MAPR_SWJ_CFG_JTAG_OFF_SW_ON; \
23
}
24
25
26
/* SPI slave mapping */
27
/* MPU600 on spi1 */
28
#define SPI_SELECT_SLAVE0_PORT GPIOA
29
#define SPI_SELECT_SLAVE0_PIN GPIO4
30
31
/* 16Mbit flash on spi2 */
32
#define SPI_SELECT_SLAVE1_PORT GPIOB
33
#define SPI_SELECT_SLAVE1_PIN GPIO12
34
35
/*
36
* UART pin configuration
37
*
38
* sets on which pins the UARTs are connected
39
*/
40
/* UART1 on main port */
41
#define UART1_GPIO_AF 0
42
#define UART1_GPIO_PORT_RX GPIO_BANK_USART1_RX
43
#define UART1_GPIO_RX GPIO_USART1_RX
44
#define UART1_GPIO_PORT_TX GPIO_BANK_USART1_TX
45
#define UART1_GPIO_TX GPIO_USART1_TX
46
47
/* UART3 on Flexi Port */
48
#define UART3_GPIO_AF AFIO_MAPR_USART3_REMAP_PARTIAL_REMAP
49
#define UART3_GPIO_PORT_RX GPIO_BANK_USART3_PR_RX
50
#define UART3_GPIO_RX GPIO_USART3_PR_RX
51
#define UART3_GPIO_PORT_TX GPIO_BANK_USART3_PR_TX
52
#define UART3_GPIO_TX GPIO_USART3_PR_TX
53
54
/*
55
* Spektrum
56
*/
57
/* The line that is pulled low at power up to initiate the bind process */
58
/* set to ppm/servo6 input pin on RC connector for now */
59
#define SPEKTRUM_BIND_PIN GPIO1
60
#define SPEKTRUM_BIND_PIN_PORT GPIOA
61
62
#define SPEKTRUM_UART1_RCC RCC_USART1
63
#define SPEKTRUM_UART1_BANK GPIO_BANK_USART1_RX
64
#define SPEKTRUM_UART1_PIN GPIO_USART1_RX
65
#define SPEKTRUM_UART1_AF 0
66
#define SPEKTRUM_UART1_IRQ NVIC_USART1_IRQ
67
#define SPEKTRUM_UART1_ISR usart1_isr
68
#define SPEKTRUM_UART1_DEV USART1
69
70
#define SPEKTRUM_UART3_RCC RCC_USART3
71
#define SPEKTRUM_UART3_BANK GPIO_BANK_USART3_PR_RX
72
#define SPEKTRUM_UART3_PIN GPIO_USART3_PR_RX
73
#define SPEKTRUM_UART3_AF AFIO_MAPR_USART3_REMAP_PARTIAL_REMAP
74
#define SPEKTRUM_UART3_IRQ NVIC_USART3_IRQ
75
#define SPEKTRUM_UART3_ISR usart3_isr
76
#define SPEKTRUM_UART3_DEV USART3
77
78
79
/* Pint to set Uart1 RX polarity, on PB2, output high inverts, low doesn't */
80
#define RC_POLARITY_GPIO_PORT GPIOB
81
#define RC_POLARITY_GPIO_PIN GPIO2
82
83
84
/* PPM
85
*
86
* Default is PPM config 2, input on GPIOA1: RC input pin 8 (S6_IN)
87
*/
88
#ifndef PPM_CONFIG
89
#define PPM_CONFIG 2
90
#endif
91
92
#if PPM_CONFIG == 1
93
/* input on PB6 (S1_IN) */
94
#define USE_PPM_TIM4 1
95
#define PPM_CHANNEL TIM_IC1
96
#define PPM_TIMER_INPUT TIM_IC_IN_TI1
97
#define PPM_IRQ NVIC_TIM4_UP_IRQ
98
// Capture/Compare InteruptEnable and InterruptFlag
99
#define PPM_CC_IE TIM_DIER_CC1IE
100
#define PPM_CC_IF TIM_SR_CC1IF
101
#define PPM_GPIO_PORT GPIOB
102
#define PPM_GPIO_PIN GPIO6
103
#define PPM_GPIO_AF 0
104
105
#elif PPM_CONFIG == 2
106
/* input on PA1 (S6_IN) */
107
#define USE_PPM_TIM2 1
108
#define PPM_CHANNEL TIM_IC2
109
#define PPM_TIMER_INPUT TIM_IC_IN_TI2
110
#define PPM_IRQ NVIC_TIM2_IRQ
111
// Capture/Compare InteruptEnable and InterruptFlag
112
#define PPM_CC_IE TIM_DIER_CC2IE
113
#define PPM_CC_IF TIM_SR_CC2IF
114
#define PPM_GPIO_PORT GPIOA
115
#define PPM_GPIO_PIN GPIO1
116
#define PPM_GPIO_AF 0
117
118
#else
119
#error "Unknown PPM config"
120
#endif // PPM_CONFIG
121
122
123
/*
124
* ADC
125
* noting yet, board doesn't seem to have voltage devider for bat measurement
126
*/
127
128
129
/*
130
* I2C
131
*/
132
/* flexi port */
133
#define I2C2_GPIO_PORT GPIOB
134
#define I2C2_GPIO_SCL GPIO10
135
#define I2C2_GPIO_SDA GPIO11
136
137
138
/*
139
* PWM
140
* only servos 1-4 enabled for now
141
*/
142
/* servos 1-3 */
143
#define PWM_USE_TIM4 1
144
#define USE_PWM1 1
145
#define USE_PWM2 1
146
#define USE_PWM3 1
147
/* servo 4 */
148
#define PWM_USE_TIM1 1
149
#define USE_PWM4 1
150
151
/* servo 5 */
152
#define PWM_USE_TIM3 0
153
#define USE_PWM5 0
154
/* servo 6 */
155
#define PWM_USE_TIM2 0
156
#define USE_PWM6 0
157
158
#define ACTUATORS_PWM_NB 4
159
160
// Servo output numbering on silkscreen starts with 1
161
162
// PWM_SERVO_x is the index of the servo in the actuators_pwm_values array
163
#if USE_PWM1
164
#define PWM_SERVO_1 0
165
#define PWM_SERVO_1_TIMER TIM4
166
#define PWM_SERVO_1_GPIO GPIOB
167
#define PWM_SERVO_1_PIN GPIO9
168
#define PWM_SERVO_1_AF 0
169
#define PWM_SERVO_1_OC TIM_OC4
170
#define PWM_SERVO_1_OC_BIT (1<<3)
171
#else
172
#define PWM_SERVO_1_OC_BIT 0
173
#endif
174
175
#if USE_PWM2
176
#define PWM_SERVO_2 1
177
#define PWM_SERVO_2_TIMER TIM4
178
#define PWM_SERVO_2_GPIO GPIOB
179
#define PWM_SERVO_2_PIN GPIO8
180
#define PWM_SERVO_2_AF 0
181
#define PWM_SERVO_2_OC TIM_OC3
182
#define PWM_SERVO_2_OC_BIT (1<<2)
183
#else
184
#define PWM_SERVO_2_OC_BIT 0
185
#endif
186
187
#if USE_PWM3
188
#define PWM_SERVO_3 2
189
#define PWM_SERVO_3_TIMER TIM4
190
#define PWM_SERVO_3_GPIO GPIOB
191
#define PWM_SERVO_3_PIN GPIO7
192
#define PWM_SERVO_3_AF 0
193
#define PWM_SERVO_3_OC TIM_OC2
194
#define PWM_SERVO_3_OC_BIT (1<<1)
195
#else
196
#define PWM_SERVO_3_OC_BIT 0
197
#endif
198
199
#if USE_PWM4
200
#define PWM_SERVO_4 3
201
#define PWM_SERVO_4_TIMER TIM1
202
#define PWM_SERVO_4_GPIO GPIOA
203
#define PWM_SERVO_4_PIN GPIO1
204
#define PWM_SERVO_4_AF 0
205
#define PWM_SERVO_4_OC TIM_OC1
206
#define PWM_SERVO_4_OC_BIT (1<<0)
207
#else
208
#define PWM_SERVO_4_OC_BIT 0
209
#endif
210
211
#if USE_PWM5
212
#define PWM_SERVO_5 4
213
#define PWM_SERVO_5_TIMER TIM3
214
#define PWM_SERVO_5_GPIO GPIOB
215
#define PWM_SERVO_5_PIN GPIO4
216
#define PWM_SERVO_5_AF 0
217
#define PWM_SERVO_5_OC TIM_OC1
218
#define PWM_SERVO_5_OC_BIT (1<<0)
219
#else
220
#define PWM_SERVO_5_OC_BIT 0
221
#endif
222
223
#if USE_PWM6
224
#define PWM_SERVO_6 5
225
#define PWM_SERVO_6_TIMER TIM2
226
#define PWM_SERVO_6_GPIO GPIOA
227
#define PWM_SERVO_6_PIN GPIO2
228
#define PWM_SERVO_6_AF 0
229
#define PWM_SERVO_6_OC TIM_OC3
230
#define PWM_SERVO_6_OC_BIT (1<<2)
231
#else
232
#define PWM_SERVO_6_OC_BIT 0
233
#endif
234
235
/* servos 1-3 on TIM4 */
236
#define PWM_TIM4_CHAN_MASK (PWM_SERVO_1_OC_BIT|PWM_SERVO_2_OC_BIT|PWM_SERVO_3_OC_BIT)
237
/* servo 4 on TIM1 */
238
#define PWM_TIM1_CHAN_MASK PWM_SERVO_4_OC_BIT
239
/* servo 5 on TIM3 */
240
#define PWM_TIM3_CHAN_MASK PWM_SERVO_5_OC_BIT
241
/* servo 6 on TIM2 */
242
#define PWM_TIM2_CHAN_MASK PWM_SERVO_6_OC_BIT
243
244
245
/* Default actuators driver */
246
#define DEFAULT_ACTUATORS "subsystems/actuators/actuators_pwm.h"
247
#define ActuatorDefaultSet(_x,_y) ActuatorPwmSet(_x,_y)
248
#define ActuatorsDefaultInit() ActuatorsPwmInit()
249
#define ActuatorsDefaultCommit() ActuatorsPwmCommit()
250
251
252
/* simply always return 5V for now */
253
#define DefaultVoltageOfAdc(adc) (50)
254
255
256
#endif
/* CONFIG_CC3D_H */
sw
airborne
boards
cc3d.h
Generated on Sat Feb 9 2019 07:05:37 for Paparazzi UAS by
1.8.8