
Гибкая настройка тактирования микроконтроллера rp2040 для проектов с батарейным питанием
svperchenko 1 час назад Гибкая настройка тактирования микроконтроллера rp2040 для проектов с батарейным питанием Средний 10 мин 2.2K Робототехника Программирование микроконтроллеров * Туториал Микроконтроллер RP2040...
Anthropic — What company has the best second artificial intelligence model at the end of June?
Вот важная новость с фронта ИИ: svperchenko 1 час назад Гибкая настройка тактирования микроконтроллера rp2040 для проектов с батарейным питанием Средний 10 мин 2. 2K Робототехника Программирование микроконтроллеров * Туториал Микроконтроллер RP2040 имеют очень гибкую и понятную систему тактирования, но вот настройка тактирования в нативном SDK реализована очень запутано. В рамках этой заметки я попытался разобраться как гибко настроить тактирование ядра и периферии для достижения необходимого уровня энергопотребления, а также как правильно переводить микроконтроллер в режим минимального энергопотребления для использования в проектах с батарейным питанием.
1 - схема тактирования RP2040Как видно из рис. 1, на котором показана схема тактирования, микроконтроллер имеет несколько источников тактового сигнала. Среди основных - это системный генератор PLL, который имеет широкую сетку частот.
Технические детали
Каждый блок контроллера, такой как ядро, периферийные устройства, USB или АЦП может брать тактовый сигнал из любого источника. Также для каждого блока имеется предделитель тактового сигнала и возможность его выключить. Выключение тактового сигнала полностью останавливает блок и, соответственно, снижает энергопотребление.
Настройка источника PLLДля начала давайте разберемся, как мы можем настроить блок PLL и какие частоты мы от него можем получить. Для этого, прежде всего, в код нужно включить заголовочный файл #include "hardware/clocks. h" и не забыть в файле CMakeLists.
txt в разделе подключение библиотек target_link_libraries прописать библиотеку hardware_clocks. SDK предоставляет верхнеуровневую функцию для установки системного тактового сигнала set_sys_clock_hz() от источника PLL, которая принимают желаемую частоту в герцах и возвращает результат успешно она установлена или нет. Расковыряв эту функцию мы видим, что установка частоты производится функцией void set_sys_clock_pll(uint32_t vco_freq, uint post_div1, uint post_div2) Которая принимает на вход три параметра: желаемую частоту ГУНа и два постделителя.
Отраслевые последствия
Однако не каждый набор параметров допустим. Для проверки допустимости параметров есть функция bool check_sys_clock_hz(uint32_t freq_hz, uint *vco_out, uint *postdiv1_out, uint *postdiv2_out), которая принимает на вход желаемую частоту в герцах и ссылки на результат для параметров PLL. Сама по себе эта функция (рис.
2) реализует просто перебор всех возможных допустимых значений параметров и проверки получаемой частоты на соответствие желаемой. Если соответствие не найдено, желаемая частота не является допустимой. 2 - функция проверки допустимости настроек PLLИсходным параметром тут является частота кварцевого генератора которая в моём случае равна 12 МГц.
Также ограничения накладывает диапазон частот генерации ГУНа, который для этого микроконтроллера составляет от 750 до 1600 МГц. Для того чтобы понять с какой сеткой частот мы можем работать я прогнал этот алгоритм отдельно и вывел параметры для всех доступных частот.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.




