From b35982d5212090fb8c8ff1a97d180d84c631b2e4 Mon Sep 17 00:00:00 2001 From: laokaiyao Date: Fri, 13 Jun 2025 16:34:38 +0800 Subject: [PATCH] fix(touch): fixed touch interval freq unit convert issue --- .../esp_driver_touch_sens/hw_ver1/touch_version_specific.c | 3 +-- .../esp_driver_touch_sens/hw_ver2/touch_version_specific.c | 3 +-- .../esp_driver_touch_sens/hw_ver3/touch_version_specific.c | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/components/esp_driver_touch_sens/hw_ver1/touch_version_specific.c b/components/esp_driver_touch_sens/hw_ver1/touch_version_specific.c index e53365347c..e85f638ba1 100644 --- a/components/esp_driver_touch_sens/hw_ver1/touch_version_specific.c +++ b/components/esp_driver_touch_sens/hw_ver1/touch_version_specific.c @@ -168,11 +168,10 @@ static esp_err_t s_touch_convert_to_hal_config(touch_sensor_handle_t sens_handle } uint32_t src_freq_mhz = sens_handle->src_freq_hz / 1000000; - uint32_t interval_freq_mhz = sens_handle->interval_freq_hz / 1000000; hal_cfg->power_on_wait_ticks = (uint32_t)sens_cfg->power_on_wait_us * src_freq_mhz; hal_cfg->power_on_wait_ticks = hal_cfg->power_on_wait_ticks > TOUCH_LL_PAD_MEASURE_WAIT_MAX ? TOUCH_LL_PAD_MEASURE_WAIT_MAX : hal_cfg->power_on_wait_ticks; - hal_cfg->meas_interval_ticks = (uint32_t)(sens_cfg->meas_interval_us * interval_freq_mhz); + hal_cfg->meas_interval_ticks = (uint32_t)(sens_cfg->meas_interval_us * sens_handle->interval_freq_hz / 1000000); sens_handle->is_below_trig = sens_cfg->intr_trig_mode == TOUCH_INTR_TRIG_ON_BELOW_THRESH; hal_cfg->intr_trig_mode = sens_cfg->intr_trig_mode; diff --git a/components/esp_driver_touch_sens/hw_ver2/touch_version_specific.c b/components/esp_driver_touch_sens/hw_ver2/touch_version_specific.c index 99d2e29f59..4882c3b8da 100644 --- a/components/esp_driver_touch_sens/hw_ver2/touch_version_specific.c +++ b/components/esp_driver_touch_sens/hw_ver2/touch_version_specific.c @@ -173,11 +173,10 @@ static esp_err_t s_touch_convert_to_hal_config(touch_sensor_handle_t sens_handle } uint32_t src_freq_mhz = sens_handle->src_freq_hz / 1000000; - uint32_t interval_freq_mhz = sens_handle->interval_freq_hz / 1000000; hal_cfg->power_on_wait_ticks = (uint32_t)sens_cfg->power_on_wait_us * src_freq_mhz; hal_cfg->power_on_wait_ticks = hal_cfg->power_on_wait_ticks > TOUCH_LL_PAD_MEASURE_WAIT_MAX ? TOUCH_LL_PAD_MEASURE_WAIT_MAX : hal_cfg->power_on_wait_ticks; - hal_cfg->meas_interval_ticks = (uint32_t)(sens_cfg->meas_interval_us * interval_freq_mhz); + hal_cfg->meas_interval_ticks = (uint32_t)(sens_cfg->meas_interval_us * sens_handle->interval_freq_hz / 1000000); hal_cfg->timeout_ticks = (uint32_t)sens_cfg->max_meas_time_us * src_freq_mhz; ESP_RETURN_ON_FALSE(hal_cfg->timeout_ticks <= TOUCH_LL_TIMEOUT_MAX, ESP_ERR_INVALID_ARG, TAG, "max_meas_time_ms should within %"PRIu32" ms", TOUCH_LL_TIMEOUT_MAX / (sens_handle->src_freq_hz / 1000)); diff --git a/components/esp_driver_touch_sens/hw_ver3/touch_version_specific.c b/components/esp_driver_touch_sens/hw_ver3/touch_version_specific.c index 9cbb095175..8b00186525 100644 --- a/components/esp_driver_touch_sens/hw_ver3/touch_version_specific.c +++ b/components/esp_driver_touch_sens/hw_ver3/touch_version_specific.c @@ -153,11 +153,10 @@ static esp_err_t s_touch_convert_to_hal_config(touch_sensor_handle_t sens_handle uint32_t src_freq_hz = sens_handle->src_freq_hz; uint32_t src_freq_mhz = src_freq_hz / 1000000; - uint32_t interval_freq_mhz = sens_handle->interval_freq_hz / 1000000; hal_cfg->power_on_wait_ticks = (uint32_t)sens_cfg->power_on_wait_us * src_freq_mhz; hal_cfg->power_on_wait_ticks = hal_cfg->power_on_wait_ticks > TOUCH_LL_PAD_MEASURE_WAIT_MAX ? TOUCH_LL_PAD_MEASURE_WAIT_MAX : hal_cfg->power_on_wait_ticks; - hal_cfg->meas_interval_ticks = (uint32_t)(sens_cfg->meas_interval_us * interval_freq_mhz); + hal_cfg->meas_interval_ticks = (uint32_t)(sens_cfg->meas_interval_us * sens_handle->interval_freq_hz / 1000000); hal_cfg->timeout_ticks = (uint32_t)sens_cfg->max_meas_time_us * src_freq_mhz; ESP_RETURN_ON_FALSE(hal_cfg->timeout_ticks <= TOUCH_LL_TIMEOUT_MAX, ESP_ERR_INVALID_ARG, TAG, "max_meas_time_ms should within %"PRIu32, TOUCH_LL_TIMEOUT_MAX / src_freq_mhz);