Страница 3 из 7

Re: ARM7 с нуля

Добавлено: Вт мар 29, 2011 19:25:05
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

Вот и все числа выбрались

Re: ARM7 с нуля

Добавлено: Вт мар 29, 2011 19:25:55
ARM7
Ладно,не будем разбираться-почему так сделано, раз сделали,значит так надо -разберемся сами-начнем..

Re: ARM7 с нуля

Добавлено: Вт мар 29, 2011 19:26:34
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МГц.

Re: ARM7 с нуля

Добавлено: Вт мар 29, 2011 19:27:24
ARM7
И вот тут главное-..

Re: ARM7 с нуля

Добавлено: Вт мар 29, 2011 19:28:06
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

Значит сейчас расчитаем, как нам нужно......

Re: ARM7 с нуля

Добавлено: Вт мар 29, 2011 19:35:27
Kavka
Если "На пальцах", то PLL представляет собой генератор с обвязкой, которая (обвязка) основываясь на внешнем сигнале и множителе поддерживает частоту равную частоте внешнего сигнала умноженную на множитель. Нужно это для того чтобы схема умножения, скажем так, была без аналоговых "извратов", и эту схему можно было легко сделать на чипе.
Ну а вместе множитель с делителем, как уже написали, позволяют достаточно гибко выбирать частоты, даже при фиксированном внешнем тактовом сигнале.

Re: ARM7 с нуля

Добавлено: Вт мар 29, 2011 19:43:14
ARM7
Короче, будем считать- всё это позволяет поставить почти любую частоту работы мк с фиксированным кварцем. И именно ради этого так всё сделано.

Re: ARM7 с нуля

Добавлено: Вт мар 29, 2011 20:45:25
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

Вроде так.

Re: ARM7 с нуля

Добавлено: Вт мар 29, 2011 22:20:29
Satyr
PLL не стартует с такими настройками.

Re: ARM7 с нуля

Добавлено: Вт мар 29, 2011 22:24:54
Satyr
Надо понимать, что вприницпе PLL - это RC подстраиваемый генератор, который непрерывно корректировается по опорному генератору на кварце.
Сильно упрощая на пальцах, корректируется так, чтоб за P периодов кварцевого генератора RCшный совершил M.
И диапазон его подстройки не резиновый, а те самые 156-320Mhz, что в даташите.

Re: ARM7 с нуля

Добавлено: Ср мар 30, 2011 07:01:11
ARM7
Satyr писал(а):PLL не стартует с такими настройками.
Это почему? Вот пример расчета с книги такой же-
Изображение

Re: ARM7 с нуля

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

Удачи!

Re: ARM7 с нуля

Добавлено: Ср мар 30, 2011 09:13:09
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);

Re: ARM7 с нуля

Добавлено: Ср мар 30, 2011 10:19:41
Kavka
ARM7, формулы похожи на правду.
Не заводиться что ли?

Re: ARM7 с нуля

Добавлено: Ср мар 30, 2011 18:01:35
ARM7
Я пока теорию освоил,хотел рассчитать задержки,тут наткнулся на PLL, щас разобрался,по даташиту инициализацию и прочее надо сделать на LCD,до этого с готовыми библиотеками только работал с ними,а на арм рабочих не нашел. :dont_know:

Re: ARM7 с нуля

Добавлено: Ср мар 30, 2011 19:53:21
Satyr
ARM7 писал(а):void pause(unsigned int p)
{
unsigned int i=0;
for (i=0;i<p;i++);
}
тут кое чего не хватает
в дебаге будет ок, а на хорошем компиляторе при оптимизации может несколько иная задержка получиться -)))

Re: ARM7 с нуля

Добавлено: Ср мар 30, 2011 20:24:54
kotovasiya
Это надо для более точного подбора частоты тактирования ядра,например stm32 там просто один множитель.
Кстати про них, гуру подскажите как правильно тормозить таймер, отключать от шины APB или есть иной способ?

Re: ARM7 с нуля

Добавлено: Ср мар 30, 2011 22:29:52
Satyr
kotovasiya писал(а):Кстати про них, гуру подскажите как правильно тормозить таймер, отключать от шины APB или есть иной способ?
У всех такймеров что видел, в контрольном регистре был битик Count enable или похожими названиями. ОНО.

Re: ARM7 с нуля

Добавлено: Сб апр 02, 2011 10:16:32
ARM7
А как подключить 5-вольтовый LCD (ВС1602) к 3,3 вольтовому МК ?

Re: ARM7 с нуля

Добавлено: Сб апр 02, 2011 11:35:00
romazan
Через буфер 74lvc245