ESP32S2 I2S and MQTT Error
Posted: Sun Sep 19, 2021 9:44 am
Dear All,
I am using I2S to play audio files and MQTT to transfer these audio files between devices and saving to SPIFFS. I have a curious problem where I can create and play audio files on the same device and never run into any issues. However, if i create a file on device A and then send it to the second device B, file approximately 100KB, writing to the SPIFFS this all works fine. But then playback causes a kernel panic with the following error:
I changed the i2s error to give the err code which is 261 or 0x150 which indicates that the resource is not available.
There seems to be some shared IRQ between I2S and the MQTT library? I am not sure which way to investigate this.
I am using I2S to play audio files and MQTT to transfer these audio files between devices and saving to SPIFFS. I have a curious problem where I can create and play audio files on the same device and never run into any issues. However, if i create a file on device A and then send it to the second device B, file approximately 100KB, writing to the SPIFFS this all works fine. But then playback causes a kernel panic with the following error:
Code: Select all
I (811131) I2S_Audio: Start playing
E (811141) I2S: Register I2S Interrupt error: 261
Guru Meditation Error: Core 0 panic'ed (LoadProhibited). Exception was unhandled.
Core 0 register dump:
PC : 0x400c98fe PS : 0x00060830 A0 : 0x800a1ff6 A1 : 0x3ffd6c40
0x400c98fe: i2s_set_pin at C:/Users/mpwir/esp/esp-idf/components/driver/i2s.c:780
A2 : 0x00000000 A3 : 0x3ffd0c54 A4 : 0x0000000a A5 : 0x00000000
A6 : 0x3ffd1d00 A7 : 0x00000000 A8 : 0x00000000 A9 : 0x3ffd6bf0
A10 : 0x00000001 A11 : 0x3f019eec A12 : 0x3f01a4b4 A13 : 0x000c6085
A14 : 0x3f019eec A15 : 0x00000105 SAR : 0x0000000a EXCCAUSE: 0x0000001c
EXCVADDR: 0x0000002c LBEG : 0x3f01a4b4 LEND : 0x000c6085 LCOUNT : 0x40026bbd
0x40026bbd: _xt_user_exc at C:/Users/mpwir/esp/esp-idf/components/freertos/port/xtensa/xtensa_vectors.S:627
Backtrace:0x400c98fb:0x3ffd6c40 0x400a1ff3:0x3ffd6c80 0x4008bfa3:0x3ffd6cd0 0x4008c03b:0x3ffd6cf0 0x400899cb:0x3ffd6d10 0x400a0f0d:0x3ffd6d30 0x400a0fff:0x3ffd6d50 0x40089081:0x3ffd6d70 0x400890aa:0x3ffd6da0 0x40032365:0x3ffd6dc0
0x400c98fb: i2s_set_pin at C:/Users/mpwir/esp/esp-idf/components/driver/i2s.c:780
0x400a1ff3: I2SOutput::start(int) at C:/Users/mpwir/esp/FL_Standard/components/i2saudio/I2SOutput.cpp:26
0x4008bfa3: play(Output*, char const*) at c:\users\mpwir\esp\fl_standard\standard_lamp\build/../main/app_audio.cpp:197
0x4008c03b: audio_play at c:\users\mpwir\esp\fl_standard\standard_lamp\build/../main/app_audio.cpp:237
0x400899cb: button_audio_play_cb at c:\users\mpwir\esp\fl_standard\standard_lamp\build/../main/app_driver.c:353 (discriminator 15)
0x400a0f0d: button_handler at C:/Users/mpwir/esp/FL_Standard/components/button/iot_button.c:122 (discriminator 1)
0x400a0fff: button_cb at C:/Users/mpwir/esp/FL_Standard/components/button/iot_button.c:171 (discriminator 3)
0x40089081: timer_process_alarm at C:/Users/mpwir/esp/esp-idf/components/esp_timer/src/esp_timer.c:330
0x400890aa: timer_task at C:/Users/mpwir/esp/esp-idf/components/esp_timer/src/esp_timer.c:349 (discriminator 1)
0x40032365: vPortTaskWrapper at C:/Users/mpwir/esp/esp-idf/components/freertos/port/xtensa/port.c:168
There seems to be some shared IRQ between I2S and the MQTT library? I am not sure which way to investigate this.