Harden Si4684 RSTB config and document power sequencing.

Enable GPIO_PULLDOWN_ENABLE during gpio_config so RSTB cannot glitch high before gpio_set_level(0), and add manual validation notes explaining why the internal pull-down complements the external one.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-07 08:34:52 +02:00
co-authored by Cursor
parent de0b120551
commit 2e44a166e1
4 changed files with 178 additions and 1 deletions
@@ -96,7 +96,14 @@ public:
Si4684Driver& operator=(const Si4684Driver&) = delete;
/**
* @brief boot — cold-start: load patch, image, and configure I/O.
* @brief boot — cold-start: pulse RSTB#, load patch/image, configure I/O.
*
* @details Pulses RSTB# (active-low reset): gpio_config enables the ESP32
* internal pull-down while switching GPIO38 to output so the net
* cannot glitch high before gpio_set_level(0). That guards the
* Si4684 datasheet rule that RSTB must stay low until supplies are
* stable; the board's external pull-down already holds RSTB during
* rail ramp before app_main runs.
*
* @dname boot
* @param band DAB or FM application to load.
@@ -389,6 +389,7 @@ std::expected<void, Si4684Error> Si4684Driver::boot(Si4684Band band)
gpio_config_t rstCfg = {};
rstCfg.pin_bit_mask = 1ULL << pins_.rstbGpio;
rstCfg.mode = GPIO_MODE_OUTPUT;
rstCfg.pull_down_en = GPIO_PULLDOWN_ENABLE;
if (gpio_config(&rstCfg) != ESP_OK) {
return std::unexpected(Si4684Error::ResetFailed);
}