
Микроконтроллеры AT32F435 и AT32F437 от Artery Technology представляют собой мощные устройства для широкого спектра встраиваемых приложений. Одним из ключевых аспектов работы с этими микроконтроллерами является правильная настройка тактовых сигналов, что обеспечивает стабильную и эффективную работу системы. В этой статье мы рассмотрим основы работы с тактовой системой AT32F435/437, используя официальное руководство AN0084.
Введение в тактовую систему AT32F435/437
Тактовая система (Clock and Reset Management, CRM) — это фундаментальный компонент любого микроконтроллера, определяющий его производительность и энергопотребление. В AT32F435/437 тактовая система предлагает гибкие возможности настройки:
- Три основных источника системного тактового сигнала (SCLK):
- HEXT (высокоскоростной внешний генератор 4-25 МГц)
- HICK (внутренний RC-генератор 48 МГц или 8 МГц)
- PLL (программируемый умножитель частоты)
- Возможность генерации тактовых сигналов для различных шин (AHB, APB1, APB2) с индивидуальными делителями частоты
- Поддержка специальных функций, таких как детектор сбоя тактового сигнала
Методы конфигурации тактовой системы
Руководство AN0084 описывает два основных подхода к настройке тактовой системы:
1. Ручная настройка с использованием библиотечных функций
Для ручной настройки используются функции из библиотеки BSP (Board Support Package) от Artery. Основные шаги конфигурации:
- Сброс CRM (
crm_reset()
) - Установка делителя для Flash-памяти
- Настройка источника тактового сигнала (HEXT/HICK)
- Конфигурация PLL
- Установка делителей для шин
- Переключение системного тактового сигнала
- Обновление частоты ядра
Пример конфигурации для получения 288 МГц:
void system_clock_config(void)
{
crm_reset();
flash_clock_divider_set(FLASH_CLOCK_DIV_3);
// Настройка HEXT
crm_clock_source_enable(CRM_CLOCK_SOURCE_HEXT, TRUE);
while(crm_hext_stable_wait() == ERROR) {}
// Конфигурация PLL: 8MHz * 144 / (1 * 4) = 288MHz
crm_pll_config(CRM_PLL_SOURCE_HEXT, 144, 1, CRM_PLL_FR_4);
crm_clock_source_enable(CRM_CLOCK_SOURCE_PLL, TRUE);
while(crm_flag_get(CRM_PLL_STABLE_FLAG) != SET) {}
// Настройка делителей шин
crm_ahb_div_set(CRM_AHB_DIV_1);
crm_apb2_div_set(CRM_APB2_DIV_2);
crm_apb1_div_set(CRM_APB1_DIV_2);
// Переключение на PLL
crm_auto_step_mode_enable(TRUE);
crm_sysclk_switch(CRM_SCLK_PLL);
while(crm_sysclk_switch_status_get() != CRM_SCLK_PLL) {}
crm_auto_step_mode_enable(FALSE);
system_core_clock_update();
}
2. Использование графического инструмента Clock Configuration Tool
Artery предоставляет удобный графический инструмент для настройки тактовой системы. Основные возможности:
- Визуальное представление тактовой системы
- Автоматический расчет параметров PLL
- Генерация готового кода для интеграции в проект
Работа с инструментом включает:
- Создание нового проекта
- Выбор микроконтроллера
- Настройка параметров тактовой системы
- Генерация кода
Практические примеры
Пример 1: Переключение системного тактового сигнала
Демонстрирует динамическое переключение между разными частотами (64 МГц и 96 МГц) во время работы:
void switch_system_clock(void)
{
static uint8_t clock_source = 0;
if(clock_source == 0)
{
sclk_96m_hext_config();
clock_source = 1;
}
else
{
sclk_64m_hick_config();
clock_source = 0;
}
}
Пример 2: Детектор сбоя тактового сигнала
Показывает, как обрабатывать сбои внешнего генератора:
void NMI_Handler(void)
{
if(crm_flag_get(CRM_CLOCK_FAILURE_INT_FLAG) != RESET)
{
crm_clock_failure_detection_enable(FALSE);
sclk_288m_hick_config(); // Аварийный переход на внутренний генератор
crm_flag_clear(CRM_CLOCK_FAILURE_INT_FLAG);
}
}
Пример 3: Автоматический расчет параметров PLL
Демонстрирует автоматический подбор параметров PLL для заданной частоты:
error_status calculate_status;
uint16_t pll_ns, pll_ms, pll_fr;
calculate_status = crm_pll_parameter_calculate(
CRM_PLL_SOURCE_HEXT,
200000000,
&pll_ns,
&pll_ms,
&pll_fr
);
Рекомендации и советы
- При использовании внешнего генератора (HEXT) с частотой, отличной от 8 МГц, необходимо:
- Указать фактическую частоту в инструменте конфигурации
- Обновить значение
HEXT_VALUE
в файлеat32f4xx_conf.h
- Для частот PLL выше 108 МГц обязательно включать режим плавного переключения (
crm_auto_step_mode_enable
) - При настройке USB необходимо обеспечить точные 48 МГц, для чего можно использовать:
- HICK 48 МГц
- PLL с соответствующим делителем
- Для отладки рекомендуется использовать вывод CLKOUT для мониторинга тактового сигнала
Итоги
Микроконтроллеры AT32F435/437 предлагают гибкую и мощную тактовую систему, которая при правильной настройке позволяет достичь оптимального баланса между производительностью и энергопотреблением. Использование официальных инструментов и библиотек от Artery значительно упрощает процесс конфигурации и позволяет избежать распространенных ошибок.
Для более глубокого изучения рекомендуется:
- Изучить полное руководство по микроконтроллеру (Reference Manual)
- Поэкспериментировать с примерами из BSP
- Использовать Clock Configuration Tool для визуального представления тактовой системы
- Проверять стабильность работы на разных частотах с помощью осциллографа
Правильная настройка тактовой системы — это первый шаг к созданию стабильного и эффективного устройства на базе AT32F435/437.