ESP32: сброс и тактирование |
![]() |
Добавил(а) microsin | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
У ESP32 есть 3 уровня сброса: CPU reset, Core reset и System reset. Ни один из этих уровней сброса не очищают содержимое RAM. На рис. 5 показаны подсистемы, которые включены в каждый уровень сброса. Примечание: здесь приведен перевод главы "Reset and Clock" документации [1]. Незнакомые термины и сокращения см. в Словарике, в конце статьи. Рис. 5. System Reset. CPU reset: сбрасываются только регистры одного или обоих ядер CPU. [Источник сброса] Хотя чаще всего оба ядра APP_CPU и PRO_CPU будут сброшены одновременно, некоторые источники сброса могут сбросить только одно из этих двух ядер. Причина сброса для каждого ядра можно выяснить по отдельности: причина сброса PRO_CPU будет сохранена в RTC_CNTL_RESET_CAUSE_PROCPU, и причина сброса APP_CPU будет в RTC_CNTL_RESET_CAUSE_APPCPU. Таблица 9 показывает возможные значения причины сброса, которые можно прочитать из этих регистров. Таблица 9. Значения, кодирующие причины сброса ядер PRO_CPU и APP_CPU.
[Тактирование системы (System Clock)] ESP32 интегрирует на кристалле несколько источников тактирования для ядер CPU, периферийных устройств и RTC. Эти такты могут быть сконфигурированы таким образом, чтобы удовлетворить различным требованиям. Рис. 6 показывает структуру тактирования системы. Рис. 6. System Clock. Источник тактов. ESP32 может использовать внешний кварцевый генератор, внутреннюю систему PLL, или схему генерации в качестве источника тактов. Существуют следующие виды источников тактирования: • Высокоскоростные такты (High Speed Clock) – PLL_CLK это внутренние такты с частотой 320 МГц или 480 МГц. • Такты с низким энергопотреблением (Low Power Clock) – XTL32K_CLK это такты, генерируемые от внешнего кварца с частотой 32.768 кГц. • Audio Clock – APLL_CLK это внутренние такты Audio PLL clock с диапазоном частот 16 .. 128 МГц. Такты CPU. Как показывает рис. 6, CPU_CLK это главный источник тактов для обоих ядер CPU. Частота CPU_CLK может достигать 240 МГц, когда CPU находится в режиме повышенной производительности (high performance mode). Альтернативно CPU может работать на пониженных частотах, чтобы снизить энергопотребление. Источник тактов CPU_CLK определяется регистром RTC_CNTL_SOC_CLK_SEL. PLL_CLK, APLL_CLK, RTC8M_CLK, и XTL_CLK могут быть установлены как источник для CPU_CLK, см. таблицы 10 и 11. Таблица 10. Источник тактов для CPU_CLK.
Таблица 11. Формирование частоты тактов CPU_CLK.
Примечание (*): SEL_0 это значение в регистре RTC_CNTL_SOC_CLK_SEL, SEL_1 значение в регистре CPU_CPUPERIOD_SEL. [Тактирование периферийных устройств] Такты периферии включают APB_CLK, REF_TICK, LEDC_SCLK, APLL_CLK и PLL_D2_CLK. Таблица 12 показывает, какие такты могут использоваться определенными периферийными устройствами. Таблица 12. Использование тактов периферийными устройствами.
APB_CLK. Такты APB_CLK формируются из CPU_CLK, как показано в таблице 13. Коэффициент деления зависит от источника тактов для CPU_CLK. Таблица 13. Получение тактов APB_CLK.
REF_TICK. Такты REF_TICK получаются из APB_CLK с помощью делителя частоты. Значение делителя зависит от источника APB_CLK, которые в свою очередь зависят от источника CPU_CLK. Путем конфигурирования правильных значений делителя для каждого источника APB_CLK пользователь может гарантировать, что частота REF_TICK не поменяется из-за изменения частоты APB_CLK. Регистры делителя показаны в таблице 14. Таблица 14. Получение тактов REF_TICK.
LEDC_SCLK. Источник тактов LEDC_SCLK выбирается регистром LEDC_APB_CLK_SEL, как показано в таблице 15. Таблица 15. Получение тактов LEDC_SCLK.
APLL_SCLK. APLL_CLK в качестве источника тактов использует PLL_CLK. Частота APLL_CLK настраивается с помощью регистров конфигурации APLL. PLL_D2_CLK. Эта частота равна половине PLL_CLK. Большинство периферийных устройств используют для своей работы частоту APB_CLK. Когда эта частота изменяется, периферийным устройствам понадобится обновить свою конфигурацию тактирования, чтобы работать на нужной частоте. Периферийные устройства, которые используют REF_TICK, могут продолжать нормальную работу, когда переключается источник тактирования, без изменения своих параметров. Подробности см. в таблице 12. Модуль LED PWM может использовать RTC8M_CLK в качестве источников тактов, когда такты APB_CLK запрещены. Другими словами, когда система переходит в режим пониженного энергопотребления (см. главу "Power Management" в даташите [1]), обычные периферийные устройства останавливаются (поскольку такты APB_CLK выключены), однако LED PWM может нормально работать от тактов RTC8M_CLK. [Такты Wi-Fi и Bluetooth] Wi-Fi и Bluetooth могут работать только если APB_CLK в качестве источника тактов использует PLL_CLK. Приостановка PLL_CLK требует предварительного перевода обоих блоков Wi-Fi и Bluetooth в режим пониженного энергопотребления (low-power consumption mode). Для LOW_POWER_CLK один из источников тактов RTC_CLK, SLOW_CLK, RTC8M_CLK или XTL_CLK может быть выбран в качестве тактов режима пониженного энергопотребления для блоков Wi-Fi и Bluetooth. [Такты RTC] Такты SLOW_CLK и FAST_CLK формируются от низкочастотных тактов, потребляющих небольшое количество энергии. Модуль RTC может работать, когда остановлено большинство других тактов. SLOW_CLK используется для тактирования модуля управления электропитанием (Power Management module). Эти такты могут формироваться от RTC_CLK, XTL32K_CLK или RTC8M_D256_CLK. FAST_CLK используется для тактирования модуля On-chip Sensor. Эти такты могут формироваться из XTL_CLK или RTC8M_CLK. [Audio PLL] Работа аудиоустройств и других критичных по времени приложений для передачи данных требуют тщательно сконфигурированных, точных источников тактирования с малым джиттером. Источники тактов, формируемые из системных тактов, которые обслуживают цифровые периферийные устройства, могут содержать дрожание перепадов периодов (джиттер), и по этой причине не могут поддерживать точное формирование тактовой частоты. Наличие встроенного источника прецизионных синхросигналов позволяет минимизировать затраты на всю систему. С этой целью в ESP32 интегрирован блок Audio PLL. Формула вычисления частоты Audio PLL: fxtal(sdm2 + sdm1/28 + sdm0/216 + 4) В этой формуле используются следующие параметры. fxtal: частота кварцевого резонатора, обычно 40 МГц. Рабочая частота в числителе формулы 1 находится в диапазоне от 350 МГц до 500 МГц: 350 < fxtal(sdm2 + sdm1/28 + sdm0/216 + 4) < 500 (Формула 2) Обратите внимание, что sdm1 и sdm0 недоступны в revision0 кристалла ESP32. Обратитесь к документации [2] для получения информации по исправлениям в ревизиях ESP32. Audio PLL может быть разрешена или запрещена вручную через регистры RTC_CNTL_PLLA_FORCE_PU и RTC_CNTL_PLLA_FORCE_PD соответственно. Запрет имеет приоритет над разрешением. Когда RTC_CNTL_PLLA_FORCE_PU и RTC_CNTL_PLLA_FORCE_PD равны 0, PLL будет следовать состоянию системы, например когда система входит в sleep mode, PLL будет запрещена автоматически; когда система пробуждается, работа PLL будет автоматически разрешена. [Словарик] APB Advanced Peripheral Bus, продвинутая шина для периферийных устройств. APP_CPU ядро, предназначенное для обработки кода приложения. DIV DIVider, делитель частоты. ECO Engineering Change Orders, указания по исправлению ошибок кристалла в зависимости от его версии [2]. GPIO General-Purpose Input/Output, порты ввода/вывода общего назначения. LED Light Emitting Diode, светодиод. LEDC контроллер ШИМ для светодиодов (LED Controller). PLL Phase Locked Loop, фазовая автоподстройка частоты, ФАПЧ. PMU Power Management Unit, блок управления питанием. PWM Pulse Width Modulation, широтно-импульсная модуляция, ШИМ. REF источник опорной частоты тактов. Используется для отсчета реального временив приложении (частота тиков). RWDT сброс от сторожевого таймера. PRO_CPU ядро, предназначенное для обработки кода протоколов. RTC Real Time Clock, часы реального времени. ULP Ultra-Low Power, блок управления режимами пониженного энергопотребления. WDT WatchDog Timer, сторожевой таймер. [Ссылки] 1. ESP32 Technical Reference Manual site:docs.espressif.com. |