esp-idf/components/hal/esp32s3
Ivan Grokhotkov 5b54ae76d4 esp_timer, hal: add support for non-integer systimer frequency
When ESP32-C2 is paired with a 26 MHz XTAL, the systimer tick
frequency becomes equal to 26 / 2.5 = 10.4 MHz. Previously we always
assumed that systimer tick frequency is integer (and 1 MHz * power of
two, above that!).
This commit introduces a new LL macro, SYSTIMER_LL_TICKS_PER_US_DIV.
It should be set in such a way that:

1. SYSTIMER_LL_TICKS_PER_US / SYSTIMER_LL_TICKS_PER_US_DIV equals the
   actual systimer tick frequency,
2. and SYSTIMER_LL_TICKS_PER_US is integer.

For ESP32-C2 this means that SYSTIMER_LL_TICKS_PER_US = 52 and
SYSTIMER_LL_TICKS_PER_US_DIV = 5.

This introduced two possible issues:

1. Overflow when multiplying systimer counter by 5
   - Should not be an issue, since systimer counter is 52-bit, so
     counter * 5 is no more than 55-bit.
2. The code needs to perform:
   - divide by 5: when converting from microseconds to ticks
   - divide by 52: when converting from ticks to microseconds
   The latter potentially introduces a performance issue for the
   esp_timer_get_time function.
2022-07-11 12:24:37 +08:00
..
include/hal esp_timer, hal: add support for non-integer systimer frequency 2022-07-11 12:24:37 +08:00
brownout_hal.c G0: Support Xtensa targets for G0-only compilation 2022-06-20 11:34:20 +00:00
efuse_hal.c efuse: Adds major and minor versions and others 2022-07-05 14:38:27 +08:00
hmac_hal.c [esp_hw_support]: HMAC upstream support for S3 2021-08-13 12:01:06 +08:00
rtc_cntl_hal.c light sleep: add i/d-cache tagmem retention support for esp32s3 2021-08-27 11:11:09 +08:00
touch_sensor_hal.c touch_sensor: apply general check 2021-10-08 11:32:12 +08:00