Второй день бьюсь с настройкой PLL для сабж.
Запрограммировал тестовый пример, который выводит на ногу поделенную на 4 таймером 0 частоту ядра.
Код
void lpc23xx_pin63_to_forth_cclk ( void )
{
PINSEL3 |= 3 << 24; // Port P1.28 Pin 64 as MAT0.0
PCLKSEL0 &= ~PCLKSEL0_PCLK_TIMER0_MASK;
PCLKSEL0 |= 1 << PCLKSEL0_PCLK_TIMER0_BIT;
PCONP |= PCONP_PCTIM0;
T0TCR = 2; // Остановим и сбросим таймер
T0CTCR = 0; // Работа в режиме таймера
T0PR = 0; // Нет предделителя
T0MR0 = 1;
T0MCR = 2; // Сброс по совпадению
T0EMR = 3 << 4; // Инвертировать выход блока по совпадению
T0TCR = 0; // Остановим Таймер
T0TC = 0;
T0TCR = 1; // Пустим таймер
}
Кварц на 12МГц. Выход таймера наблюдаю на осциллографе с частотомером.
Испытывал различные значения N и M при CCLKCFG = 5 с целью добиться максимальной тактовой частоты.
При этом получилось, что при значениях N=1 и M = 15, вижу на выходе таймера 9600кГц, что соответствует 38,4 МГц тактовой ядра и 192 МГц частоте CCO. Частота стоит мертво - значения на частотомере не прыгают.
Если увеличить М до 16, что должно соответствовать Fcco = 204МГц, Fcclk = 40,8МГц и выход таймера 10.2 МГц, то наблюдаю на осциллографе дрожание импульсов и частота их прыгает в районе 9,98МГц.
Если же применить те установки PLL которые в примере от Кейловской борды N=0, M=11, Fcco=288, FCclk = 57,6 то на выходе таймера вообще белиберда - импульсы далеко не меандр а с переменной скважностью, и частота прыгает около 3,41 МГц.
То ли я не правильно считаю, то ли мне попался дохлый кристалл, то ли ошибка в еррате и Fcco не может быть больше 200МГц.
Кто нибудь сможет поставить подобный эксперимент на MCB2300 и развеять мои сомнения,
или поделиться своим кодом инициализации PLL чтобы я попробовал у себя.
Кстати на моем чипе написано S60771.2W09 ZSG0637-Y