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:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user