ESP32-C3: API-функции ESP-IDF управления ШИМ-контроллером LEDC |
Добавил(а) microsin | ||||||||||||||||||||||||||||||||||||||||||||||||
ШИМ-контроллер для управления яркостью светодиодов (LEDC) микроконтроллера ESP32-C3 очень мало отличается от ESP32, поэтому можно руководствоваться описанием LEDC ESP32 [2], учитывая эти различия. Эта статья посвящена как раз отличиям контроллера LEDC чипов ESP32 и ESP32-C3. Общее описание отличий сведено в таблицу:
Примечания: (1) Все таймеры и каналы контроллера ШИМ LEDC чипа ESP32-C3 поддерживают только низкоскоростной режим. [ESP32]
[ESP32-C3]
Примечания: 1. На ESP32-C3 если для LEDC выбран в качестве тактов RTCxM_CLK, то будет выполнена внутренняя калибровка для получения точной частоты тактов. Это гарантирует точность частоты выходного сигнала PWM. [Изменение сигнала PWM] Как только канал начнет работать и генерировать сигнал PWM с постоянной скважностью, есть несколько способов поменять этот сигнал. Когда осуществляется управление LED, меняется главным образом яркость свечения. В следующих двух секциях описывается, как менять скважность с помощью аппаратного и программного фейдинга. Если необходимо, также можно поменять частоту сигнала, это рассматривается в секции "Изменение частоты PWM". Изменение скважности программно. Для установки скважности периода PWM используйте специальную функцию ledc_set_duty(). После этого вызовите ledc_update_duty() для активации изменений. Для проверки текущего установленного значения скважности используйте соответствующую функцию ledc_get_duty(). Другой способ установки скважности, как и некоторых других параметров, это вызов ledc_channel_config(), см. выше секцию "Конфигурация канала". Диапазон передаваемых значений для изменения скважности зависит от выбранной разрешающей способности (duty_resolution), и значение должно быть от 0 до (2duty_resolution) - 1. Например, если выбранная разрешающая способность 10 (duty_resolution=10), то скважность может быть в диапазоне от 0 до 1023. Это дает точность установки уровня примерно 0.1%. Изменение скважности аппаратно. Аппаратура LEDC обеспечивает способ плавного изменения скважности от одного значения к другому. Для использования этой возможности разрешите фейдинг функцией ledc_fade_func_install(), и затем сконфигурируйте её вызовом одной из следующих доступных функций фейдинга: ledc_set_fade_with_time() Фейдинг начинается вызовом ledc_fade_start(). Фейдинг может работать в режиме блокирования или без блокирования, см. ledc_fade_mode_t для двух различных отличающихся режимов фейдинга. Обратите внимание, что в любом из этих двух режимов следующий фейдинг или обновление на фиксированную скважность не даст эффект, пока не завершится последний процесс фейдинга. Для получения оповещения о завершении операции фейдинга может быть зарегистрирована соответствующая callback-функция путем вызова ledc_cb_register() после того, как была установлена служба фейдинга. Если больше не требуется фейдинг и связанное с ним прерывание, то фейдинг может быть запрещен вызовом ledc_fade_func_uninstall(). Изменение частоты PWM. LEDC API предоставляет несколько способов поменять частоту PWM "на лету": • Установка частоты вызовом ledc_set_freq(). Имеется комплементарная функция ledc_get_freq() для проверки текущей частоты. [Ссылки] 1. ESP32-C3 LED Control (LEDC) site:docs.espressif.com. |