Hardware: * Board: Waveshare ESP32-S3-AUDIO-Board (Dual Mic Array)
- Audio Pipeline: ES7210 (ADC) + ES8311 (DAC) + TCA9555 (I/O Expander)
- Environment: ESP-IDF / Arduino (I2C SDA=10, SCL=11)
Problem Description: I am experiencing a persistent initialization failure after a cold power cycle. If I flash the official Waveshare firmware first and then "warm-reset" into my custom build, the microphones and LEDs work perfectly. However, if I pull the power and boot directly into my build, the board remains "dead" the Green and Ring LEDs stay OFF, and the ES7210 returns silence/zeros.
The Evidence (Register Dumps): I performed a register dump of the working state (after official firmware) vs. the failing state (after cold boot).
1. TCA9555 (Address 0x20) - The Power/LED Controller:
- Warm (Working): Reg 0x06:
0x9C| Reg 0x02:0xFF - Cold (Failing): Reg 0x06:
0xFF| Reg 0x02:0xFF - Observation: After cold boot, the expander stays in the default "Input" mode (
0xFF), meaning the Power Amp Enable (PA_EN) and Codec Reset pins are likely floating or grounded.
2. ES7210 (Address 0x40) - The Microphone ADC:
- Warm (Working): Reg 0x00:
0x41| Reg 0x02:0xC1 - Cold (Failing): Reg 0x00:
0x32| Reg 0x02:0x02
What I have Tried:
- I2C Replay: I’ve attempted to manually write the "Warm" register values (
0x9Cto0x06on0x20, etc.) at the very start ofsetup(). - Timing: Added delays up to 1000ms to allow power rails to stabilize before I2C initialization.
- Clocking: Initialized the I2S driver first to ensure MCLK (GPIO 12) is active before sending I2C commands to the ES7210.
The Issue: Despite replaying these registers, the LEDs do not turn on and the microphones do not capture audio after a power cycle. It seems the TCA9555 is not accepting the configuration or there is a hidden power-sequencing dependency I am missing.
Questions:
- Is there a specific "Hard Reset" pin (GPIO) for the TCA9555 that must be toggled before I2C communication is possible?
- Does the ES7210 require a specific I2C "handshake" beyond the system and analog power registers to wake from a cold state?
- Are there any known power-management quirks with the 3.3V/5V rails on this board during cold boot?
Any help from someone who has successfully initialized this board from a cold state without using the full ESP-ADF components would be greatly appreciated.