Изучаю MK ARM LPC2468 в связке с IAR ARM. Есть вопросы но не знаю куда обратится, вот и решил создать тему.
Можете проверить правильно я настроил МК на частоту 60МГц, и USB на 48МГц.
Код: Выделить всё
void InitClock(void)
{
// Конфигурация регистра SCS:
// GPIO = 1 (Включение быстрого режима),
// OSCRANGE = 0 (Выбор рабочего диапазона генератора от 1MHz до 20Mhz),
// OSCEN = 1 (Разрешить использование основного генератора подключенного к XTAL1 è XTAL2).
SCS |= 0x00000021;
// Конфигурация регистра PLLCON:
// PLLC = 1 (Отключаем PLL)
PLLCON &= 0x00000002;
// Для изменения PLLCON записываем две команды в PLLFEED
PLLFEED = 0xAA;
PLLFEED = 0x55;
// Конфигурация регистра PLLCON:
// PLLE = 1 (Выключаем PLL)
PLLCON &= 0x00000001;
// Для изменения PLLCON записываем две команды в PLLFEED
PLLFEED = 0xAA;
PLLFEED = 0x55;
// Дожидаемся стабильного сигнала от основного генератора
// Проверяем бит OSCSTAT в регистре SCS
while (!( SCS &0x00000040));
// Выбираем основной генератор в качестве источника синхронизации PLL
// CLKSRC = 0x01;
CLKSRCSEL = 0x00000001;
// Расчет коэффициента умножения:
// Fcco = 480MHz, Fin = 12MHz.
// M = (Fcco * 1) / (2 * Fin) = (480 * 1) / (2 * 12) = 20 - 1 = 19
// Расчет коэффициента деления:
// N = (2 * M * Fin) / Fcco = (2 * 20 * 12) / 480 = 1 - 1 = 0
// Записываем в биты MSEL регистра PLLCFG множитель 19 (HEX:0x13)
// Записываем в биты NSEL регистра PLLCFG делитель 0 (HEX:0x00)
PLLCFG = 0x00000013;
// Для изменения PLLCFG записываем две команды в PLLFEED
PLLFEED = 0xAA;
PLLFEED = 0x55;
// Включение PLL
PLLCON = 0x00000001;
// Для изменения PLLCON записываем две команды в PLLFEED
PLLFEED = 0xAA;
PLLFEED = 0x55;
// Считаем делитель CPU для 60MHz
// CCLKCFG = Fcco / Cclk = 480 / 60 = 8 - 1 = 7
// Записываем в CCLKSEL делитель 7
CCLKCFG = 0x00000007;
// Считаем делитель USB для 48MHz
// USBCLKCFG = Fcco / USBclk = 480 / 48 = 10 - 1 = 9
// Записываем в USBSEL делитель 9
USBCLKCFG = 0x00000009;
// Ждем установленного сигнала PLL
while(!(PLLSTAT & 0x02000000));
// Подключаем PLL
PLLCON |= 0x00000002;
// Для изменения PLLCON записываем две команды в PLLFEED
PLLFEED = 0xAA;
PLLFEED = 0x55;
}


