mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
fix(rmt): set rx filter resolution_hz to rmt_sclk
Fixes assignment of `filter_clock_resolution_hz` to `rx_channel->base.resolution_hz`, which is the clock frequency after the fractional divider `RMT_SCLK_DIV` (also referenced as `rmt_sclk` in the TRM), instead of the previously used value from `group->resolution_hz`, which represents the full undivided frequency from clock selected by `RMT_SCLK_SEL` (APB, RC_FAST or XTAL).
Before this fix, this mixup resulted in error `signal_range_min_ns too big` returned by the `rmt_receive` function due to the check at 8e4454b285/components/esp_driver_rmt/src/rmt_rx.c (L410-L413)
failing no matter the `resolution_hz` used in configuration of the channel.
This commit is contained in:
parent
8e4454b285
commit
f92bff6009
@ -283,7 +283,7 @@ esp_err_t rmt_new_rx_channel(const rmt_rx_channel_config_t *config, rmt_channel_
|
|||||||
ESP_LOGW(TAG, "channel resolution loss, real=%"PRIu32, rx_channel->base.resolution_hz);
|
ESP_LOGW(TAG, "channel resolution loss, real=%"PRIu32, rx_channel->base.resolution_hz);
|
||||||
}
|
}
|
||||||
|
|
||||||
rx_channel->filter_clock_resolution_hz = group->resolution_hz;
|
rx_channel->filter_clock_resolution_hz = rx_channel->base.resolution_hz;
|
||||||
// On esp32 and esp32s2, the counting clock used by the RX filter always comes from APB clock
|
// On esp32 and esp32s2, the counting clock used by the RX filter always comes from APB clock
|
||||||
// no matter what the clock source is used by the RMT channel as the "core" clock
|
// no matter what the clock source is used by the RMT channel as the "core" clock
|
||||||
#if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32S2
|
#if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32S2
|
||||||
|
Loading…
Reference in New Issue
Block a user