embassy_nrf/chips/
nrf52840.rs

1pub use nrf_pac as pac;
2
3/// The maximum buffer size that the EasyDMA can send/recv in one operation.
4pub 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    // USB
14    USBD,
15
16    // RTC
17    RTC0,
18    #[cfg(not(feature = "time-driver-rtc1"))]
19    RTC1,
20    RTC2,
21
22    // WDT
23    WDT,
24
25    // NVMC
26    NVMC,
27
28    // RNG
29    RNG,
30
31    // QSPI
32    QSPI,
33
34    // QDEC
35    QDEC,
36
37    // UARTE
38    UARTE0,
39    UARTE1,
40
41    // SPI/TWI
42    TWISPI0,
43    TWISPI1,
44    SPI2,
45    SPI3,
46
47    // SAADC
48    SAADC,
49
50    // PWM
51    PWM0,
52    PWM1,
53    PWM2,
54    PWM3,
55
56    // TIMER
57    TIMER0,
58    TIMER1,
59    TIMER2,
60    TIMER3,
61    TIMER4,
62
63    // GPIOTE
64    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
74    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    // GPIO port 0
115    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    // GPIO port 1
152    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
170    TEMP,
171
172    // PDM
173    PDM,
174
175    // I2S
176    I2S,
177
178    // Radio
179    RADIO,
180
181    // EGU
182    EGU0,
183    EGU1,
184    EGU2,
185    EGU3,
186    EGU4,
187    EGU5,
188
189    // NFC
190    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, 0 => configurable);
291impl_ppi_channel!(PPI_CH1, 1 => configurable);
292impl_ppi_channel!(PPI_CH2, 2 => configurable);
293impl_ppi_channel!(PPI_CH3, 3 => configurable);
294impl_ppi_channel!(PPI_CH4, 4 => configurable);
295impl_ppi_channel!(PPI_CH5, 5 => configurable);
296impl_ppi_channel!(PPI_CH6, 6 => configurable);
297impl_ppi_channel!(PPI_CH7, 7 => configurable);
298impl_ppi_channel!(PPI_CH8, 8 => configurable);
299impl_ppi_channel!(PPI_CH9, 9 => configurable);
300impl_ppi_channel!(PPI_CH10, 10 => configurable);
301impl_ppi_channel!(PPI_CH11, 11 => configurable);
302impl_ppi_channel!(PPI_CH12, 12 => configurable);
303impl_ppi_channel!(PPI_CH13, 13 => configurable);
304impl_ppi_channel!(PPI_CH14, 14 => configurable);
305impl_ppi_channel!(PPI_CH15, 15 => configurable);
306impl_ppi_channel!(PPI_CH16, 16 => configurable);
307impl_ppi_channel!(PPI_CH17, 17 => configurable);
308impl_ppi_channel!(PPI_CH18, 18 => configurable);
309impl_ppi_channel!(PPI_CH19, 19 => configurable);
310impl_ppi_channel!(PPI_CH20, 20 => static);
311impl_ppi_channel!(PPI_CH21, 21 => static);
312impl_ppi_channel!(PPI_CH22, 22 => static);
313impl_ppi_channel!(PPI_CH23, 23 => static);
314impl_ppi_channel!(PPI_CH24, 24 => static);
315impl_ppi_channel!(PPI_CH25, 25 => static);
316impl_ppi_channel!(PPI_CH26, 26 => static);
317impl_ppi_channel!(PPI_CH27, 27 => static);
318impl_ppi_channel!(PPI_CH28, 28 => static);
319impl_ppi_channel!(PPI_CH29, 29 => static);
320impl_ppi_channel!(PPI_CH30, 30 => static);
321impl_ppi_channel!(PPI_CH31, 31 => static);
322
323impl_saadc_input!(P0_02, ANALOG_INPUT0);
324impl_saadc_input!(P0_03, ANALOG_INPUT1);
325impl_saadc_input!(P0_04, ANALOG_INPUT2);
326impl_saadc_input!(P0_05, ANALOG_INPUT3);
327impl_saadc_input!(P0_28, ANALOG_INPUT4);
328impl_saadc_input!(P0_29, ANALOG_INPUT5);
329impl_saadc_input!(P0_30, ANALOG_INPUT6);
330impl_saadc_input!(P0_31, ANALOG_INPUT7);
331
332impl_i2s!(I2S, I2S, I2S);
333
334impl_radio!(RADIO, RADIO, RADIO);
335
336impl_egu!(EGU0, EGU0, EGU0_SWI0);
337impl_egu!(EGU1, EGU1, EGU1_SWI1);
338impl_egu!(EGU2, EGU2, EGU2_SWI2);
339impl_egu!(EGU3, EGU3, EGU3_SWI3);
340impl_egu!(EGU4, EGU4, EGU4_SWI4);
341impl_egu!(EGU5, EGU5, EGU5_SWI5);
342
343impl_wdt!(WDT, WDT, WDT, 0);
344
345embassy_hal_internal::interrupt_mod!(
346    CLOCK_POWER,
347    RADIO,
348    UARTE0,
349    TWISPI0,
350    TWISPI1,
351    NFCT,
352    GPIOTE,
353    SAADC,
354    TIMER0,
355    TIMER1,
356    TIMER2,
357    RTC0,
358    TEMP,
359    RNG,
360    ECB,
361    AAR_CCM,
362    WDT,
363    RTC1,
364    QDEC,
365    COMP_LPCOMP,
366    EGU0_SWI0,
367    EGU1_SWI1,
368    EGU2_SWI2,
369    EGU3_SWI3,
370    EGU4_SWI4,
371    EGU5_SWI5,
372    TIMER3,
373    TIMER4,
374    PWM0,
375    PDM,
376    MWU,
377    PWM1,
378    PWM2,
379    SPI2,
380    RTC2,
381    I2S,
382    FPU,
383    USBD,
384    UARTE1,
385    QSPI,
386    CRYPTOCELL,
387    PWM3,
388    SPIM3,
389);