espressif / esp-adf

Espressif Audio Development Framework
Other
1.5k stars 670 forks source link

Full duplex I2S (AUD-4930) #1088

Open mike-2020 opened 9 months ago

mike-2020 commented 9 months ago

I use ES8388 with ESP32S3. Use ES8388 for both DAC (tts stream) and ADC (speech recognition).

How can I create an I2S element supports both reader and writer?

i2s_stream_cfg_t i2s_cfg = I2S_STREAM_CFG_DEFAULT();
i2s_cfg.type = AUDIO_STREAM_READER;
i2s_stream_reader = i2s_stream_init(&i2s_cfg);

i2s_cfg = I2S_STREAM_CFG_DEFAULT();
i2s_cfg.type = AUDIO_STREAM_WRITER;
i2s_stream_writer = i2s_stream_init(&i2s_cfg);

code like above will produce errors:

E (919) i2s(legacy): i2s_check_cfg_validity(926): this i2s port is in use E (919) i2s(legacy): i2s_driver_install(1582): I2S configuration is invalid

jason-mao commented 9 months ago

The error may is warning, is it working properly?

mike-2020 commented 9 months ago

Yes, the message confused me, but it is working...

nilesfromm commented 8 months ago

Hi @mike-2020 I'm working on a project also using a custom board with ESP32S3 + ES8388 + NS4150, I've been trying to set up a minimal project using esp-adf for the past two days and haven't been able to get any audio out on my board. I haven't been able to find if it's a problem with hw or sw yet, any chance you could share the project you have working?

mike-2020 commented 8 months ago

@nilesfromm I cannot share my project. For software, you need create a custom board, and make sure its refereced by ADF. You can clone an existing board definition files, and modify those PINs.

For hardware, you may want to check: (1) ESP32S3's I2S Data out PIN should connect to ES8388's Data in PIN; (2) Give NS4150's Enable PIN a high valtage. If you have oscillograph, you may want to verify if clock/data output/input PINs work as expected.