diff options
| author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2022-12-09 07:49:40 +0000 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-12-09 07:49:40 +0000 |
| commit | 58ab82904970f2df3984e54c722955a7b7c81391 (patch) | |
| tree | bb29792ca17a791411182c8e5f3aa6414cefed85 /embassy-nrf/src/chips | |
| parent | 1b8c0733e690108994654c43387e438c2f64cfaa (diff) | |
| parent | 5fdd521a767fd8825a2d55d6b833fd99627353d7 (diff) | |
Merge #1049
1049: embassy-nrf: Add I2S module r=lulf a=chris-zen
This PR adds I2S support for the nrf52 series (`nrf52832`, `nrf52833`, `nrf52840`).
We could only test it in a `nrf52840` in master mode for an output stream (see `i2s_waveform` example), using a clone of the [Adafruit I2S Stereo Decoder - UDA1334A](https://learn.adafruit.com/adafruit-i2s-stereo-decoder-uda1334a/overview).
We were wondering if this could be a welcome addition to embassy, as we are working on this very informally and don't have much free time for it.
<img src="https://user-images.githubusercontent.com/932644/202316127-a8cf90ef-1e1a-4e1d-b796-961b8ad6cef5.png" width="600">
https://user-images.githubusercontent.com/932644/202316609-e53cd912-e463-4e01-839e-0bbdf37020da.mp4
Co-authored-by: `@brainstorm` <[email protected]>
Co-authored-by: Christian Perez Llamas <[email protected]>
Co-authored-by: Roman Valls Guimera <[email protected]>
Diffstat (limited to 'embassy-nrf/src/chips')
| -rw-r--r-- | embassy-nrf/src/chips/nrf52832.rs | 7 | ||||
| -rw-r--r-- | embassy-nrf/src/chips/nrf52833.rs | 7 | ||||
| -rw-r--r-- | embassy-nrf/src/chips/nrf52840.rs | 7 |
3 files changed, 18 insertions, 3 deletions
diff --git a/embassy-nrf/src/chips/nrf52832.rs b/embassy-nrf/src/chips/nrf52832.rs index 879600adb..152dad4e3 100644 --- a/embassy-nrf/src/chips/nrf52832.rs +++ b/embassy-nrf/src/chips/nrf52832.rs | |||
| @@ -138,6 +138,9 @@ embassy_hal_common::peripherals! { | |||
| 138 | 138 | ||
| 139 | // QDEC | 139 | // QDEC |
| 140 | QDEC, | 140 | QDEC, |
| 141 | |||
| 142 | // I2S | ||
| 143 | I2S, | ||
| 141 | } | 144 | } |
| 142 | 145 | ||
| 143 | impl_uarte!(UARTE0, UARTE0, UARTE0_UART0); | 146 | impl_uarte!(UARTE0, UARTE0, UARTE0_UART0); |
| @@ -241,6 +244,8 @@ impl_saadc_input!(P0_29, ANALOG_INPUT5); | |||
| 241 | impl_saadc_input!(P0_30, ANALOG_INPUT6); | 244 | impl_saadc_input!(P0_30, ANALOG_INPUT6); |
| 242 | impl_saadc_input!(P0_31, ANALOG_INPUT7); | 245 | impl_saadc_input!(P0_31, ANALOG_INPUT7); |
| 243 | 246 | ||
| 247 | impl_i2s!(I2S, I2S, I2S); | ||
| 248 | |||
| 244 | pub mod irqs { | 249 | pub mod irqs { |
| 245 | use embassy_cortex_m::interrupt::_export::declare; | 250 | use embassy_cortex_m::interrupt::_export::declare; |
| 246 | 251 | ||
| @@ -281,6 +286,6 @@ pub mod irqs { | |||
| 281 | declare!(PWM2); | 286 | declare!(PWM2); |
| 282 | declare!(SPIM2_SPIS2_SPI2); | 287 | declare!(SPIM2_SPIS2_SPI2); |
| 283 | declare!(RTC2); | 288 | declare!(RTC2); |
| 284 | declare!(I2S); | ||
| 285 | declare!(FPU); | 289 | declare!(FPU); |
| 290 | declare!(I2S); | ||
| 286 | } | 291 | } |
diff --git a/embassy-nrf/src/chips/nrf52833.rs b/embassy-nrf/src/chips/nrf52833.rs index d406c32c2..a99ca6343 100644 --- a/embassy-nrf/src/chips/nrf52833.rs +++ b/embassy-nrf/src/chips/nrf52833.rs | |||
| @@ -161,6 +161,9 @@ embassy_hal_common::peripherals! { | |||
| 161 | 161 | ||
| 162 | // PDM | 162 | // PDM |
| 163 | PDM, | 163 | PDM, |
| 164 | |||
| 165 | // I2S | ||
| 166 | I2S, | ||
| 164 | } | 167 | } |
| 165 | 168 | ||
| 166 | #[cfg(feature = "nightly")] | 169 | #[cfg(feature = "nightly")] |
| @@ -287,6 +290,8 @@ impl_saadc_input!(P0_29, ANALOG_INPUT5); | |||
| 287 | impl_saadc_input!(P0_30, ANALOG_INPUT6); | 290 | impl_saadc_input!(P0_30, ANALOG_INPUT6); |
| 288 | impl_saadc_input!(P0_31, ANALOG_INPUT7); | 291 | impl_saadc_input!(P0_31, ANALOG_INPUT7); |
| 289 | 292 | ||
| 293 | impl_i2s!(I2S, I2S, I2S); | ||
| 294 | |||
| 290 | pub mod irqs { | 295 | pub mod irqs { |
| 291 | use embassy_cortex_m::interrupt::_export::declare; | 296 | use embassy_cortex_m::interrupt::_export::declare; |
| 292 | 297 | ||
| @@ -327,10 +332,10 @@ pub mod irqs { | |||
| 327 | declare!(PWM2); | 332 | declare!(PWM2); |
| 328 | declare!(SPIM2_SPIS2_SPI2); | 333 | declare!(SPIM2_SPIS2_SPI2); |
| 329 | declare!(RTC2); | 334 | declare!(RTC2); |
| 330 | declare!(I2S); | ||
| 331 | declare!(FPU); | 335 | declare!(FPU); |
| 332 | declare!(USBD); | 336 | declare!(USBD); |
| 333 | declare!(UARTE1); | 337 | declare!(UARTE1); |
| 334 | declare!(PWM3); | 338 | declare!(PWM3); |
| 335 | declare!(SPIM3); | 339 | declare!(SPIM3); |
| 340 | declare!(I2S); | ||
| 336 | } | 341 | } |
diff --git a/embassy-nrf/src/chips/nrf52840.rs b/embassy-nrf/src/chips/nrf52840.rs index f9e271c97..4f7463be2 100644 --- a/embassy-nrf/src/chips/nrf52840.rs +++ b/embassy-nrf/src/chips/nrf52840.rs | |||
| @@ -164,6 +164,9 @@ embassy_hal_common::peripherals! { | |||
| 164 | 164 | ||
| 165 | // PDM | 165 | // PDM |
| 166 | PDM, | 166 | PDM, |
| 167 | |||
| 168 | // I2S | ||
| 169 | I2S, | ||
| 167 | } | 170 | } |
| 168 | 171 | ||
| 169 | #[cfg(feature = "nightly")] | 172 | #[cfg(feature = "nightly")] |
| @@ -292,6 +295,8 @@ impl_saadc_input!(P0_29, ANALOG_INPUT5); | |||
| 292 | impl_saadc_input!(P0_30, ANALOG_INPUT6); | 295 | impl_saadc_input!(P0_30, ANALOG_INPUT6); |
| 293 | impl_saadc_input!(P0_31, ANALOG_INPUT7); | 296 | impl_saadc_input!(P0_31, ANALOG_INPUT7); |
| 294 | 297 | ||
| 298 | impl_i2s!(I2S, I2S, I2S); | ||
| 299 | |||
| 295 | pub mod irqs { | 300 | pub mod irqs { |
| 296 | use embassy_cortex_m::interrupt::_export::declare; | 301 | use embassy_cortex_m::interrupt::_export::declare; |
| 297 | 302 | ||
| @@ -332,7 +337,6 @@ pub mod irqs { | |||
| 332 | declare!(PWM2); | 337 | declare!(PWM2); |
| 333 | declare!(SPIM2_SPIS2_SPI2); | 338 | declare!(SPIM2_SPIS2_SPI2); |
| 334 | declare!(RTC2); | 339 | declare!(RTC2); |
| 335 | declare!(I2S); | ||
| 336 | declare!(FPU); | 340 | declare!(FPU); |
| 337 | declare!(USBD); | 341 | declare!(USBD); |
| 338 | declare!(UARTE1); | 342 | declare!(UARTE1); |
| @@ -340,4 +344,5 @@ pub mod irqs { | |||
| 340 | declare!(CRYPTOCELL); | 344 | declare!(CRYPTOCELL); |
| 341 | declare!(PWM3); | 345 | declare!(PWM3); |
| 342 | declare!(SPIM3); | 346 | declare!(SPIM3); |
| 347 | declare!(I2S); | ||
| 343 | } | 348 | } |
