aboutsummaryrefslogtreecommitdiff
path: root/embassy-nrf/src/chips/nrf54l10_app.rs
diff options
context:
space:
mode:
authorRaul Alimbekov <[email protected]>2025-12-16 09:05:22 +0300
committerGitHub <[email protected]>2025-12-16 09:05:22 +0300
commitc9a04b4b732b7a3b696eb8223664c1a7942b1875 (patch)
tree6dbe5c02e66eed8d8762f13f95afd24f8db2b38c /embassy-nrf/src/chips/nrf54l10_app.rs
parentcde24a3ef1117653ba5ed4184102b33f745782fb (diff)
parent5ae6e060ec1c90561719aabdc29d5b6e7b8b0a82 (diff)
Merge branch 'main' into main
Diffstat (limited to 'embassy-nrf/src/chips/nrf54l10_app.rs')
-rw-r--r--embassy-nrf/src/chips/nrf54l10_app.rs746
1 files changed, 746 insertions, 0 deletions
diff --git a/embassy-nrf/src/chips/nrf54l10_app.rs b/embassy-nrf/src/chips/nrf54l10_app.rs
new file mode 100644
index 000000000..8e6595248
--- /dev/null
+++ b/embassy-nrf/src/chips/nrf54l10_app.rs
@@ -0,0 +1,746 @@
1/// Peripheral Access Crate
2#[allow(unused_imports)]
3#[rustfmt::skip]
4pub mod pac {
5 pub use nrf_pac::*;
6
7 #[cfg(feature = "_ns")]
8 #[doc(no_inline)]
9 pub use nrf_pac::{
10 FICR_NS as FICR,
11 DPPIC00_NS as DPPIC00,
12 PPIB00_NS as PPIB00,
13 PPIB01_NS as PPIB01,
14 AAR00_NS as AAR00,
15 CCM00_NS as CCM00,
16 ECB00_NS as ECB00,
17 SPIM00_NS as SPIM00,
18 SPIS00_NS as SPIS00,
19 UARTE00_NS as UARTE00,
20 VPR00_NS as VPR00,
21 P2_NS as P2,
22 CTRLAP_NS as CTRLAP,
23 TAD_NS as TAD,
24 TIMER00_NS as TIMER00,
25 DPPIC10_NS as DPPIC10,
26 PPIB10_NS as PPIB10,
27 PPIB11_NS as PPIB11,
28 TIMER10_NS as TIMER10,
29 EGU10_NS as EGU10,
30 RADIO_NS as RADIO,
31 DPPIC20_NS as DPPIC20,
32 PPIB20_NS as PPIB20,
33 PPIB21_NS as PPIB21,
34 PPIB22_NS as PPIB22,
35 SPIM20_NS as SPIM20,
36 SPIS20_NS as SPIS20,
37 TWIM20_NS as TWIM20,
38 TWIS20_NS as TWIS20,
39 UARTE20_NS as UARTE20,
40 SPIM21_NS as SPIM21,
41 SPIS21_NS as SPIS21,
42 TWIM21_NS as TWIM21,
43 TWIS21_NS as TWIS21,
44 UARTE21_NS as UARTE21,
45 SPIM22_NS as SPIM22,
46 SPIS22_NS as SPIS22,
47 TWIM22_NS as TWIM22,
48 TWIS22_NS as TWIS22,
49 UARTE22_NS as UARTE22,
50 EGU20_NS as EGU20,
51 TIMER20_NS as TIMER20,
52 TIMER21_NS as TIMER21,
53 TIMER22_NS as TIMER22,
54 TIMER23_NS as TIMER23,
55 TIMER24_NS as TIMER24,
56 MEMCONF_NS as MEMCONF,
57 PDM20_NS as PDM20,
58 PDM21_NS as PDM21,
59 PWM20_NS as PWM20,
60 PWM21_NS as PWM21,
61 PWM22_NS as PWM22,
62 SAADC_NS as SAADC,
63 NFCT_NS as NFCT,
64 TEMP_NS as TEMP,
65 P1_NS as P1,
66 GPIOTE20_NS as GPIOTE20,
67 I2S20_NS as I2S20,
68 QDEC20_NS as QDEC20,
69 QDEC21_NS as QDEC21,
70 GRTC_NS as GRTC,
71 DPPIC30_NS as DPPIC30,
72 PPIB30_NS as PPIB30,
73 SPIM30_NS as SPIM30,
74 SPIS30_NS as SPIS30,
75 TWIM30_NS as TWIM30,
76 TWIS30_NS as TWIS30,
77 UARTE30_NS as UARTE30,
78 COMP_NS as COMP,
79 LPCOMP_NS as LPCOMP,
80 WDT31_NS as WDT31,
81 P0_NS as P0,
82 GPIOTE30_NS as GPIOTE30,
83 CLOCK_NS as CLOCK,
84 POWER_NS as POWER,
85 RESET_NS as RESET,
86 OSCILLATORS_NS as OSCILLATORS,
87 REGULATORS_NS as REGULATORS,
88 TPIU_NS as TPIU,
89 ETM_NS as ETM,
90 };
91
92 #[cfg(feature = "_s")]
93 #[doc(no_inline)]
94 pub use nrf_pac::{
95 FICR_NS as FICR,
96 SICR_S as SICR,
97 ICACHEDATA_S as ICACHEDATA,
98 ICACHEINFO_S as ICACHEINFO,
99 SWI00_S as SWI00,
100 SWI01_S as SWI01,
101 SWI02_S as SWI02,
102 SWI03_S as SWI03,
103 SPU00_S as SPU00,
104 MPC00_S as MPC00,
105 DPPIC00_S as DPPIC00,
106 PPIB00_S as PPIB00,
107 PPIB01_S as PPIB01,
108 KMU_S as KMU,
109 AAR00_S as AAR00,
110 CCM00_S as CCM00,
111 ECB00_S as ECB00,
112 CRACEN_S as CRACEN,
113 SPIM00_S as SPIM00,
114 SPIS00_S as SPIS00,
115 UARTE00_S as UARTE00,
116 GLITCHDET_S as GLITCHDET,
117 RRAMC_S as RRAMC,
118 VPR00_S as VPR00,
119 P2_S as P2,
120 CTRLAP_S as CTRLAP,
121 TAD_S as TAD,
122 TIMER00_S as TIMER00,
123 SPU10_S as SPU10,
124 DPPIC10_S as DPPIC10,
125 PPIB10_S as PPIB10,
126 PPIB11_S as PPIB11,
127 TIMER10_S as TIMER10,
128 EGU10_S as EGU10,
129 RADIO_S as RADIO,
130 SPU20_S as SPU20,
131 DPPIC20_S as DPPIC20,
132 PPIB20_S as PPIB20,
133 PPIB21_S as PPIB21,
134 PPIB22_S as PPIB22,
135 SPIM20_S as SPIM20,
136 SPIS20_S as SPIS20,
137 TWIM20_S as TWIM20,
138 TWIS20_S as TWIS20,
139 UARTE20_S as UARTE20,
140 SPIM21_S as SPIM21,
141 SPIS21_S as SPIS21,
142 TWIM21_S as TWIM21,
143 TWIS21_S as TWIS21,
144 UARTE21_S as UARTE21,
145 SPIM22_S as SPIM22,
146 SPIS22_S as SPIS22,
147 TWIM22_S as TWIM22,
148 TWIS22_S as TWIS22,
149 UARTE22_S as UARTE22,
150 EGU20_S as EGU20,
151 TIMER20_S as TIMER20,
152 TIMER21_S as TIMER21,
153 TIMER22_S as TIMER22,
154 TIMER23_S as TIMER23,
155 TIMER24_S as TIMER24,
156 MEMCONF_S as MEMCONF,
157 PDM20_S as PDM20,
158 PDM21_S as PDM21,
159 PWM20_S as PWM20,
160 PWM21_S as PWM21,
161 PWM22_S as PWM22,
162 SAADC_S as SAADC,
163 NFCT_S as NFCT,
164 TEMP_S as TEMP,
165 P1_S as P1,
166 GPIOTE20_S as GPIOTE20,
167 TAMPC_S as TAMPC,
168 I2S20_S as I2S20,
169 QDEC20_S as QDEC20,
170 QDEC21_S as QDEC21,
171 GRTC_S as GRTC,
172 SPU30_S as SPU30,
173 DPPIC30_S as DPPIC30,
174 PPIB30_S as PPIB30,
175 SPIM30_S as SPIM30,
176 SPIS30_S as SPIS30,
177 TWIM30_S as TWIM30,
178 TWIS30_S as TWIS30,
179 UARTE30_S as UARTE30,
180 COMP_S as COMP,
181 LPCOMP_S as LPCOMP,
182 WDT30_S as WDT30,
183 WDT31_S as WDT31,
184 P0_S as P0,
185 GPIOTE30_S as GPIOTE30,
186 CLOCK_S as CLOCK,
187 POWER_S as POWER,
188 RESET_S as RESET,
189 OSCILLATORS_S as OSCILLATORS,
190 REGULATORS_S as REGULATORS,
191 CRACENCORE_S as CRACENCORE,
192 CPUC_S as CPUC,
193 ICACHE_S as ICACHE,
194 };
195}
196
197/// The maximum buffer size that the EasyDMA can send/recv in one operation.
198pub const EASY_DMA_SIZE: usize = (1 << 16) - 1;
199pub const FORCE_COPY_BUFFER_SIZE: usize = 1024;
200
201// 1.5 MB NVM
202#[allow(unused)]
203pub const FLASH_SIZE: usize = 1524 * 1024;
204
205embassy_hal_internal::peripherals! {
206 // PPI
207 PPI00_CH0,
208 PPI00_CH1,
209 PPI00_CH2,
210 PPI00_CH3,
211 PPI00_CH4,
212 PPI00_CH5,
213 PPI00_CH6,
214 PPI00_CH7,
215
216 PPI10_CH0,
217 PPI10_CH1,
218 PPI10_CH2,
219 PPI10_CH3,
220 PPI10_CH4,
221 PPI10_CH5,
222 PPI10_CH6,
223 PPI10_CH7,
224 PPI10_CH8,
225 PPI10_CH9,
226 PPI10_CH10,
227 PPI10_CH11,
228 PPI10_CH12,
229 PPI10_CH13,
230 PPI10_CH14,
231 PPI10_CH15,
232 PPI10_CH16,
233 PPI10_CH17,
234 PPI10_CH18,
235 PPI10_CH19,
236 PPI10_CH20,
237 PPI10_CH21,
238 PPI10_CH22,
239 PPI10_CH23,
240
241 PPI20_CH0,
242 PPI20_CH1,
243 PPI20_CH2,
244 PPI20_CH3,
245 PPI20_CH4,
246 PPI20_CH5,
247 PPI20_CH6,
248 PPI20_CH7,
249 PPI20_CH8,
250 PPI20_CH9,
251 PPI20_CH10,
252 PPI20_CH11,
253 PPI20_CH12,
254 PPI20_CH13,
255 PPI20_CH14,
256 PPI20_CH15,
257
258 PPI30_CH0,
259 PPI30_CH1,
260 PPI30_CH2,
261 PPI30_CH3,
262
263 PPI00_GROUP0,
264 PPI00_GROUP1,
265
266 PPI10_GROUP0,
267 PPI10_GROUP1,
268 PPI10_GROUP2,
269 PPI10_GROUP3,
270 PPI10_GROUP4,
271 PPI10_GROUP5,
272
273 PPI20_GROUP0,
274 PPI20_GROUP1,
275 PPI20_GROUP2,
276 PPI20_GROUP3,
277 PPI20_GROUP4,
278 PPI20_GROUP5,
279
280 PPI30_GROUP0,
281 PPI30_GROUP1,
282
283 // PPI BRIDGE channels
284 PPIB00_CH0,
285 PPIB00_CH1,
286 PPIB00_CH2,
287 PPIB00_CH3,
288 PPIB00_CH4,
289 PPIB00_CH5,
290 PPIB00_CH6,
291 PPIB00_CH7,
292
293 PPIB01_CH0,
294 PPIB01_CH1,
295 PPIB01_CH2,
296 PPIB01_CH3,
297 PPIB01_CH4,
298 PPIB01_CH5,
299 PPIB01_CH6,
300 PPIB01_CH7,
301
302 PPIB10_CH0,
303 PPIB10_CH1,
304 PPIB10_CH2,
305 PPIB10_CH3,
306 PPIB10_CH4,
307 PPIB10_CH5,
308 PPIB10_CH6,
309 PPIB10_CH7,
310
311 PPIB11_CH0,
312 PPIB11_CH1,
313 PPIB11_CH2,
314 PPIB11_CH3,
315 PPIB11_CH4,
316 PPIB11_CH5,
317 PPIB11_CH6,
318 PPIB11_CH7,
319 PPIB11_CH8,
320 PPIB11_CH9,
321 PPIB11_CH10,
322 PPIB11_CH11,
323 PPIB11_CH12,
324 PPIB11_CH13,
325 PPIB11_CH14,
326 PPIB11_CH15,
327
328 PPIB20_CH0,
329 PPIB20_CH1,
330 PPIB20_CH2,
331 PPIB20_CH3,
332 PPIB20_CH4,
333 PPIB20_CH5,
334 PPIB20_CH6,
335 PPIB20_CH7,
336
337 PPIB21_CH0,
338 PPIB21_CH1,
339 PPIB21_CH2,
340 PPIB21_CH3,
341 PPIB21_CH4,
342 PPIB21_CH5,
343 PPIB21_CH6,
344 PPIB21_CH7,
345 PPIB21_CH8,
346 PPIB21_CH9,
347 PPIB21_CH10,
348 PPIB21_CH11,
349 PPIB21_CH12,
350 PPIB21_CH13,
351 PPIB21_CH14,
352 PPIB21_CH15,
353
354 PPIB22_CH0,
355 PPIB22_CH1,
356 PPIB22_CH2,
357 PPIB22_CH3,
358
359 PPIB30_CH0,
360 PPIB30_CH1,
361 PPIB30_CH2,
362 PPIB30_CH3,
363
364 // Timers
365 TIMER00,
366 TIMER10,
367 TIMER20,
368 TIMER21,
369 TIMER22,
370 TIMER23,
371 TIMER24,
372
373 // GPIO port 0
374 P0_00,
375 P0_01,
376 P0_02,
377 P0_03,
378 P0_04,
379 P0_05,
380 P0_06,
381
382 // GPIO port 1
383 P1_00,
384 P1_01,
385 P1_02,
386 P1_03,
387 P1_04,
388 P1_05,
389 P1_06,
390 P1_07,
391 P1_08,
392 P1_09,
393 P1_10,
394 P1_11,
395 P1_12,
396 P1_13,
397 P1_14,
398 P1_15,
399 P1_16,
400
401
402 // GPIO port 2
403 P2_00,
404 P2_01,
405 P2_02,
406 P2_03,
407 P2_04,
408 P2_05,
409 P2_06,
410 P2_07,
411 P2_08,
412 P2_09,
413 P2_10,
414
415 // GRTC
416 GRTC_CH0,
417 #[cfg(not(feature = "time-driver-grtc"))]
418 GRTC_CH1,
419 GRTC_CH2,
420 GRTC_CH3,
421 GRTC_CH4,
422 GRTC_CH5,
423 GRTC_CH6,
424 GRTC_CH7,
425 GRTC_CH8,
426 GRTC_CH9,
427 GRTC_CH10,
428 GRTC_CH11,
429
430 // PWM
431 PWM20,
432 PWM21,
433 PWM22,
434
435 // SERIAL
436 SERIAL00,
437 SERIAL20,
438 SERIAL21,
439 SERIAL22,
440 SERIAL30,
441
442 // SAADC
443 SAADC,
444
445 // RADIO
446 RADIO,
447
448
449 // GPIOTE instances
450 GPIOTE20,
451 GPIOTE30,
452
453 // GPIOTE channels
454 GPIOTE20_CH0,
455 GPIOTE20_CH1,
456 GPIOTE20_CH2,
457 GPIOTE20_CH3,
458 GPIOTE20_CH4,
459 GPIOTE20_CH5,
460 GPIOTE20_CH6,
461 GPIOTE20_CH7,
462 GPIOTE30_CH0,
463 GPIOTE30_CH1,
464 GPIOTE30_CH2,
465 GPIOTE30_CH3,
466
467 // CRACEN
468 #[cfg(feature = "_s")]
469 CRACEN,
470
471 #[cfg(feature = "_s")]
472 // RRAMC
473 RRAMC,
474
475 // TEMP
476 TEMP,
477
478 // WDT
479 #[cfg(feature = "_ns")]
480 WDT,
481 #[cfg(feature = "_s")]
482 WDT0,
483 #[cfg(feature = "_s")]
484 WDT1,
485}
486
487impl_pin!(P0_00, 0, 0);
488impl_pin!(P0_01, 0, 1);
489impl_pin!(P0_02, 0, 2);
490impl_pin!(P0_03, 0, 3);
491impl_pin!(P0_04, 0, 4);
492impl_pin!(P0_05, 0, 5);
493impl_pin!(P0_06, 0, 6);
494
495impl_pin!(P1_00, 1, 0);
496impl_pin!(P1_01, 1, 1);
497impl_pin!(P1_02, 1, 2);
498impl_pin!(P1_03, 1, 3);
499impl_pin!(P1_04, 1, 4);
500impl_pin!(P1_05, 1, 5);
501impl_pin!(P1_06, 1, 6);
502impl_pin!(P1_07, 1, 7);
503impl_pin!(P1_08, 1, 8);
504impl_pin!(P1_09, 1, 9);
505impl_pin!(P1_10, 1, 10);
506impl_pin!(P1_11, 1, 11);
507impl_pin!(P1_12, 1, 12);
508impl_pin!(P1_13, 1, 13);
509impl_pin!(P1_14, 1, 14);
510impl_pin!(P1_15, 1, 15);
511impl_pin!(P1_16, 1, 16);
512
513impl_pin!(P2_00, 2, 0);
514impl_pin!(P2_01, 2, 1);
515impl_pin!(P2_02, 2, 2);
516impl_pin!(P2_03, 2, 3);
517impl_pin!(P2_04, 2, 4);
518impl_pin!(P2_05, 2, 5);
519impl_pin!(P2_06, 2, 6);
520impl_pin!(P2_07, 2, 7);
521impl_pin!(P2_08, 2, 8);
522impl_pin!(P2_09, 2, 9);
523impl_pin!(P2_10, 2, 10);
524
525cfg_if::cfg_if! {
526 if #[cfg(feature = "gpiote")] {
527 impl_gpiote_pin!(P0_00, GPIOTE30);
528 impl_gpiote_pin!(P0_01, GPIOTE30);
529 impl_gpiote_pin!(P0_02, GPIOTE30);
530 impl_gpiote_pin!(P0_03, GPIOTE30);
531 impl_gpiote_pin!(P0_04, GPIOTE30);
532 impl_gpiote_pin!(P0_05, GPIOTE30);
533 impl_gpiote_pin!(P0_06, GPIOTE30);
534
535 impl_gpiote_pin!(P1_00, GPIOTE20);
536 impl_gpiote_pin!(P1_01, GPIOTE20);
537 impl_gpiote_pin!(P1_02, GPIOTE20);
538 impl_gpiote_pin!(P1_03, GPIOTE20);
539 impl_gpiote_pin!(P1_04, GPIOTE20);
540 impl_gpiote_pin!(P1_05, GPIOTE20);
541 impl_gpiote_pin!(P1_06, GPIOTE20);
542 impl_gpiote_pin!(P1_07, GPIOTE20);
543 impl_gpiote_pin!(P1_08, GPIOTE20);
544 impl_gpiote_pin!(P1_09, GPIOTE20);
545 impl_gpiote_pin!(P1_10, GPIOTE20);
546 impl_gpiote_pin!(P1_11, GPIOTE20);
547 impl_gpiote_pin!(P1_12, GPIOTE20);
548 impl_gpiote_pin!(P1_13, GPIOTE20);
549 impl_gpiote_pin!(P1_14, GPIOTE20);
550 impl_gpiote_pin!(P1_15, GPIOTE20);
551 impl_gpiote_pin!(P1_16, GPIOTE20);
552 }
553}
554
555#[cfg(feature = "_ns")]
556impl_wdt!(WDT, WDT31, WDT31, 0);
557#[cfg(feature = "_s")]
558impl_wdt!(WDT0, WDT31, WDT31, 0);
559#[cfg(feature = "_s")]
560impl_wdt!(WDT1, WDT30, WDT30, 1);
561// DPPI00 channels
562impl_ppi_channel!(PPI00_CH0, DPPIC00, 0 => configurable);
563impl_ppi_channel!(PPI00_CH1, DPPIC00, 1 => configurable);
564impl_ppi_channel!(PPI00_CH2, DPPIC00, 2 => configurable);
565impl_ppi_channel!(PPI00_CH3, DPPIC00, 3 => configurable);
566impl_ppi_channel!(PPI00_CH4, DPPIC00, 4 => configurable);
567impl_ppi_channel!(PPI00_CH5, DPPIC00, 5 => configurable);
568impl_ppi_channel!(PPI00_CH6, DPPIC00, 6 => configurable);
569impl_ppi_channel!(PPI00_CH7, DPPIC00, 7 => configurable);
570
571// DPPI10 channels
572impl_ppi_channel!(PPI10_CH0, DPPIC10, 0 => static);
573
574// DPPI20 channels
575impl_ppi_channel!(PPI20_CH0, DPPIC20, 0 => configurable);
576impl_ppi_channel!(PPI20_CH1, DPPIC20, 1 => configurable);
577impl_ppi_channel!(PPI20_CH2, DPPIC20, 2 => configurable);
578impl_ppi_channel!(PPI20_CH3, DPPIC20, 3 => configurable);
579impl_ppi_channel!(PPI20_CH4, DPPIC20, 4 => configurable);
580impl_ppi_channel!(PPI20_CH5, DPPIC20, 5 => configurable);
581impl_ppi_channel!(PPI20_CH6, DPPIC20, 6 => configurable);
582impl_ppi_channel!(PPI20_CH7, DPPIC20, 7 => configurable);
583impl_ppi_channel!(PPI20_CH8, DPPIC20, 8 => configurable);
584impl_ppi_channel!(PPI20_CH9, DPPIC20, 9 => configurable);
585impl_ppi_channel!(PPI20_CH10, DPPIC20, 10 => configurable);
586impl_ppi_channel!(PPI20_CH11, DPPIC20, 11 => configurable);
587impl_ppi_channel!(PPI20_CH12, DPPIC20, 12 => configurable);
588impl_ppi_channel!(PPI20_CH13, DPPIC20, 13 => configurable);
589impl_ppi_channel!(PPI20_CH14, DPPIC20, 14 => configurable);
590impl_ppi_channel!(PPI20_CH15, DPPIC20, 15 => configurable);
591
592// DPPI30 channels
593impl_ppi_channel!(PPI30_CH0, DPPIC30, 0 => configurable);
594impl_ppi_channel!(PPI30_CH1, DPPIC30, 1 => configurable);
595impl_ppi_channel!(PPI30_CH2, DPPIC30, 2 => configurable);
596impl_ppi_channel!(PPI30_CH3, DPPIC30, 3 => configurable);
597
598// DPPI00 groups
599impl_ppi_group!(PPI00_GROUP0, DPPIC00, 0);
600impl_ppi_group!(PPI00_GROUP1, DPPIC00, 1);
601
602// DPPI10 groups
603impl_ppi_group!(PPI10_GROUP0, DPPIC10, 0);
604
605// DPPI20 groups
606impl_ppi_group!(PPI20_GROUP0, DPPIC20, 0);
607impl_ppi_group!(PPI20_GROUP1, DPPIC20, 1);
608impl_ppi_group!(PPI20_GROUP2, DPPIC20, 2);
609impl_ppi_group!(PPI20_GROUP3, DPPIC20, 3);
610impl_ppi_group!(PPI20_GROUP4, DPPIC20, 4);
611impl_ppi_group!(PPI20_GROUP5, DPPIC20, 5);
612
613// DPPI30 groups
614impl_ppi_group!(PPI30_GROUP0, DPPIC30, 0);
615impl_ppi_group!(PPI30_GROUP1, DPPIC30, 1);
616
617impl_timer!(TIMER00, TIMER00, TIMER00);
618impl_timer!(TIMER10, TIMER10, TIMER10);
619impl_timer!(TIMER20, TIMER20, TIMER20);
620impl_timer!(TIMER21, TIMER21, TIMER21);
621impl_timer!(TIMER22, TIMER22, TIMER22);
622impl_timer!(TIMER23, TIMER23, TIMER23);
623impl_timer!(TIMER24, TIMER24, TIMER24);
624
625impl_twim!(SERIAL20, TWIM20, SERIAL20);
626impl_twim!(SERIAL21, TWIM21, SERIAL21);
627impl_twim!(SERIAL22, TWIM22, SERIAL22);
628impl_twim!(SERIAL30, TWIM30, SERIAL30);
629
630impl_twis!(SERIAL20, TWIS20, SERIAL20);
631impl_twis!(SERIAL21, TWIS21, SERIAL21);
632impl_twis!(SERIAL22, TWIS22, SERIAL22);
633impl_twis!(SERIAL30, TWIS30, SERIAL30);
634
635impl_pwm!(PWM20, PWM20, PWM20);
636impl_pwm!(PWM21, PWM21, PWM21);
637impl_pwm!(PWM22, PWM22, PWM22);
638
639#[cfg(feature = "_s")]
640impl_spim!(
641 SERIAL00,
642 SPIM00,
643 SERIAL00,
644 match pac::OSCILLATORS_S.pll().currentfreq().read().currentfreq() {
645 pac::oscillators::vals::Currentfreq::CK128M => 128_000_000,
646 pac::oscillators::vals::Currentfreq::CK64M => 64_000_000,
647 _ => unreachable!(),
648 }
649);
650#[cfg(feature = "_ns")]
651impl_spim!(
652 SERIAL00,
653 SPIM00,
654 SERIAL00,
655 match pac::OSCILLATORS_NS.pll().currentfreq().read().currentfreq() {
656 pac::oscillators::vals::Currentfreq::CK128M => 128_000_000,
657 pac::oscillators::vals::Currentfreq::CK64M => 64_000_000,
658 _ => unreachable!(),
659 }
660);
661impl_spim!(SERIAL20, SPIM20, SERIAL20, 16_000_000);
662impl_spim!(SERIAL21, SPIM21, SERIAL21, 16_000_000);
663impl_spim!(SERIAL22, SPIM22, SERIAL22, 16_000_000);
664impl_spim!(SERIAL30, SPIM30, SERIAL30, 16_000_000);
665
666impl_spis!(SERIAL20, SPIS20, SERIAL20);
667impl_spis!(SERIAL21, SPIS21, SERIAL21);
668impl_spis!(SERIAL22, SPIS22, SERIAL22);
669impl_spis!(SERIAL30, SPIS30, SERIAL30);
670
671impl_uarte!(SERIAL00, UARTE00, SERIAL00);
672impl_uarte!(SERIAL20, UARTE20, SERIAL20);
673impl_uarte!(SERIAL21, UARTE21, SERIAL21);
674impl_uarte!(SERIAL22, UARTE22, SERIAL22);
675impl_uarte!(SERIAL30, UARTE30, SERIAL30);
676
677// NB: SAADC uses "pin" abstraction, not "AIN"
678impl_saadc_input!(P1_04, 1, 4);
679impl_saadc_input!(P1_05, 1, 5);
680impl_saadc_input!(P1_06, 1, 6);
681impl_saadc_input!(P1_07, 1, 7);
682impl_saadc_input!(P1_11, 1, 11);
683impl_saadc_input!(P1_12, 1, 12);
684impl_saadc_input!(P1_13, 1, 13);
685impl_saadc_input!(P1_14, 1, 14);
686
687#[cfg(feature = "_s")]
688impl_cracen!(CRACEN, CRACEN, CRACEN);
689
690embassy_hal_internal::interrupt_mod!(
691 SWI00,
692 SWI01,
693 SWI02,
694 SWI03,
695 SPU00,
696 MPC00,
697 AAR00_CCM00,
698 ECB00,
699 CRACEN,
700 SERIAL00,
701 RRAMC,
702 VPR00,
703 CTRLAP,
704 TIMER00,
705 SPU10,
706 TIMER10,
707 EGU10,
708 RADIO_0,
709 RADIO_1,
710 SPU20,
711 SERIAL20,
712 SERIAL21,
713 SERIAL22,
714 EGU20,
715 TIMER20,
716 TIMER21,
717 TIMER22,
718 TIMER23,
719 TIMER24,
720 PDM20,
721 PDM21,
722 PWM20,
723 PWM21,
724 PWM22,
725 SAADC,
726 NFCT,
727 TEMP,
728 GPIOTE20_0,
729 GPIOTE20_1,
730 TAMPC,
731 I2S20,
732 QDEC20,
733 QDEC21,
734 GRTC_0,
735 GRTC_1,
736 GRTC_2,
737 GRTC_3,
738 SPU30,
739 SERIAL30,
740 COMP_LPCOMP,
741 WDT30,
742 WDT31,
743 GPIOTE30_0,
744 GPIOTE30_1,
745 CLOCK_POWER,
746);