ARM7 с нуля

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Друг Кота
Аватара пользователя
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Сообщение Satyr »

ARM7 писал(а):Элементарно для вас, а для меня не ясно- почему нужен внутренний управляемый генератор, который должен находится в пределах от 1566 до 320 МГц, раз подключен 12 мгц кварц-умножитель ставим на 6=получается 72 мгц, и всё, а остальное зачем, что за "внутренний управляемый генератор, который должен находится в пределах от 1566 до 320 МГц", зачем это? обьясните мне(и не только мне наверно) тупому,только популярно :dont_know:
остальное затем, что для PLL (управляемый генератор) должен находиться в диапазоне 156-320Mhz (не знаю, откуда взялось "1566 до 320"), куда 72Мхз, как не трудно замеить, не укладывается. соот выбираем такую частоту PLL, из которой делением на 4, 8, 16 получается 72 и попадает в диапазон. Итого 72*4 = 288 - в диапазоне.
далее надо получить на PLL ил 12 мгц 288.
Fpll = (2 × M × Fin) / N итого исходя из 288 = 2 * M * 12 / N выбираем числа M и N. Например, 12 и 1
12 * 12 *2 / 1 = 288

Вот и все числа выбрались
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 85
Зарегистрирован: Пн мар 07, 2011 19:52:52

Сообщение ARM7 »

Ладно,не будем разбираться-почему так сделано, раз сделали,значит так надо -разберемся сами-начнем..
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 85
Зарегистрирован: Пн мар 07, 2011 19:52:52

Сообщение ARM7 »

РАСЧЕТ ЧАСТОТЫ PLL
Выходная частота PLL определяется по формуле:
cclk = M*Fosc или cclk =Fcco/2 * P
Частота CCO вычисляется как:
Fcco = cclk *2 *P или Fcco= Fosc* M * 2 * P
,где
Fosc - частота кварцевого резонатора;
Fcco - частота управляемого генератора PLL;
cclk - выходная частота PLL;
M - значение умножителя PLL;
P - значение делителя PLL.
Пределы значений для некоторых величин:
Fosc - должна находится в пределах от 10 до 25МГц;
Fcco - должна находится в пределах от 156 до 320МГц;
cclk - должна находится в пределах от 10 до 60МГц.
Последний раз редактировалось ARM7 Вт мар 29, 2011 19:33:36, всего редактировалось 1 раз.
Встал на лапы
Аватара пользователя
Сообщения: 85
Зарегистрирован: Пн мар 07, 2011 19:52:52

Сообщение ARM7 »

И вот тут главное-..
Реклама
Эиком - электронные компоненты и радиодетали
Встал на лапы
Аватара пользователя
Сообщения: 85
Зарегистрирован: Пн мар 07, 2011 19:52:52

Сообщение ARM7 »

Уточнение параметров PLL:
1. Задаемся желаемой частотой синхронизации cclk. Это значение выбирается из расчета
возможностей процессора и необходимостей переферии (например, продиктовано
необходимостью получения определенной скорости UART).
2. Задаемся частотой кварцевого резонатора Fosc. При этом необходимо, чтоб cclk получалась
путем умножения Fosc на целое число.
3. Определяем значение множителя M. M = cclk / Fosc. M должно находится в диапазоне от 1
до 32. В MSEL в PLLCFG записывается M – 1 .
4. Определяем значение делителя P. P = Fosc * M * 2 / cclk. P может принимать значения
только 1,2,4 и 8. В PSEL в PLLCFG записывается P – 1

Значит сейчас расчитаем, как нам нужно......
Последний раз редактировалось ARM7 Вт мар 29, 2011 20:53:22, всего редактировалось 1 раз.
Реклама
Мудрый кот
Аватара пользователя
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение Kavka »

Если "На пальцах", то PLL представляет собой генератор с обвязкой, которая (обвязка) основываясь на внешнем сигнале и множителе поддерживает частоту равную частоте внешнего сигнала умноженную на множитель. Нужно это для того чтобы схема умножения, скажем так, была без аналоговых "извратов", и эту схему можно было легко сделать на чипе.
Ну а вместе множитель с делителем, как уже написали, позволяют достаточно гибко выбирать частоты, даже при фиксированном внешнем тактовом сигнале.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 85
Зарегистрирован: Пн мар 07, 2011 19:52:52

Сообщение ARM7 »

Короче, будем считать- всё это позволяет поставить почти любую частоту работы мк с фиксированным кварцем. И именно ради этого так всё сделано.
Встал на лапы
Аватара пользователя
Сообщения: 85
Зарегистрирован: Пн мар 07, 2011 19:52:52

Сообщение ARM7 »

Ладно,расчитываем= нам нужно cclk=72 мгц
cclk = M*Fosc или cclk =Fcco/2*P
Fosc-наш кварц=12 мгц
Определяем значение множителя M. M = cclk / Fosc.=72/12=6
В MSEL записываем М-1= 5
Определяем значение делителя P. При этом-P может принимать значения
только 1,2,4 и 8
P = Fosc * M * 2 / cclk.
P=12*6*2/72=2
Записываем в PSEL P – 1= 1

Вроде так.
Друг Кота
Аватара пользователя
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Сообщение Satyr »

PLL не стартует с такими настройками.
Друг Кота
Аватара пользователя
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Сообщение Satyr »

Надо понимать, что вприницпе PLL - это RC подстраиваемый генератор, который непрерывно корректировается по опорному генератору на кварце.
Сильно упрощая на пальцах, корректируется так, чтоб за P периодов кварцевого генератора RCшный совершил M.
И диапазон его подстройки не резиновый, а те самые 156-320Mhz, что в даташите.
Встал на лапы
Аватара пользователя
Сообщения: 85
Зарегистрирован: Пн мар 07, 2011 19:52:52

Сообщение ARM7 »

Satyr писал(а):PLL не стартует с такими настройками.
Это почему? Вот пример расчета с книги такой же-
Изображение
Мудрый кот
Аватара пользователя
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение Kavka »

Если вы не ошиблись в первом посте, то у вас LPC2387.
Прочитайте в спецификации пункт 7.24.2
Думаю, что будет полезно прочитать ERRATA. Для исходной ревизии чипа, без букв A,B,D особенно.
Пункты представляющие интерес для вас следующие.
3.7 PLL.1
3.14 Flash.1

Удачи!
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Встал на лапы
Аватара пользователя
Сообщения: 85
Зарегистрирован: Пн мар 07, 2011 19:52:52

Сообщение ARM7 »

Вот из этого даташита-
Выходая частота PLL определяется по формуле:
Fcco = (2 × M × Fin) / N

• Fin находится в диапазоне от 32 кГц до 50 МГц.
• Fcco находится в диапазоне от 275 МГц до 550 МГц.

M = (Fcco × N) / (2 × Fin)
N = (2 × M × Fin) / Fcco
Fin = (Fcco × N) / (2 × M)

Fin- кварц, M- -1 MSEL, N- -1 PSEL в KEIL

Из этого также выходит- если делитель N(MSEL)= 2, то
PSEL=(72Х2)/(2х12)= 6


Если на 72 мгц настроили правильно- то 1/72000000=1,39 мкс, для задержки 200 мкс нужно будет #define TIME 150 для этого-

Код: Выделить всё

void pause(unsigned int p)
void pause(unsigned int p)
{	
	unsigned int i=0;
	for (i=0;i<p;i++);
}
pause (TIME);
Мудрый кот
Аватара пользователя
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение Kavka »

ARM7, формулы похожи на правду.
Не заводиться что ли?
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Встал на лапы
Аватара пользователя
Сообщения: 85
Зарегистрирован: Пн мар 07, 2011 19:52:52

Сообщение ARM7 »

Я пока теорию освоил,хотел рассчитать задержки,тут наткнулся на PLL, щас разобрался,по даташиту инициализацию и прочее надо сделать на LCD,до этого с готовыми библиотеками только работал с ними,а на арм рабочих не нашел. :dont_know:
Друг Кота
Аватара пользователя
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Сообщение Satyr »

ARM7 писал(а):void pause(unsigned int p)
{
unsigned int i=0;
for (i=0;i<p;i++);
}
тут кое чего не хватает
в дебаге будет ок, а на хорошем компиляторе при оптимизации может несколько иная задержка получиться -)))
Опытный кот
Аватара пользователя
Сообщения: 757
Зарегистрирован: Пт мар 30, 2007 12:11:23

Сообщение kotovasiya »

Это надо для более точного подбора частоты тактирования ядра,например stm32 там просто один множитель.
Кстати про них, гуру подскажите как правильно тормозить таймер, отключать от шины APB или есть иной способ?
Друг Кота
Аватара пользователя
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Сообщение Satyr »

kotovasiya писал(а):Кстати про них, гуру подскажите как правильно тормозить таймер, отключать от шины APB или есть иной способ?
У всех такймеров что видел, в контрольном регистре был битик Count enable или похожими названиями. ОНО.
Встал на лапы
Аватара пользователя
Сообщения: 85
Зарегистрирован: Пн мар 07, 2011 19:52:52

Сообщение ARM7 »

А как подключить 5-вольтовый LCD (ВС1602) к 3,3 вольтовому МК ?
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 335
Зарегистрирован: Чт май 21, 2009 13:54:07
Откуда: Москва

Сообщение romazan »

Через буфер 74lvc245
Контактная информация:
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»