Как использовать внешний кристалл 32 кГц для ESP32 S3 с Arduino IDE?

Я хочу использовать внешний кристалл с частотой 32 кГц для RTC с ESP32 S3, но я не видел ни одного примера или руководства для Arduino IDE. Даже когда я спросил ChatGPT, он дал мне несколько примеров, но код выдал ошибки библиотеки. Я не понимаю, почему в Arduino IDE нет примера RTC.

Я разработал печатную плату с этим SCH для RTC. Но я не знаю, как активировать внешний кристалл 32 кГц с помощью Arduino IDE. Подскажите, пожалуйста, как?

, 👍0


2 ответа


0

Из документации ESP32-S3 в разделе 2.4.2:< /п>

ESP32-S3 поддерживает внешний кристалл 32,768 кГц или внешний сигнал (например, генератор) в качестве RTC. часы для сна. Внешний источник часов RTC используется для повышения точности синхронизации и, таким образом, снижения среднего значения. энергопотребление, но не повлияет на функциональность.

Этот документ также содержит схему:

... предполагается, что речь идет о схеме модуля ESP32-S3-WROOM, с учетом различий между двумя схемами.

Из формулировки в документе следует, что существует только счетчик для отслеживания/управления состоянием сна процессора.

Это дополнительно подтверждается этим вопросом/ответом найдено на сайтеelectronics.stackexchange.com:

Модуль ESP32 RTC имеет только таймер, который работает даже в режиме гибернации, а также некоторый объем оперативной памяти, который он может сохранять в режиме глубокого сна...

... Никаких «настенных часов» не существует; или «календарь»; в модуле ESP32 RTC.

Если вы все еще заинтересованы во внедрении «настенных часов»; используя ESP32-S3, тот же вопрос/ответ stackexchange предлагает следующее:

У ESP32 нет часов реального времени — вы не можете указать ему, чтобы он просыпался в определенное время. У него есть таймер, который может вывести его из глубокого сна через определенное время.

Вы можете использовать таймер пробуждения для глубокого сна следующим образом:

esp_sleep_enable_timer_wakeup((uint64_t)sleepTimeSeconds * 1000000); esp_deep_sleep_start();

Вы устанавливаете таймер сна с помощью esp_sleep_enable_timer_wakeup. Период времени указан в микросекундах. Если таймер установлен, ESP32 автоматически выйдет из режима сна по истечении установленного периода времени.

Затем необходимо будет написать код, чтобы извлечь последний раз из энергонезависимой памяти ESP32-S3, увеличить его на 1 секунду, сохранить обратно в энергонезависимую память и снова перевести процессор в спящий режим на 1 секунду.

,

1

Это непростая задача: вам придется перекомпилировать ядро Arduino с включенным внешним RTC.

По сути, вам необходимо правильно установить параметр CONFIG_RTC_CLK_SRC в файле kconfig. Вам следует начать читать с здесь и практикуемся с конфигуратором ESP-IDF.

Я успешно выполнил эту операцию для ESP32-S2 несколько лет назад, но процедура очень похожа. Удачи.

,