реклама на сайте
подробности

 
 
> Вопросы по LPC2468 + IAR
Mr.Denis
сообщение Apr 11 2012, 18:31
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 9-01-11
Пользователь №: 62 093



Всем привет! Только что нашел этот раздел для начинающих.
Начал изучать LPC2468 в среде IAR на языке С. У меня возникло несколько вопросов.
Хочу запустить МК от 72МГц.
Вначале я разрешаю использовать внешний кварц на 12МГц командой CLKSRCSEL=0x01;
Потом я записываю множитель на 6 командой PLLCFG=0х05;
Это число высчитал по формуле: Множитель = 72 / 12 = 6 – 1 = 5(Bits MSEL = 00101)
Правильно?
Если я эти две команды впишу у меня МК станет работать на 72МГц?

P.S. Уважаемые администраторы и модераторы, не убивайте тему в этом раздели, я только сейчас увидел раздел для начинающих
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Mr.Denis
сообщение Apr 12 2012, 15:40
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 9-01-11
Пользователь №: 62 093



Приветствую!
Спасибо за советы!)))
Я сегодня пробовал проиграться с kial, но он как-то совсем не пошел. Мне он показался более сложным и навороченным.
Сегодня почитав мануал набросал код c комментариями для PLL. Посмотрите пожалуйста и укажите на ошибки.
В заранее огромное спасибо!))
CODE

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
// CCLKSEL = Fcco / Cclk = 480 / 60 = 8 - 1 = 7
// Записываем в CCLKSEL делитель 7
CCLKSEL = 0x00000007;
// Считаем делитель USB для 48MHz
// USBSEL = Fcco / USBclk = 480 / 48 = 10 - 1 = 9
// Записываем в USBSEL делитель 9
USBSEL = 0x00000009;
// Ждем установленного сигнала PLL
while( PLLSTAT & 0x000);
// Подключаем PLL
PLLCON |= 0x00000002;
// Для изменения PLLCON записываем две команды в PLLFEED
PLLFEED = 0xAA;
PLLFEED = 0x55;
}


Если я правильно понял то в регистр CCLKSEL надо записывать только не четные числа, почему?

Сообщение отредактировал Mr.Denis - Apr 12 2012, 17:27
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 8th August 2025 - 03:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01968 секунд с 7
ELECTRONIX ©2004-2016