fix(wio-tracker-l2): radios and codec idle when unused; buzzer and OTA fixes

- BLE (ESP32): fast advertising (20-30 ms) for 30 s, then 152.5 ms, as the
  nRF52 interface; the library default kept 30-60 ms forever
- Live map tiles: the WiFi drops after a minute with nothing missing
- ES8311 to standby while the I2S clocks are off, set up again before the
  amp comes on
- Buzzer: no channel (DMA out of memory) waits out the samples instead of
  spinning above the UI loop
- OTA: the image header check waits for its 16 bytes
- Comments: P10 is just the LED; the LCD SPI clock is 40 MHz on the wire

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jakub
2026-09-27 14:13:39 +02:00
co-authored by Claude Opus 5.5
parent 782f8aa567
commit 958627d6e9
10 changed files with 84 additions and 31 deletions
+15
View File
@@ -42,4 +42,19 @@ static bool begin(TwoWire& w, uint8_t addr) {
return true;
}
// Everything but the I2C interface off (esp-adf's es8311 suspend): DAC, ADC,
// references and the output driver. begin() brings it back, with MCLK running.
static bool standby(TwoWire& w, uint8_t addr) {
static const uint8_t SEQ[][2] = {
{ 0x32, 0x00 }, { 0x17, 0x00 }, { 0x0E, 0xFF }, { 0x12, 0x02 }, { 0x14, 0x00 },
{ 0x0D, 0xFA }, { 0x15, 0x00 }, { 0x37, 0x08 }, { 0x02, 0x10 },
{ 0x00, 0x00 }, { 0x00, 0x1F }, // state machine reset
{ 0x01, 0x30 }, { 0x01, 0x00 }, // clocks off
{ 0x45, 0x00 }, { 0x0D, 0xFC }, { 0x02, 0x00 },
};
for (size_t i = 0; i < sizeof(SEQ) / sizeof(SEQ[0]); i++)
if (!write(w, addr, SEQ[i][0], SEQ[i][1])) return false;
return true;
}
} // namespace es8311