1pub use nrf_pac as pac;
2
3pub const EASY_DMA_SIZE: usize = (1 << 16) - 1;
5pub const FORCE_COPY_BUFFER_SIZE: usize = 512;
6
7pub const FLASH_SIZE: usize = 1024 * 1024;
8
9pub const RESET_PIN: u32 = 18;
10pub const APPROTECT_MIN_BUILD_CODE: u8 = b'F';
11
12embassy_hal_internal::peripherals! {
13 USBD,
15
16 RTC0,
18 #[cfg(not(feature = "time-driver-rtc1"))]
19 RTC1,
20 RTC2,
21
22 WDT,
24
25 NVMC,
27
28 RNG,
30
31 QSPI,
33
34 QDEC,
36
37 UARTE0,
39 UARTE1,
40
41 TWISPI0,
43 TWISPI1,
44 SPI2,
45 SPI3,
46
47 SAADC,
49
50 PWM0,
52 PWM1,
53 PWM2,
54 PWM3,
55
56 TIMER0,
58 TIMER1,
59 TIMER2,
60 TIMER3,
61 TIMER4,
62
63 GPIOTE_CH0,
65 GPIOTE_CH1,
66 GPIOTE_CH2,
67 GPIOTE_CH3,
68 GPIOTE_CH4,
69 GPIOTE_CH5,
70 GPIOTE_CH6,
71 GPIOTE_CH7,
72
73 PPI_CH0,
75 PPI_CH1,
76 PPI_CH2,
77 PPI_CH3,
78 PPI_CH4,
79 PPI_CH5,
80 PPI_CH6,
81 PPI_CH7,
82 PPI_CH8,
83 PPI_CH9,
84 PPI_CH10,
85 PPI_CH11,
86 PPI_CH12,
87 PPI_CH13,
88 PPI_CH14,
89 PPI_CH15,
90 PPI_CH16,
91 PPI_CH17,
92 PPI_CH18,
93 PPI_CH19,
94 PPI_CH20,
95 PPI_CH21,
96 PPI_CH22,
97 PPI_CH23,
98 PPI_CH24,
99 PPI_CH25,
100 PPI_CH26,
101 PPI_CH27,
102 PPI_CH28,
103 PPI_CH29,
104 PPI_CH30,
105 PPI_CH31,
106
107 PPI_GROUP0,
108 PPI_GROUP1,
109 PPI_GROUP2,
110 PPI_GROUP3,
111 PPI_GROUP4,
112 PPI_GROUP5,
113
114 P0_00,
116 P0_01,
117 P0_02,
118 P0_03,
119 P0_04,
120 P0_05,
121 P0_06,
122 P0_07,
123 P0_08,
124 #[cfg(feature = "nfc-pins-as-gpio")]
125 P0_09,
126 #[cfg(feature = "nfc-pins-as-gpio")]
127 P0_10,
128 P0_11,
129 P0_12,
130 P0_13,
131 P0_14,
132 P0_15,
133 P0_16,
134 P0_17,
135 #[cfg(feature="reset-pin-as-gpio")]
136 P0_18,
137 P0_19,
138 P0_20,
139 P0_21,
140 P0_22,
141 P0_23,
142 P0_24,
143 P0_25,
144 P0_26,
145 P0_27,
146 P0_28,
147 P0_29,
148 P0_30,
149 P0_31,
150
151 P1_00,
153 P1_01,
154 P1_02,
155 P1_03,
156 P1_04,
157 P1_05,
158 P1_06,
159 P1_07,
160 P1_08,
161 P1_09,
162 P1_10,
163 P1_11,
164 P1_12,
165 P1_13,
166 P1_14,
167 P1_15,
168
169 TEMP,
171
172 PDM,
174
175 I2S,
177
178 RADIO,
180
181 EGU0,
183 EGU1,
184 EGU2,
185 EGU3,
186 EGU4,
187 EGU5,
188
189 NFCT,
191}
192
193impl_usb!(USBD, USBD, USBD);
194
195impl_uarte!(UARTE0, UARTE0, UARTE0);
196impl_uarte!(UARTE1, UARTE1, UARTE1);
197
198impl_spim!(TWISPI0, SPIM0, TWISPI0);
199impl_spim!(TWISPI1, SPIM1, TWISPI1);
200impl_spim!(SPI2, SPIM2, SPI2);
201impl_spim!(SPI3, SPIM3, SPIM3);
202
203impl_spis!(TWISPI0, SPIS0, TWISPI0);
204impl_spis!(TWISPI1, SPIS1, TWISPI1);
205impl_spis!(SPI2, SPIS2, SPI2);
206
207impl_twim!(TWISPI0, TWIM0, TWISPI0);
208impl_twim!(TWISPI1, TWIM1, TWISPI1);
209
210impl_twis!(TWISPI0, TWIS0, TWISPI0);
211impl_twis!(TWISPI1, TWIS1, TWISPI1);
212
213impl_pwm!(PWM0, PWM0, PWM0);
214impl_pwm!(PWM1, PWM1, PWM1);
215impl_pwm!(PWM2, PWM2, PWM2);
216impl_pwm!(PWM3, PWM3, PWM3);
217
218impl_timer!(TIMER0, TIMER0, TIMER0);
219impl_timer!(TIMER1, TIMER1, TIMER1);
220impl_timer!(TIMER2, TIMER2, TIMER2);
221impl_timer!(TIMER3, TIMER3, TIMER3, extended);
222impl_timer!(TIMER4, TIMER4, TIMER4, extended);
223
224impl_rtc!(RTC0, RTC0, RTC0);
225#[cfg(not(feature = "time-driver-rtc1"))]
226impl_rtc!(RTC1, RTC1, RTC1);
227impl_rtc!(RTC2, RTC2, RTC2);
228
229impl_qspi!(QSPI, QSPI, QSPI);
230
231impl_pdm!(PDM, PDM, PDM);
232
233impl_qdec!(QDEC, QDEC, QDEC);
234
235impl_rng!(RNG, RNG, RNG);
236
237impl_pin!(P0_00, 0, 0);
238impl_pin!(P0_01, 0, 1);
239impl_pin!(P0_02, 0, 2);
240impl_pin!(P0_03, 0, 3);
241impl_pin!(P0_04, 0, 4);
242impl_pin!(P0_05, 0, 5);
243impl_pin!(P0_06, 0, 6);
244impl_pin!(P0_07, 0, 7);
245impl_pin!(P0_08, 0, 8);
246#[cfg(feature = "nfc-pins-as-gpio")]
247impl_pin!(P0_09, 0, 9);
248#[cfg(feature = "nfc-pins-as-gpio")]
249impl_pin!(P0_10, 0, 10);
250impl_pin!(P0_11, 0, 11);
251impl_pin!(P0_12, 0, 12);
252impl_pin!(P0_13, 0, 13);
253impl_pin!(P0_14, 0, 14);
254impl_pin!(P0_15, 0, 15);
255impl_pin!(P0_16, 0, 16);
256impl_pin!(P0_17, 0, 17);
257#[cfg(feature = "reset-pin-as-gpio")]
258impl_pin!(P0_18, 0, 18);
259impl_pin!(P0_19, 0, 19);
260impl_pin!(P0_20, 0, 20);
261impl_pin!(P0_21, 0, 21);
262impl_pin!(P0_22, 0, 22);
263impl_pin!(P0_23, 0, 23);
264impl_pin!(P0_24, 0, 24);
265impl_pin!(P0_25, 0, 25);
266impl_pin!(P0_26, 0, 26);
267impl_pin!(P0_27, 0, 27);
268impl_pin!(P0_28, 0, 28);
269impl_pin!(P0_29, 0, 29);
270impl_pin!(P0_30, 0, 30);
271impl_pin!(P0_31, 0, 31);
272
273impl_pin!(P1_00, 1, 0);
274impl_pin!(P1_01, 1, 1);
275impl_pin!(P1_02, 1, 2);
276impl_pin!(P1_03, 1, 3);
277impl_pin!(P1_04, 1, 4);
278impl_pin!(P1_05, 1, 5);
279impl_pin!(P1_06, 1, 6);
280impl_pin!(P1_07, 1, 7);
281impl_pin!(P1_08, 1, 8);
282impl_pin!(P1_09, 1, 9);
283impl_pin!(P1_10, 1, 10);
284impl_pin!(P1_11, 1, 11);
285impl_pin!(P1_12, 1, 12);
286impl_pin!(P1_13, 1, 13);
287impl_pin!(P1_14, 1, 14);
288impl_pin!(P1_15, 1, 15);
289
290impl_ppi_channel!(PPI_CH0, PPI, 0 => configurable);
291impl_ppi_channel!(PPI_CH1, PPI, 1 => configurable);
292impl_ppi_channel!(PPI_CH2, PPI, 2 => configurable);
293impl_ppi_channel!(PPI_CH3, PPI, 3 => configurable);
294impl_ppi_channel!(PPI_CH4, PPI, 4 => configurable);
295impl_ppi_channel!(PPI_CH5, PPI, 5 => configurable);
296impl_ppi_channel!(PPI_CH6, PPI, 6 => configurable);
297impl_ppi_channel!(PPI_CH7, PPI, 7 => configurable);
298impl_ppi_channel!(PPI_CH8, PPI, 8 => configurable);
299impl_ppi_channel!(PPI_CH9, PPI, 9 => configurable);
300impl_ppi_channel!(PPI_CH10, PPI, 10 => configurable);
301impl_ppi_channel!(PPI_CH11, PPI, 11 => configurable);
302impl_ppi_channel!(PPI_CH12, PPI, 12 => configurable);
303impl_ppi_channel!(PPI_CH13, PPI, 13 => configurable);
304impl_ppi_channel!(PPI_CH14, PPI, 14 => configurable);
305impl_ppi_channel!(PPI_CH15, PPI, 15 => configurable);
306impl_ppi_channel!(PPI_CH16, PPI, 16 => configurable);
307impl_ppi_channel!(PPI_CH17, PPI, 17 => configurable);
308impl_ppi_channel!(PPI_CH18, PPI, 18 => configurable);
309impl_ppi_channel!(PPI_CH19, PPI, 19 => configurable);
310impl_ppi_channel!(PPI_CH20, PPI, 20 => static);
311impl_ppi_channel!(PPI_CH21, PPI, 21 => static);
312impl_ppi_channel!(PPI_CH22, PPI, 22 => static);
313impl_ppi_channel!(PPI_CH23, PPI, 23 => static);
314impl_ppi_channel!(PPI_CH24, PPI, 24 => static);
315impl_ppi_channel!(PPI_CH25, PPI, 25 => static);
316impl_ppi_channel!(PPI_CH26, PPI, 26 => static);
317impl_ppi_channel!(PPI_CH27, PPI, 27 => static);
318impl_ppi_channel!(PPI_CH28, PPI, 28 => static);
319impl_ppi_channel!(PPI_CH29, PPI, 29 => static);
320impl_ppi_channel!(PPI_CH30, PPI, 30 => static);
321impl_ppi_channel!(PPI_CH31, PPI, 31 => static);
322
323impl_ppi_group!(PPI_GROUP0, PPI, 0);
324impl_ppi_group!(PPI_GROUP1, PPI, 1);
325impl_ppi_group!(PPI_GROUP2, PPI, 2);
326impl_ppi_group!(PPI_GROUP3, PPI, 3);
327impl_ppi_group!(PPI_GROUP4, PPI, 4);
328impl_ppi_group!(PPI_GROUP5, PPI, 5);
329
330impl_saadc_input!(P0_02, ANALOG_INPUT0);
331impl_saadc_input!(P0_03, ANALOG_INPUT1);
332impl_saadc_input!(P0_04, ANALOG_INPUT2);
333impl_saadc_input!(P0_05, ANALOG_INPUT3);
334impl_saadc_input!(P0_28, ANALOG_INPUT4);
335impl_saadc_input!(P0_29, ANALOG_INPUT5);
336impl_saadc_input!(P0_30, ANALOG_INPUT6);
337impl_saadc_input!(P0_31, ANALOG_INPUT7);
338
339impl_i2s!(I2S, I2S, I2S);
340
341impl_radio!(RADIO, RADIO, RADIO);
342
343impl_egu!(EGU0, EGU0, EGU0_SWI0);
344impl_egu!(EGU1, EGU1, EGU1_SWI1);
345impl_egu!(EGU2, EGU2, EGU2_SWI2);
346impl_egu!(EGU3, EGU3, EGU3_SWI3);
347impl_egu!(EGU4, EGU4, EGU4_SWI4);
348impl_egu!(EGU5, EGU5, EGU5_SWI5);
349
350impl_wdt!(WDT, WDT, WDT, 0);
351
352embassy_hal_internal::interrupt_mod!(
353 CLOCK_POWER,
354 RADIO,
355 UARTE0,
356 TWISPI0,
357 TWISPI1,
358 NFCT,
359 GPIOTE,
360 SAADC,
361 TIMER0,
362 TIMER1,
363 TIMER2,
364 RTC0,
365 TEMP,
366 RNG,
367 ECB,
368 AAR_CCM,
369 WDT,
370 RTC1,
371 QDEC,
372 COMP_LPCOMP,
373 EGU0_SWI0,
374 EGU1_SWI1,
375 EGU2_SWI2,
376 EGU3_SWI3,
377 EGU4_SWI4,
378 EGU5_SWI5,
379 TIMER3,
380 TIMER4,
381 PWM0,
382 PDM,
383 MWU,
384 PWM1,
385 PWM2,
386 SPI2,
387 RTC2,
388 I2S,
389 FPU,
390 USBD,
391 UARTE1,
392 QSPI,
393 CRYPTOCELL,
394 PWM3,
395 SPIM3,
396);