pimoroni_servo2040/lib.rs
1#![no_std]
2
3pub extern crate rp2040_hal as hal;
4
5#[cfg(feature = "rt")]
6extern crate cortex_m_rt;
7#[cfg(feature = "rt")]
8pub use hal::entry;
9
10/// The linker will place this boot block at the start of our program image. We
11/// need this to help the ROM bootloader get our code up and running.
12#[cfg(feature = "boot2")]
13#[link_section = ".boot2"]
14#[no_mangle]
15#[used]
16pub static BOOT2_FIRMWARE: [u8; 256] = rp2040_boot2::BOOT_LOADER_W25Q080;
17
18pub const NUM_SERVOS: u8 = 18;
19pub const NUM_SENSORS: u8 = 6;
20pub const NUM_LEDS: u8 = 6;
21
22pub const SENSOR_1_ADDR: u8 = 0b_0000;
23pub const SENSOR_2_ADDR: u8 = 0b_0001;
24pub const SENSOR_3_ADDR: u8 = 0b_0010;
25pub const SENSOR_4_ADDR: u8 = 0b_0011;
26pub const SENSOR_5_ADDR: u8 = 0b_0100;
27pub const SENSOR_6_ADDR: u8 = 0b_0101;
28pub const VOLTAGE_SENSE_ADDR: u8 = 0b_0110;
29pub const CURRENT_SENSE_ADDR: u8 = 0b_0111;
30
31pub const VOLTAGE_GAIN: f32 = 0.28058;
32pub const SHUNT_RESISTOR: f32 = 0.003;
33pub const CURRENT_GAIN: u8 = 69;
34pub const CURRENT_OFFSET: f32 = -0.02;
35
36pub use hal::pac;
37
38hal::bsp_pins!(
39 /// GPIO 0 supports following functions:
40 ///
41 /// | Function | Alias with applied function |
42 /// |--------------|-----------------------------|
43 /// | `PWM0 A` | [crate::Servo1Pwm0A] |
44 /// | `PIO0` | [crate::Servo1Pio0] |
45 /// | `PIO1` | [crate::Servo1Pio1] |
46 Gpio0 {
47 name: servo1,
48 aliases: {
49 /// PWM Function alias for pin [crate::Pins::servo1].
50 FunctionPwm, PullNone: Servo1Pwm0A,
51 /// PIO0 Function alias for pin [crate::Pins::servo1].
52 FunctionPio0, PullNone: Servo1Pio0,
53 /// PIO1 Function alias for pin [crate::Pins::servo1].
54 FunctionPio1, PullNone: Servo1Pio1
55 }
56 },
57
58 /// GPIO 1 supports following functions:
59 ///
60 /// | Function | Alias with applied function |
61 /// |--------------|-----------------------------|
62 /// | `PWM0 B` | [crate::Servo2Pwm0B] |
63 /// | `PIO0` | [crate::Servo2Pio0] |
64 /// | `PIO1` | [crate::Servo2Pio1] |
65 Gpio1 {
66 name: servo2,
67 aliases: {
68 /// PWM Function alias for pin [crate::Pins::servo2].
69 FunctionPwm, PullNone: Servo2Pwm0B,
70 /// PIO0 Function alias for pin [crate::Pins::servo2].
71 FunctionPio0, PullNone: Servo2Pio0,
72 /// PIO1 Function alias for pin [crate::Pins::servo2].
73 FunctionPio1, PullNone: Servo2Pio1
74 }
75 },
76
77 /// GPIO 2 supports following functions:
78 ///
79 /// | Function | Alias with applied function |
80 /// |--------------|-----------------------------|
81 /// | `PWM1 A` | [crate::Servo3Pwm1A] |
82 /// | `PIO0` | [crate::Servo3Pio0] |
83 /// | `PIO1` | [crate::Servo3Pio1] |
84 Gpio2 {
85 name: servo3,
86 aliases: {
87 /// PWM Function alias for pin [crate::Pins::servo3].
88 FunctionPwm, PullNone: Servo3Pwm1A,
89 /// PIO0 Function alias for pin [crate::Pins::servo3].
90 FunctionPio0, PullNone: Servo3Pio0,
91 /// PIO1 Function alias for pin [crate::Pins::servo3].
92 FunctionPio1, PullNone: Servo3Pio1
93 }
94 },
95
96 /// GPIO 3 supports following functions:
97 ///
98 /// | Function | Alias with applied function |
99 /// |--------------|-----------------------------|
100 /// | `PWM1 B` | [crate::Servo4Pwm1B] |
101 /// | `PIO0` | [crate::Servo4Pio0] |
102 /// | `PIO1` | [crate::Servo4Pio1] |
103 Gpio3 {
104 name: servo4,
105 aliases: {
106 /// PWM Function alias for pin [crate::Pins::servo4].
107 FunctionPwm, PullNone: Servo4Pwm1B,
108 /// PIO0 Function alias for pin [crate::Pins::servo4].
109 FunctionPio0, PullNone: Servo4Pio0,
110 /// PIO1 Function alias for pin [crate::Pins::servo4].
111 FunctionPio1, PullNone: Servo4Pio1
112 }
113 },
114
115 /// GPIO 4 supports following functions:
116 ///
117 /// | Function | Alias with applied function |
118 /// |--------------|-----------------------------|
119 /// | `PWM2 A` | [crate::Servo5Pwm2A] |
120 /// | `PIO0` | [crate::Servo5Pio0] |
121 /// | `PIO1` | [crate::Servo5Pio1] |
122 Gpio4 {
123 name: servo5,
124 aliases: {
125 /// PWM Function alias for pin [crate::Pins::servo5].
126 FunctionPwm, PullNone: Servo5Pwm2A,
127 /// PIO0 Function alias for pin [crate::Pins::servo5].
128 FunctionPio0, PullNone: Servo5Pio0,
129 /// PIO1 Function alias for pin [crate::Pins::servo5].
130 FunctionPio1, PullNone: Servo5Pio1
131 }
132 },
133
134 /// GPIO 5 supports following functions:
135 ///
136 /// | Function | Alias with applied function |
137 /// |--------------|-----------------------------|
138 /// | `PWM2 B` | [crate::Servo6Pwm2B] |
139 /// | `PIO0` | [crate::Servo6Pio0] |
140 /// | `PIO1` | [crate::Servo6Pio1] |
141 Gpio5 {
142 name: servo6,
143 aliases: {
144 /// PWM Function alias for pin [crate::Pins::servo6].
145 FunctionPwm, PullNone: Servo6Pwm2B,
146 /// PIO0 Function alias for pin [crate::Pins::servo6].
147 FunctionPio0, PullNone: Servo6Pio0,
148 /// PIO1 Function alias for pin [crate::Pins::servo6].
149 FunctionPio1, PullNone: Servo6Pio1
150 }
151 },
152
153 /// GPIO 6 supports following functions:
154 ///
155 /// | Function | Alias with applied function |
156 /// |--------------|-----------------------------|
157 /// | `PWM3 A` | [crate::Servo7Pwm3A] |
158 /// | `PIO0` | [crate::Servo7Pio0] |
159 /// | `PIO1` | [crate::Servo7Pio1] |
160 Gpio6 {
161 name: servo7,
162 aliases: {
163 /// PWM Function alias for pin [crate::Pins::servo7].
164 FunctionPwm, PullNone: Servo7Pwm3A,
165 /// PIO0 Function alias for pin [crate::Pins::servo7].
166 FunctionPio0, PullNone: Servo7Pio0,
167 /// PIO1 Function alias for pin [crate::Pins::servo7].
168 FunctionPio1, PullNone: Servo7Pio1
169 }
170 },
171
172 /// GPIO 7 supports following functions:
173 ///
174 /// | Function | Alias with applied function |
175 /// |--------------|-----------------------------|
176 /// | `PWM3 B` | [crate::Servo8Pwm3B] |
177 /// | `PIO0` | [crate::Servo8Pio0] |
178 /// | `PIO1` | [crate::Servo8Pio1] |
179 Gpio7 {
180 name: servo8,
181 aliases: {
182 /// PWM Function alias for pin [crate::Pins::servo8].
183 FunctionPwm, PullNone: Servo8Pwm3B,
184 /// PIO0 Function alias for pin [crate::Pins::servo8].
185 FunctionPio0, PullNone: Servo8Pio0,
186 /// PIO1 Function alias for pin [crate::Pins::servo8].
187 FunctionPio1, PullNone: Servo8Pio1
188 }
189 },
190
191 /// GPIO 8 supports following functions:
192 ///
193 /// | Function | Alias with applied function |
194 /// |--------------|-----------------------------|
195 /// | `PWM4 A` | [crate::Servo9Pwm4A] |
196 /// | `PIO0` | [crate::Servo9Pio0] |
197 /// | `PIO1` | [crate::Servo9Pio1] |
198 Gpio8 {
199 name: servo9,
200 aliases: {
201 /// PWM Function alias for pin [crate::Pins::servo9].
202 FunctionPwm, PullNone: Servo9Pwm4A,
203 /// PIO0 Function alias for pin [crate::Pins::servo9].
204 FunctionPio0, PullNone: Servo9Pio0,
205 /// PIO1 Function alias for pin [crate::Pins::servo9].
206 FunctionPio1, PullNone: Servo9Pio1
207 }
208 },
209
210 /// GPIO 9 supports following functions:
211 ///
212 /// | Function | Alias with applied function |
213 /// |--------------|-----------------------------|
214 /// | `PWM4 B` | [crate::Servo10Pwm4B] |
215 /// | `PIO0` | [crate::Servo10Pio0] |
216 /// | `PIO1` | [crate::Servo10Pio1] |
217 Gpio9 {
218 name: servo10,
219 aliases: {
220 /// PWM Function alias for pin [crate::Pins::servo10].
221 FunctionPwm, PullNone: Servo10Pwm4B,
222 /// PIO0 Function alias for pin [crate::Pins::servo10].
223 FunctionPio0, PullNone: Servo10Pio0,
224 /// PIO1 Function alias for pin [crate::Pins::servo10].
225 FunctionPio1, PullNone: Servo10Pio1
226 }
227 },
228
229 /// GPIO 10 supports following functions:
230 ///
231 /// | Function | Alias with applied function |
232 /// |--------------|-----------------------------|
233 /// | `PWM5 A` | [crate::Servo11Pwm5A] |
234 /// | `PIO0` | [crate::Servo11Pio0] |
235 /// | `PIO1` | [crate::Servo11Pio1] |
236 Gpio10 {
237 name: servo11,
238 aliases: {
239 /// PWM Function alias for pin [crate::Pins::servo11].
240 FunctionPwm, PullNone: Servo11Pwm5A,
241 /// PIO0 Function alias for pin [crate::Pins::servo11].
242 FunctionPio0, PullNone: Servo11Pio0,
243 /// PIO1 Function alias for pin [crate::Pins::servo11].
244 FunctionPio1, PullNone: Servo11Pio1
245 }
246 },
247
248 /// GPIO 11 supports following functions:
249 ///
250 /// | Function | Alias with applied function |
251 /// |--------------|-----------------------------|
252 /// | `PWM5 B` | [crate::Servo12Pwm5B] |
253 /// | `PIO0` | [crate::Servo12Pio0] |
254 /// | `PIO1` | [crate::Servo12Pio1] |
255 Gpio11 {
256 name: servo12,
257 aliases: {
258 /// PWM Function alias for pin [crate::Pins::servo12].
259 FunctionPwm, PullNone: Servo12Pwm5B,
260 /// PIO0 Function alias for pin [crate::Pins::servo12].
261 FunctionPio0, PullNone: Servo12Pio0,
262 /// PIO1 Function alias for pin [crate::Pins::servo12].
263 FunctionPio1, PullNone: Servo12Pio1
264 }
265 },
266
267 /// GPIO 12 supports following functions:
268 ///
269 /// | Function | Alias with applied function |
270 /// |--------------|-----------------------------|
271 /// | `PWM6 A` | [crate::Servo13Pwm6A] |
272 /// | `PIO0` | [crate::Servo13Pio0] |
273 /// | `PIO1` | [crate::Servo13Pio1] |
274 Gpio12 {
275 name: servo13,
276 aliases: {
277 /// PWM Function alias for pin [crate::Pins::servo13].
278 FunctionPwm, PullNone: Servo13Pwm6A,
279 /// PIO0 Function alias for pin [crate::Pins::servo13].
280 FunctionPio0, PullNone: Servo13Pio0,
281 /// PIO1 Function alias for pin [crate::Pins::servo13].
282 FunctionPio1, PullNone: Servo13Pio1
283 }
284 },
285
286 /// GPIO 13 supports following functions:
287 ///
288 /// | Function | Alias with applied function |
289 /// |--------------|-----------------------------|
290 /// | `PWM6 B` | [crate::Servo14Pwm6B] |
291 /// | `PIO0` | [crate::Servo14Pio0] |
292 /// | `PIO1` | [crate::Servo14Pio1] |
293 Gpio13 {
294 name: servo14,
295 aliases: {
296 /// PWM Function alias for pin [crate::Pins::servo14].
297 FunctionPwm, PullNone: Servo14Pwm6B,
298 /// PIO0 Function alias for pin [crate::Pins::servo14].
299 FunctionPio0, PullNone: Servo14Pio0,
300 /// PIO1 Function alias for pin [crate::Pins::servo14].
301 FunctionPio1, PullNone: Servo14Pio1
302 }
303 },
304
305 /// GPIO 14 supports following functions:
306 ///
307 /// | Function | Alias with applied function |
308 /// |--------------|-----------------------------|
309 /// | `PWM7 A` | [crate::Servo15Pwm7A] |
310 /// | `PIO0` | [crate::Servo15Pio0] |
311 /// | `PIO1` | [crate::Servo15Pio1] |
312 Gpio14 {
313 name: servo15,
314 aliases: {
315 /// PWM Function alias for pin [crate::Pins::servo15].
316 FunctionPwm, PullNone: Servo15Pwm7A,
317 /// PIO0 Function alias for pin [crate::Pins::servo15].
318 FunctionPio0, PullNone: Servo15Pio0,
319 /// PIO1 Function alias for pin [crate::Pins::servo15].
320 FunctionPio1, PullNone: Servo15Pio1
321 }
322 },
323
324 /// GPIO 15 supports following functions:
325 ///
326 /// | Function | Alias with applied function |
327 /// |--------------|-----------------------------|
328 /// | `PWM7 B` | [crate::Servo16Pwm7B] |
329 /// | `PIO0` | [crate::Servo16Pio0] |
330 /// | `PIO1` | [crate::Servo16Pio1] |
331 Gpio15 {
332 name: servo16,
333 aliases: {
334 /// PWM Function alias for pin [crate::Pins::servo16].
335 FunctionPwm, PullNone: Servo16Pwm7B,
336 /// PIO0 Function alias for pin [crate::Pins::servo16].
337 FunctionPio0, PullNone: Servo16Pio0,
338 /// PIO1 Function alias for pin [crate::Pins::servo16].
339 FunctionPio1, PullNone: Servo16Pio1
340 }
341 },
342
343 /// GPIO 16 supports following functions:
344 ///
345 /// | Function | Alias with applied function |
346 /// |--------------|-----------------------------|
347 /// | `PWM0 A` | [crate::Servo17Pwm0A] |
348 /// | `PIO0` | [crate::Servo17Pio0] |
349 /// | `PIO1` | [crate::Servo17Pio1] |
350 Gpio16 {
351 name: servo17,
352 aliases: {
353 /// PWM Function alias for pin [crate::Pins::servo17].
354 FunctionPwm, PullNone: Servo17Pwm0A,
355 /// PIO0 Function alias for pin [crate::Pins::servo17].
356 FunctionPio0, PullNone: Servo17Pio0,
357 /// PIO1 Function alias for pin [crate::Pins::servo17].
358 FunctionPio1, PullNone: Servo17Pio1
359 }
360 },
361
362 /// GPIO 17 supports following functions:
363 ///
364 /// | Function | Alias with applied function |
365 /// |--------------|-----------------------------|
366 /// | `PWM0 B` | [crate::Servo18Pwm0B] |
367 /// | `PIO0` | [crate::Servo18Pio0] |
368 /// | `PIO1` | [crate::Servo18Pio1] |
369 Gpio17 {
370 name: servo18,
371 aliases: {
372 /// PWM Function alias for pin [crate::Pins::servo18].
373 FunctionPwm, PullNone: Servo18Pwm0B,
374 /// PIO0 Function alias for pin [crate::Pins::servo18].
375 FunctionPio0, PullNone: Servo18Pio0,
376 /// PIO1 Function alias for pin [crate::Pins::servo18].
377 FunctionPio1, PullNone: Servo18Pio1
378 }
379 },
380
381 /// GPIO 18 is connected to the leds of the Servo 2040 board.
382 Gpio18 {
383 name: led_data
384 },
385
386 /// GPIO 19 supports following functions:
387 ///
388 /// | Function | Alias with applied function |
389 /// |--------------|-----------------------------|
390 /// | `SPI0 TX` | [crate::Gp19Spi0Tx] |
391 /// | `UART0 RTS` | [crate::Gp19Uart0Rts] |
392 /// | `I2C1 SCL` | [crate::Gp19I2C1Scl] |
393 /// | `PWM1 B` | [crate::Gp19Pwm1B] |
394 /// | `PIO0` | [crate::Gp19Pio0] |
395 /// | `PIO1` | [crate::Gp19Pio1] |
396 Gpio19 {
397 name: int_,
398 aliases: {
399 /// UART Function alias for pin [crate::Pins::int_].
400 FunctionUart, PullNone: Gp19Uart0Rts,
401 /// SPI Function alias for pin [crate::Pins::int_].
402 FunctionSpi, PullNone: Gp19Spi0Tx,
403 /// I2C Function alias for pin [crate::Pins::int_].
404 FunctionI2C, PullUp: Gp19I2C1Scl,
405 /// PWM Function alias for pin [crate::Pins::int_].
406 FunctionPwm, PullNone: Gp19Pwm1B,
407 /// PIO0 Function alias for pin [crate::Pins::int_].
408 FunctionPio0, PullNone: Gp19Pio0,
409 /// PIO1 Function alias for pin [crate::Pins::int_].
410 FunctionPio1, PullNone: Gp19Pio1
411 }
412 },
413
414 /// GPIO 20 supports following functions:
415 ///
416 /// | Function | Alias with applied function |
417 /// |--------------|-----------------------------|
418 /// | `SPI0 RX` | [crate::Gp20Spi0Rx] |
419 /// | `UART1 TX` | [crate::Gp20Uart1Tx] |
420 /// | `I2C0 SDA` | [crate::Gp20I2C0Sda] |
421 /// | `PWM2 A` | [crate::Gp20Pwm2A] |
422 /// | `PIO0` | [crate::Gp20Pio0] |
423 /// | `PIO1` | [crate::Gp20Pio1] |
424 Gpio20 {
425 name: sda,
426 aliases: {
427 /// UART Function alias for pin [crate::Pins::sda].
428 FunctionUart, PullNone: Gp20Uart1Tx,
429 /// SPI Function alias for pin [crate::Pins::sda].
430 FunctionSpi, PullNone: Gp20Spi0Rx,
431 /// I2C Function alias for pin [crate::Pins::sda].
432 FunctionI2C, PullUp: Gp20I2C0Sda,
433 /// PWM Function alias for pin [crate::Pins::sda].
434 FunctionPwm, PullNone: Gp20Pwm2A,
435 /// PIO0 Function alias for pin [crate::Pins::sda].
436 FunctionPio0, PullNone: Gp20Pio0,
437 /// PIO1 Function alias for pin [crate::Pins::sda].
438 FunctionPio1, PullNone: Gp20Pio1
439 }
440 },
441
442 /// GPIO 21 supports following functions:
443 ///
444 /// | Function | Alias with applied function |
445 /// |--------------|-----------------------------|
446 /// | `SPI0 CSn` | [crate::Gp21Spi0Csn] |
447 /// | `UART1 RX` | [crate::Gp21Uart1Rx] |
448 /// | `I2C0 SCL` | [crate::Gp21I2C0Scl] |
449 /// | `PWM2 B` | [crate::Gp21Pwm2B] |
450 /// | `PIO0` | [crate::Gp21Pio0] |
451 /// | `PIO1` | [crate::Gp21Pio1] |
452 Gpio21 {
453 name: scl,
454 aliases: {
455 /// UART Function alias for pin [crate::Pins::scl].
456 FunctionUart, PullNone: Gp21Uart1Rx,
457 /// SPI Function alias for pin [crate::Pins::scl].
458 FunctionSpi, PullNone: Gp21Spi0Csn,
459 /// I2C Function alias for pin [crate::Pins::scl].
460 FunctionI2C, PullUp: Gp21I2C0Scl,
461 /// PWM Function alias for pin [crate::Pins::scl].
462 FunctionPwm, PullNone: Gp21Pwm2B,
463 /// PIO0 Function alias for pin [crate::Pins::scl].
464 FunctionPio0, PullNone: Gp21Pio0,
465 /// PIO1 Function alias for pin [crate::Pins::scl].
466 FunctionPio1, PullNone: Gp21Pio1
467 }
468 },
469
470 /// GPIO 22 is connected to adc_addr_0 of the Servo 2040 board.
471 Gpio22 {
472 name: adc_addr_0,
473 },
474
475 /// GPIO 23 supports following functions:
476 ///
477 /// | Function | Alias with applied function |
478 /// |--------------|-----------------------------|
479 /// | `SPI0 TX` | [crate::Gp23Spi0Tx] |
480 /// | `UART1 RTS` | [crate::Gp23Uart1Rts] |
481 /// | `I2C1 SCL` | [crate::Gp23I2C1Scl] |
482 /// | `PWM3 B` | [crate::Gp23Pwm3B] |
483 /// | `PIO0` | [crate::Gp23Pio0] |
484 /// | `PIO1` | [crate::Gp23Pio1] |
485 Gpio23 {
486 name: user_sw,
487 aliases: {
488 /// UART Function alias for pin [crate::Pins::user_sw].
489 FunctionUart, PullNone: Gp23Uart1Rts,
490 /// SPI Function alias for pin [crate::Pins::user_sw].
491 FunctionSpi, PullNone: Gp23Spi0Tx,
492 /// I2C Function alias for pin [crate::Pins::user_sw].
493 FunctionI2C, PullUp: Gp23I2C1Scl,
494 /// PWM Function alias for pin [crate::Pins::user_sw].
495 FunctionPwm, PullNone: Gp23Pwm3B,
496 /// PIO0 Function alias for pin [crate::Pins::user_sw].
497 FunctionPio0, PullNone: Gp23Pio0,
498 /// PIO1 Function alias for pin [crate::Pins::user_sw].
499 FunctionPio1, PullNone: Gp23Pio1
500 }
501 },
502
503 /// GPIO 24 is connected to adc_addr_1 of the Servo 2040 board.
504 Gpio24 {
505 name: adc_addr_1,
506 },
507
508 /// GPIO 25 is connected to adc_addr_2 of the Servo 2040 board.
509 Gpio25 {
510 name: adc_addr_2,
511 },
512
513 /// GPIO 26 supports following functions:
514 ///
515 /// | Function | Alias with applied function |
516 /// |--------------|-----------------------------|
517 /// | `SPI1 SCK` | [crate::Gp26Spi1Sck] |
518 /// | `UART1 CTS` | [crate::Gp26Uart1Cts] |
519 /// | `I2C1 SDA` | [crate::Gp26I2C1Sda] |
520 /// | `PWM5 A` | [crate::Gp26Pwm5A] |
521 /// | `PIO0` | [crate::Gp26Pio0] |
522 /// | `PIO1` | [crate::Gp26Pio1] |
523 Gpio26 {
524 name: adc0,
525 aliases: {
526 /// UART Function alias for pin [crate::Pins::gpio26].
527 FunctionUart, PullNone: Gp26Uart1Cts,
528 /// SPI Function alias for pin [crate::Pins::gpio26].
529 FunctionSpi, PullNone: Gp26Spi1Sck,
530 /// I2C Function alias for pin [crate::Pins::gpio26].
531 FunctionI2C, PullUp: Gp26I2C1Sda,
532 /// PWM Function alias for pin [crate::Pins::gpio26].
533 FunctionPwm, PullNone: Gp26Pwm5A,
534 /// PIO0 Function alias for pin [crate::Pins::gpio26].
535 FunctionPio0, PullNone: Gp26Pio0,
536 /// PIO1 Function alias for pin [crate::Pins::gpio26].
537 FunctionPio1, PullNone: Gp26Pio1
538 }
539 },
540
541 /// GPIO 27 supports following functions:
542 ///
543 /// | Function | Alias with applied function |
544 /// |--------------|-----------------------------|
545 /// | `SPI1 TX` | [crate::Gp27Spi1Tx] |
546 /// | `UART1 RTS` | [crate::Gp27Uart1Rts] |
547 /// | `I2C1 SCL` | [crate::Gp27I2C1Scl] |
548 /// | `PWM5 B` | [crate::Gp27Pwm5B] |
549 /// | `PIO0` | [crate::Gp27Pio0] |
550 /// | `PIO1` | [crate::Gp27Pio1] |
551 Gpio27 {
552 name: adc1,
553 aliases: {
554 /// UART Function alias for pin [crate::Pins::gpio27].
555 FunctionUart, PullNone: Gp27Uart1Rts,
556 /// SPI Function alias for pin [crate::Pins::gpio27].
557 FunctionSpi, PullNone: Gp27Spi1Tx,
558 /// I2C Function alias for pin [crate::Pins::gpio27].
559 FunctionI2C, PullUp: Gp27I2C1Scl,
560 /// PWM Function alias for pin [crate::Pins::gpio27].
561 FunctionPwm, PullNone: Gp27Pwm5B,
562 /// PIO0 Function alias for pin [crate::Pins::gpio27].
563 FunctionPio0, PullNone: Gp27Pio0,
564 /// PIO1 Function alias for pin [crate::Pins::gpio27].
565 FunctionPio1, PullNone: Gp27Pio1
566 }
567 },
568
569 /// GPIO 28 supports following functions:
570 ///
571 /// | Function | Alias with applied function |
572 /// |--------------|-----------------------------|
573 /// | `SPI1 RX` | [crate::Gp28Spi1Rx] |
574 /// | `UART0 TX` | [crate::Gp28Uart0Tx] |
575 /// | `I2C0 SDA` | [crate::Gp28I2C0Sda] |
576 /// | `PWM6 A` | [crate::Gp28Pwm6A] |
577 /// | `PIO0` | [crate::Gp28Pio0] |
578 /// | `PIO1` | [crate::Gp28Pio1] |
579 Gpio28 {
580 name: adc2,
581 aliases: {
582 /// UART Function alias for pin [crate::Pins::gpio28].
583 FunctionUart, PullNone: Gp28Uart0Tx,
584 /// SPI Function alias for pin [crate::Pins::gpio28].
585 FunctionSpi, PullNone: Gp28Spi1Rx,
586 /// I2C Function alias for pin [crate::Pins::gpio28].
587 FunctionI2C, PullUp: Gp28I2C0Sda,
588 /// PWM Function alias for pin [crate::Pins::gpio28].
589 FunctionPwm, PullNone: Gp28Pwm6A,
590 /// PIO0 Function alias for pin [crate::Pins::gpio28].
591 FunctionPio0, PullNone: Gp28Pio0,
592 /// PIO1 Function alias for pin [crate::Pins::gpio28].
593 FunctionPio1, PullNone: Gp28Pio1
594 }
595 },
596
597 /// GPIO 29 is connected to shared adc of the Servo2040 board.
598 Gpio29 {
599 name: shared_adc,
600 },
601);
602
603pub const XOSC_CRYSTAL_FREQ: u32 = 12_000_000;