Browse Source

samples: driver: i2s: Support echo and codec on RT1060 EVKC

- increase the memory block count
- add generic codec configuration
- add rt1060 evkc and rt1170 evkb project configuration and overlay

Signed-off-by: Tomas Barak <tomas.barak@nxp.com>
pull/92175/head
Tomas Barak 2 months ago committed by Benjamin Cabé
parent
commit
15a057c8f6
  1. 10
      samples/drivers/i2s/echo/boards/mimxrt1060_evk_mimxrt1062_qspi_C.conf
  2. 15
      samples/drivers/i2s/echo/boards/mimxrt1060_evk_mimxrt1062_qspi_C.overlay
  3. 10
      samples/drivers/i2s/echo/boards/mimxrt1170_evk_mimxrt1176_cm7.conf
  4. 15
      samples/drivers/i2s/echo/boards/mimxrt1170_evk_mimxrt1176_cm7_B.overlay
  5. 20
      samples/drivers/i2s/echo/src/main.c
  6. 11
      samples/drivers/i2s/i2s_codec/boards/mimxrt1060_evk_mimxrt1062_qspi_C.conf
  7. 9
      samples/drivers/i2s/i2s_codec/boards/mimxrt1060_evk_mimxrt1062_qspi_C.overlay
  8. 2
      samples/drivers/i2s/output/boards/mimxrt1060_evk_mimxrt1062_qspi_C.conf

10
samples/drivers/i2s/echo/boards/mimxrt1060_evk_mimxrt1062_qspi_C.conf

@ -0,0 +1,10 @@
#
# Copyright 2025 NXP
#
# SPDX-License-Identifier: Apache-2.0
#
CONFIG_HEAP_MEM_POOL_SIZE=81920
CONFIG_AUDIO=y
CONFIG_AUDIO_CODEC=y
CONFIG_DMA_TCD_QUEUE_SIZE=4

15
samples/drivers/i2s/echo/boards/mimxrt1060_evk_mimxrt1062_qspi_C.overlay

@ -0,0 +1,15 @@
/*
* Copyright 2025 NXP
*
* SPDX-License-Identifier: Apache-2.0
*/
i2s_rx: &sai1 {
nxp,rx-sync-mode;
status = "okay";
};
i2s_tx: &sai1 {
status = "okay";
mclk-output;
};

10
samples/drivers/i2s/echo/boards/mimxrt1170_evk_mimxrt1176_cm7.conf

@ -0,0 +1,10 @@
#
# Copyright 2025 NXP
#
# SPDX-License-Identifier: Apache-2.0
#
CONFIG_HEAP_MEM_POOL_SIZE=81920
CONFIG_AUDIO=y
CONFIG_AUDIO_CODEC=y
CONFIG_DMA_TCD_QUEUE_SIZE=4

15
samples/drivers/i2s/echo/boards/mimxrt1170_evk_mimxrt1176_cm7_B.overlay

@ -0,0 +1,15 @@
/*
* Copyright 2025 NXP
*
* SPDX-License-Identifier: Apache-2.0
*/
i2s_rx: &sai1 {
nxp,rx-sync-mode;
status = "okay";
};
i2s_tx: &sai1 {
status = "okay";
mclk-output;
};

20
samples/drivers/i2s/echo/src/main.c

@ -9,6 +9,7 @@
#include <zephyr/sys/printk.h> #include <zephyr/sys/printk.h>
#include <zephyr/drivers/i2s.h> #include <zephyr/drivers/i2s.h>
#include <zephyr/drivers/gpio.h> #include <zephyr/drivers/gpio.h>
#include <zephyr/audio/codec.h>
#include <string.h> #include <string.h>
@ -40,7 +41,7 @@ static struct gpio_dt_spec sw1_spec = GPIO_DT_SPEC_GET(SW1_NODE, gpios);
#endif #endif
#define BLOCK_SIZE (BYTES_PER_SAMPLE * SAMPLES_PER_BLOCK) #define BLOCK_SIZE (BYTES_PER_SAMPLE * SAMPLES_PER_BLOCK)
#define BLOCK_COUNT (INITIAL_BLOCKS + 2) #define BLOCK_COUNT (INITIAL_BLOCKS + 4)
K_MEM_SLAB_DEFINE_STATIC(mem_slab, BLOCK_SIZE, BLOCK_COUNT, 4); K_MEM_SLAB_DEFINE_STATIC(mem_slab, BLOCK_SIZE, BLOCK_COUNT, 4);
static int16_t echo_block[SAMPLES_PER_BLOCK]; static int16_t echo_block[SAMPLES_PER_BLOCK];
@ -256,6 +257,23 @@ int main(void)
if (!init_wm8731_i2c()) { if (!init_wm8731_i2c()) {
return 0; return 0;
} }
#else
const struct device *const codec_dev = DEVICE_DT_GET(DT_NODELABEL(audio_codec));
struct audio_codec_cfg audio_cfg;
audio_cfg.dai_route = AUDIO_ROUTE_PLAYBACK_CAPTURE;
audio_cfg.dai_type = AUDIO_DAI_TYPE_I2S;
audio_cfg.dai_cfg.i2s.word_size = SAMPLE_BIT_WIDTH;
audio_cfg.dai_cfg.i2s.channels = NUMBER_OF_CHANNELS;
audio_cfg.dai_cfg.i2s.format = I2S_FMT_DATA_FORMAT_I2S;
audio_cfg.dai_cfg.i2s.options = I2S_OPT_FRAME_CLK_MASTER;
audio_cfg.dai_cfg.i2s.frame_clk_freq = SAMPLE_FREQUENCY;
audio_cfg.dai_cfg.i2s.mem_slab = &mem_slab;
audio_cfg.dai_cfg.i2s.block_size = BLOCK_SIZE;
audio_codec_configure(codec_dev, &audio_cfg);
k_msleep(1000);
#endif #endif
if (!init_buttons()) { if (!init_buttons()) {

11
samples/drivers/i2s/i2s_codec/boards/mimxrt1060_evk_mimxrt1062_qspi_C.conf

@ -0,0 +1,11 @@
#
# Copyright 2025 NXP
#
# SPDX-License-Identifier: Apache-2.0
#
CONFIG_HEAP_MEM_POOL_SIZE=81920
CONFIG_AUDIO_CODEC=y
CONFIG_DMA_TCD_QUEUE_SIZE=4
CONFIG_SAMPLE_FREQ=16000
CONFIG_USE_DMIC=n

9
samples/drivers/i2s/i2s_codec/boards/mimxrt1060_evk_mimxrt1062_qspi_C.overlay

@ -0,0 +1,9 @@
/*
* Copyright 2025 NXP
*
* SPDX-License-Identifier: Apache-2.0
*/
&sai1 {
mclk-output;
};

2
samples/drivers/i2s/output/boards/mimxrt1060_evk_mimxrt1062_qspi_C.conf

@ -0,0 +1,2 @@
# Raise DMA TCD Queue size, as this is required by the I2S SAI driver
CONFIG_DMA_TCD_QUEUE_SIZE=4
Loading…
Cancel
Save