Микроконтроллер ESP32-C3, установленный на платы быстрой разработки NodeMCU ESP-C3-13 Kit (ESP-C3-32S Kit), поддерживает 4 независимых канала с Sigma-Delta модуляцией второго порядка.
Сигма-дельта каналы модуляции, по английски Sigma-Delta, преобразует аналоговый сигнал напряжения в частоту импульсов или плотность импульсов, что можно понимать как модуляцию плотности импульсов (PDM).
sigmaDeltaSetup функция используется для настройки подключения к GPIO и частоты и выбранного Sigma-Delta канала :
double sigmaDeltaSetup(uint8_t pin, uint8_t channel, double freq);
- pin номер IO вывода GPIO,
- channel номер канала LEDC, выбранного для настройки (0 - 3),
- freq частота генератора, до 16383Гц (14 бит).
Если эта функция возвращает 0, возникла ошибка, и канал Sigma-Delta не был настроен.
sigmaDeltaWrite функция используется для установки коэффициента заполнения SigmaDelta канала:
void sigmaDeltaWrite(uint8_t chan, uint8_t duty);
- chan номер SigmaDelta канала для записи.
- duty режим работы канала.
Ниже следующая программа плавно меняет яркость жёлтого светодиода на плате NodeMCU ESP-C3-13 Kit (ESP-C3-32S Kit) в противофазе с белым.
void setup()
{
//setup on IO18, channel 0 with frequency 16383 Hz
sigmaDeltaSetup(18, 0, 16383);
}
void loop()
{
static uint8_t i = 0;
sigmaDeltaWrite(0, i++); // i переполнится при 256
delay(20);
}
Лист. 1. Программа Sigma-Delta для NodeMCU ESP-C3-13 Kit (ESP-C3-32S Kit)
Рис. 1. Параметр duty = 64.
Литература:
https://docs.espressif.com/projects/arduino-esp32/en/latest/api/sigmadelta.html