circuitpython/ports
MikeTeachman 1f6cb8f047 mixmrt/machine_i2s: Add I2S protocol support.
This commit adds support for machine.I2S on the mimxrt port.  The I2S API
is consistent with the existing stm32, esp32, and rp2 implementations.

I2S features:
- controller transmit and controller receive
- 16-bit and 32-bit sample sizes
- mono and stereo formats
- sampling frequencies from 8kHz to 48kHz
- 3 modes of operation:
  - blocking
  - non-blocking with callback
  - uasyncio
- configurable internal buffer
- optional MCK

Tested with the following development boards:
- MIMXRT1010_EVK, MIMXRT1015_EVK, MIMXRT1020_EVK, MIMXRT1050_EVK
- Teensy 4.0, Teensy 4.1
- Olimex RT1010
- Seeed ARCH MIX

Tested with the following I2S hardware peripherals:
- UDA1334
- GY-SPH0645LM4H
- WM8960 codec on board the MIMXRT boards and separate breakout board
- INMP441
- PCM5102
- SGTL5000 on the Teensy audio shield

Signed-off-by: Mike Teachman <mike.teachman@gmail.com>
2022-03-30 14:12:40 +11:00
..
bare-arm bare-arm/mpconfigport.h: Disable remaining optional features. 2021-11-01 14:23:06 +11:00
cc3200 ports: Consolidate inclusion of umachine module in built-ins. 2022-02-03 10:08:54 +11:00
esp32 esp32/machine_pin: Expose pin 20 for ESP32. 2022-03-22 10:40:00 +11:00
esp8266 esp8266/modesp: Remove esp.info() function. 2022-03-22 11:03:29 +11:00
javascript py/runtime: Allow initialising sys.path/argv with defaults. 2021-12-18 00:08:07 +11:00
mimxrt mixmrt/machine_i2s: Add I2S protocol support. 2022-03-30 14:12:40 +11:00
minimal ports: Recompile bytecode tests now that .mpy format changed. 2022-02-24 18:29:02 +11:00
nrf ports: Consolidate inclusion of umachine module in built-ins. 2022-02-03 10:08:54 +11:00
pic16bit all: Update to point to files in new shared/ directory. 2021-07-12 17:08:10 +10:00
powerpc ports: Recompile bytecode tests now that .mpy format changed. 2022-02-24 18:29:02 +11:00
qemu-arm qemu-arm/moduos: Convert module to use extmod version. 2022-03-09 10:03:23 +11:00
rp2 rp2: Allow Overriding cmake frozen manifest from the command line. 2022-03-24 22:10:01 +11:00
samd samd/moduos: Convert module to use extmod version. 2022-03-09 10:03:23 +11:00
stm32 stm32/machine_i2s: Fix 16-bit stereo i2s_frame_map. 2022-03-29 11:44:08 +11:00
teensy py/runtime: Allow initialising sys.path/argv with defaults. 2021-12-18 00:08:07 +11:00
unix unix/variants: Enable a few optimisations and features on dev, coverage. 2022-03-10 13:34:43 +11:00
windows windows: Switch to VFS subsystem and use VfsPosix. 2022-03-10 00:26:36 +11:00
zephyr zephyr/moduos: Convert module to use extmod version. 2022-03-09 10:03:23 +11:00