СОВРЕМЕННАЯ ЭЛЕКТРОНИКА №3/2013

частота блока умножителя часто ты должна быть в диапазоне от 2 до 16 МГц, а выходная частота может до стигать 100 МГц. При выходе блока умножителя тактовой частоты в рас четный режим вырабатывается сигнал PLLCPURDY в регистре CLOCK_STATUS. Блок включается с помощью сигнала PLLCPUON в регистре PLL_CONTROL. Выходная частота используется как основная частота процессора и пери ферии. В СТРОЕННЫЙ БЛОК УМНОЖЕНИЯ USB ТАКТОВОЙ ЧАСТОТЫ Для использования встроенного в МК USB контроллера нужно иметь строго фиксированную тактовую час тоту 48МГц. Чтобыиметь возможность для основной программы задавать дру гие значения тактовой частоты, пред усмотрен дополнительный умножи тель частоты, предназначенный имен но для USB. Блок умножения позволяет провести умножение входной тактовой частоты на коэффициент от 2 до 16, задавае мый на входе PLLUSBMUL[3:0] в регист ре PLL_CONTROL. Входная частота бло ка умножителя должна быть в диапазо не от 2 до 16 МГц, а выходная должна составлять 48 МГц. При выходе блока умножителя так товой частоты в расчётный режим вы рабатывается сигнал PLLUSBRDY в ре гистре CLOCK_STATUS. Блок включает ся с помощью сигнала PLLUSBON в ре гистре PLL_CONTROL. Выходная часто та используется как основная частота протокольной части USB интерфейса. У ПРАВЛЕНИЕ ТАКТОВЫМИ ЧАСТОТАМИ ВСТРОЕННЫХ УЗЛОВ МК Кроме уже рассмотренных вариан тов использования различных источ ников тактовых сигналов, имеются мощные средства управления так тированием встроенных узлов МК – в некоторых пределах изменять (умень шать) значение или полностьюотклю чать тактирование, если узел не ис пользуется. ЭЛЕМЕНТЫ И КОМПОНЕНТЫ 32 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 3 2013 Таблица 2. Описание бит регистра HS_CONTROL Таблица 4. Описание бит регистра PLL_CONTROL № бита Функциональное имя бита Назначение и принимаемые значения 31 … 12 – Зарезервировано 11 … 8 HSY BYP Бит управления HSE осциллятором: 0 – режим осциллятора; 1 – режим внешнего генератора 7 … 4 HSE ON Бит управления HSE осциллятором: 0 – выключен; 1 – включен № бита Функциональное имя бита Назначение и принимаемые значения 31 … 12 – Зарезервировано 11 … 8 PLL CPU MUL[3:0] Коэффициент умножения для CPU PLL: PLLCPUo = PLLCPUi × (PLLCPUMUL +1) 7 … 4 PLL USB MUL[3:0] Коэффициент умножения для USB PLL: PLLUSBo = PLLUSBi × (PLLUSBMUL +1) 3 PLL CPU PLD Бит перезапуска PLL: при смене коэффициента умножения в рабочем режиме необходимо задать равным 1 2 PLL CPU ON Бит включения PLL: 0 – PLL выключена; 1 – PLL включена 1 PLL USB RLD Бит перезапуска PLL: при смене коэффициента умножения в рабочем режиме необходимо задать равным 1 0 PLL USB ON Бит включения PLL: 0 – PLL выключена; 1 – PLL включена Таблица 3. Описание бит регистра CPU_CLOCK № бита Функциональное имя бита Назначение и принимаемые значения 31 … 10 – Зарезервировано 9 … 8 HCLK SEL[1:0] Биты выбора источника для HCLK: 00 – HS 01 – CPU_C3 10 – LSE 11 – LSI 7 … 4 CPU C3 SEL[3:0] Биты выбора делителя для CPU_C3: 0xxx – CPU_C3 = CPU_C2 1000 – CPU_C3 = CPU_C2 / 2 1001 – CPU_C3 = CPU_C2 / 4 1010 – CPU_C3 = CPU_C2 / 8 1111 – CPU_C3 = CPU_C2 / 256 3 – Зарезервировано 2 CPU C2 SEL Биты выбора источника для CPU_C2: 0 – CPU_C1 1 – PLLCPUo 1 … 0 CPU C1 SEL[1:0] Биты выбора источника для CPU_C1: 00 – HIS 01 – HSI/2 10 – HSE 11 – HSE/2 Таблица 1. Описание бит регистра CLOCK_STATUS № бита Функциональное имя бита Назначение и принимаемые значения 31…3 – Зарезервировано 2 HSE RDY Флаг выхода в рабочий режим осциллятора HSE: 0 – осциллятор не запущен или не стабилен; 1 – осциллятор запущен и стабилен 1 PLL CPU RDY Флаг выхода в рабочий режим CPU PLL: 0 – PLL не запущена или не стабильна; 1 – PLL запущена и стабильна 0 PLL USB RDY Флаг выхода в рабочий режим USB PLL: 0 – PLL не запущена или не стабильна; 1 – PLL запущена и стабильна Листинг 1 MDR_RST_CLK >HS_CONTROL = (1<<0); // включение (кварцевого) генератора HSE while(!(MDR_RST_CLK >CLOCK_STATUS & (1 << 2))); // ждем выхода HSE на режим MDR_RST_CLK >CPU_CLOCK = (1 << 1); // переключение CPU_C1 на HSE MDR_RST_CLK >PLL_CONTROL = (6 << 8); // задать коэффициент умножения для // CPU PLL = 6+1, частота 56 МГц MDR_RST_CLK >PLL_CONTROL = (6 << 8) | (1 << 2); // включить PLL MDR_RST_CLK >PLL_CONTROL = (6 << 8) | (1 << 2) | (1 << 3); // установить в 1 бит PLL CPU PLD MDR_RST_CLK >PLL_CONTROL = (6 << 8) | (1 << 2); // установить в 0 бит PLL CPU PLD while(!(MDR_RST_CLK >CLOCK_STATUS & (1 <<1))); // ждем появления бита // готовности CPU PLL MDR_RST_CLK >CPU_CLOCK = (1 << 8) | (1 << 2) | (1 << 1); // тактирование HCLC // от CPU_C3 и тактирование CPU_C2 от PLL

RkJQdWJsaXNoZXIy MTQ4NjUy