Добрый день. Возникла проблема с получением частоты на микроконтроллере 1921ВК028. В качестве опорной выбран сигнал генератора 20 МГц с контакта XI_OSC.
REFDIV = 2
FBDIV = 80
DIV1 = 2
DIV2 = 2
((20/2) *80) /(2*2) = 10*80/4= 200 МГц
Следуя инструкции, сбросил бит BP, выставил REFDIV и FBDIV, сбросил бит PD, установил коэффициенты DIV1 и DIV2. После обнулил бит OUTDIS. При попытке отладки через JTAG, программа не запускается, в ниже части экрана висит PC = 00000000 [__Vectors]. При попытках изменения выходной частоты в большую сторону происходит ошибка "Несанкционированного изменения режима процессора". При выставленных коэффициентах и не сброшеном бите BP, программа работает, но нет уверености в получении необходимых 200 МГц.
_RCU -> PLLCFG_bit.REFSRC = 0;
_RCU -> PLLCFG_bit.BP = 0;
_RCU -> PLLCFG_bit.REFDIV = 0x2;
_RCU -> PLLCFG_bit.FBDIV = 0x50;
_RCU -> PLLCFG_bit.PD = 0;
_RCU -> PLLCFG_bit.DIV1 = 0x2;
_RCU -> PLLCFG_bit.DIV2 = 0x2;
_RCU -> PLLCFG_bit.OUTDIS = 0;
В чем может быть проблема?
Настройка синтезатора частоты PLL 1921ВК028
Модераторы: ea, dav, bkolbov, Alis, pip, _sva_
-
- Сообщения: 6
- Зарегистрирован: 13 дек 2022, 16:08
- Предприятие: Концерн
-
- Сообщения: 209
- Зарегистрирован: 14 дек 2015, 09:21
- Предприятие: АО НИИЭТ
- Откуда: АО НИИЭТ, Воронеж
Re: Настройка синтезатора частоты PLL 1921ВК028
Доброго времени суток!Summer Thunder писал(а): ↑15 фев 2023, 10:46 При выставленных коэффициентах и не сброшеном бите BP, программа работает, но нет уверености в получении необходимых 200 МГц.
_RCU -> PLLCFG_bit.REFSRC = 0;
_RCU -> PLLCFG_bit.BP = 0;
_RCU -> PLLCFG_bit.REFDIV = 0x2;
_RCU -> PLLCFG_bit.FBDIV = 0x50;
_RCU -> PLLCFG_bit.PD = 0;
_RCU -> PLLCFG_bit.DIV1 = 0x2;
_RCU -> PLLCFG_bit.DIV2 = 0x2;
_RCU -> PLLCFG_bit.OUTDIS = 0;
В чем может быть проблема?
1. Проверили на нашей макетно-отладочной плате, с данными настройками PLL работает корректно, с отладкой проблем не наблюдается.
2. В микроконтроллере предусмотрена возможность вывода частоты PLL, например на вывод D0 (альтернативная функция CLKOUT).
Вот пример (из файла "system_K1921VK028.c") вывода частоты PLL (CKO = PLLCLK/8):
Код: Выделить всё
//D0 clockout
RCU->HCLKCFG_bit.GPIODEN = 1;
RCU->HRSTCFG_bit.GPIODEN = 1;
GPIOD->ALTFUNCNUM0_bit.PIN0 = 2;
GPIOD->ALTFUNCSET_bit.PIN0 = 1;
GPIOD->DENSET_bit.PIN0 = 1;
RCU->CLKOUTCFG = (RCU_CLKOUTCFG_CLKSEL_PLLCLK << RCU_CLKOUTCFG_CLKSEL_Pos) |
(3 << RCU_CLKOUTCFG_DIVN_Pos) |
(RCU_CLKOUTCFG_DIVEN_Msk) |
(RCU_CLKOUTCFG_CLKEN_Msk); //CKO = PLLCLK/8