Paparazzi UAS  v5.18.0_stable
Paparazzi is a free software Unmanned Aircraft System.
cjmcu.h
Go to the documentation of this file.
1 #ifndef CONFIG_CJMCU_H
2 #define CONFIG_CJMCU_H
3 
4 #define BOARD_CJMCU
5 
6 /* CJMCU has a 8MHz external clock and 72MHz internal. */
7 #define EXT_CLK 8000000
8 #define AHB_CLK 72000000
9 
10 /*
11  * Onboard LEDs
12  */
13 
14 /* green */
15 #ifndef USE_LED_1
16 #define USE_LED_1 1
17 #endif
18 #define LED_1_GPIO GPIOC
19 #define LED_1_GPIO_PIN GPIO13
20 #define LED_1_GPIO_ON gpio_clear
21 #define LED_1_GPIO_OFF gpio_set
22 #define LED_1_AFIO_REMAP ((void)0)
23 
24 /* red */
25 #ifndef USE_LED_2
26 #define USE_LED_2 1
27 #endif
28 #define LED_2_GPIO GPIOC
29 #define LED_2_GPIO_PIN GPIO14
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 /* blue */
35 #ifndef USE_LED_3
36 #define USE_LED_3 1
37 #endif
38 #define LED_3_GPIO GPIOC
39 #define LED_3_GPIO_PIN GPIO15
40 #define LED_3_GPIO_ON gpio_clear
41 #define LED_3_GPIO_OFF gpio_set
42 #define LED_3_AFIO_REMAP ((void)0)
43 
44 
45 
46 /* Default actuators driver */
47 #define DEFAULT_ACTUATORS "subsystems/actuators/actuators_pwm.h"
48 #define ActuatorDefaultSet(_x,_y) ActuatorPwmSet(_x,_y)
49 #define ActuatorsDefaultInit() ActuatorsPwmInit()
50 #define ActuatorsDefaultCommit() ActuatorsPwmCommit()
51 
52 
53 /*
54  * ADC
55  */
56 
57 // Internal ADC for battery on PA2 enabled by default
58 #ifndef USE_ADC_1
59 #define USE_ADC_1 1
60 #endif
61 #if USE_ADC_1
62 #define AD1_1_CHANNEL 2
63 #define ADC_1 AD1_1
64 #define ADC_1_GPIO_PORT GPIOA
65 #define ADC_1_GPIO_PIN GPIO2
66 #endif
67 
68 /* allow to define ADC_CHANNEL_VSUPPLY in the airframe file*/
69 #ifndef ADC_CHANNEL_VSUPPLY
70 #define ADC_CHANNEL_VSUPPLY ADC_1
71 #endif
72 
73 /* 10k/2k resistor divider, 6 * 3.3V / 4096 */
74 #define DefaultVoltageOfAdc(adc) (0.0049*adc)
75 //#define DefaultVoltageOfAdc(adc) (4)
76 
77 /*
78  * UART pin configuration
79  *
80  * sets on which pins the UARTs are connected
81  */
82 /* DIAG port */
83 #define UART1_GPIO_AF 0
84 #define UART1_GPIO_PORT_RX GPIO_BANK_USART1_RX
85 #define UART1_GPIO_RX GPIO_USART1_RX
86 #define UART1_GPIO_PORT_TX GPIO_BANK_USART1_TX
87 #define UART1_GPIO_TX GPIO_USART1_TX
88 
89 /* GPS */
90 #define UART3_GPIO_AF 0
91 #define UART3_GPIO_PORT_RX GPIO_BANK_USART3_RX
92 #define UART3_GPIO_RX GPIO_USART3_RX
93 #define UART3_GPIO_PORT_TX GPIO_BANK_USART3_TX
94 #define UART3_GPIO_TX GPIO_USART3_TX
95 
96 /* LED1 & LED2 */
97 /*
98 #define UART3_GPIO_AF AFIO_MAPR_USART3_REMAP_PARTIAL_REMAP
99 #define UART3_GPIO_PORT_RX GPIO_BANK_USART3_PR_RX
100 #define UART3_GPIO_RX GPIO_USART3_PR_RX
101 #define UART3_GPIO_PORT_TX GPIO_BANK_USART3_PR_TX
102 #define UART3_GPIO_TX GPIO_USART3_PR_TX
103 */
104 
105 /*
106  * Spektrum (none)
107  */
108 
109 /* PPM
110  */
111 
112 /*
113  * Default is PPM config 1, input on PA0
114  */
115 
116 #ifndef PPM_CONFIG
117 #define PPM_CONFIG 1
118 #endif
119 
120 
121 #if PPM_CONFIG == 1
122 /* input on PA0 */
123 #define USE_PPM_TIM2 1
124 #define PPM_CHANNEL TIM_IC1
125 #define PPM_TIMER_INPUT TIM_IC_IN_TI1
126 #define PPM_IRQ NVIC_TIM2_IRQ
127 // Capture/Compare InteruptEnable and InterruptFlag
128 #define PPM_CC_IE TIM_DIER_CC1IE
129 #define PPM_CC_IF TIM_SR_CC1IF
130 #define PPM_GPIO_PORT GPIOA
131 #define PPM_GPIO_PIN GPIO0
132 #define PPM_GPIO_AF 0
133 
134 // Move default ADC timer
135 #if USE_AD_TIM2
136 #undef USE_AD_TIM2
137 #endif
138 #define USE_AD_TIM1 1
139 
140 #elif PPM_CONFIG == 2
141 /* input on PA1 */
142 #define USE_PPM_TIM2 1
143 #define PPM_CHANNEL TIM_IC2
144 #define PPM_TIMER_INPUT TIM_IC_IN_TI2
145 #define PPM_IRQ NVIC_TIM2_IRQ
146 // Capture/Compare InteruptEnable and InterruptFlag
147 #define PPM_CC_IE TIM_DIER_CC2IE
148 #define PPM_CC_IF TIM_SR_CC2IF
149 #define PPM_GPIO_PORT GPIOA
150 #define PPM_GPIO_PIN GPIO1
151 #define PPM_GPIO_AF 0
152 
153 // Move default ADC timer
154 #if USE_AD_TIM2
155 #undef USE_AD_TIM2
156 #endif
157 #define USE_AD_TIM1 1
158 
159 #elif PPM_CONFIG == 3
160 /* input on PA3 */
161 #define USE_PPM_TIM2 1
162 #define PPM_CHANNEL TIM_IC4
163 #define PPM_TIMER_INPUT TIM_IC_IN_TI2
164 #define PPM_IRQ NVIC_TIM2_IRQ
165 // Capture/Compare InteruptEnable and InterruptFlag
166 #define PPM_CC_IE TIM_DIER_CC4IE
167 #define PPM_CC_IF TIM_SR_CC4IF
168 #define PPM_GPIO_PORT GPIOA
169 #define PPM_GPIO_PIN GPIO3
170 #define PPM_GPIO_AF 0
171 
172 // Move default ADC timer
173 #if USE_AD_TIM2
174 #undef USE_AD_TIM2
175 #endif
176 #define USE_AD_TIM1 1
177 
178 #else
179 #error "Unknown PPM config"
180 
181 #endif // PPM_CONFIG
182 
183 /*
184  * I2C
185  *
186  */
187 #define I2C1_GPIO_PORT GPIOB
188 #define I2C1_GPIO_SCL GPIO6
189 #define I2C1_GPIO_SDA GPIO7
190 
191 /* GPS TX & RX */
192 #define I2C2_GPIO_PORT GPIOB
193 #define I2C2_GPIO_SCL GPIO10
194 #define I2C2_GPIO_SDA GPIO11
195 
196 /*
197  * PWM
198  *
199  */
200 #define PWM_USE_TIM4 1
201 #define PWM_USE_TIM3 1
202 
203 #define USE_PWM1 1
204 #define USE_PWM2 1
205 #define USE_PWM3 1
206 #define USE_PWM4 1
207 
208 /* PWM_SERVO_x is the index of the servo in the actuators_pwm_values array */
209 #if USE_PWM1
210 #define PWM_SERVO_1 0
211 #define PWM_SERVO_1_TIMER TIM4
212 #define PWM_SERVO_1_GPIO GPIOB
213 #define PWM_SERVO_1_PIN GPIO8
214 #define PWM_SERVO_1_AF 0
215 #define PWM_SERVO_1_OC TIM_OC3
216 #define PWM_SERVO_1_OC_BIT (1<<2)
217 #else
218 #define PWM_SERVO_1_OC_BIT 0
219 #endif
220 
221 #if USE_PWM2
222 #define PWM_SERVO_2 1
223 #define PWM_SERVO_2_TIMER TIM4
224 #define PWM_SERVO_2_GPIO GPIOB
225 #define PWM_SERVO_2_PIN GPIO9
226 #define PWM_SERVO_2_AF 0
227 #define PWM_SERVO_2_OC TIM_OC4
228 #define PWM_SERVO_2_OC_BIT (1<<3)
229 #else
230 #define PWM_SERVO_2_OC_BIT 0
231 #endif
232 
233 #if USE_PWM3
234 #define PWM_SERVO_3 2
235 #define PWM_SERVO_3_TIMER TIM3
236 #define PWM_SERVO_3_GPIO GPIOB
237 #define PWM_SERVO_3_PIN GPIO0
238 #define PWM_SERVO_3_AF 0
239 #define PWM_SERVO_3_OC TIM_OC3
240 #define PWM_SERVO_3_OC_BIT (1<<2)
241 #else
242 #define PWM_SERVO_3_OC_BIT 0
243 #endif
244 
245 #if USE_PWM4
246 #define PWM_SERVO_4 3
247 #define PWM_SERVO_4_TIMER TIM3
248 #define PWM_SERVO_4_GPIO GPIOB
249 #define PWM_SERVO_4_PIN GPIO1
250 #define PWM_SERVO_4_AF 0
251 #define PWM_SERVO_4_OC TIM_OC4
252 #define PWM_SERVO_4_OC_BIT (1<<3)
253 #else
254 #define PWM_SERVO_4_OC_BIT 0
255 #endif
256 
257 
258 
259 /* servos 1-2 on TIM4 */
260 #define PWM_TIM4_CHAN_MASK (PWM_SERVO_1_OC_BIT|PWM_SERVO_2_OC_BIT)
261 /* servos 3-4 on TIM3 */
262 #define PWM_TIM3_CHAN_MASK (PWM_SERVO_3_OC_BIT|PWM_SERVO_4_OC_BIT)
263 
264 
265 #endif /* CONFIG_CJMCU_H */