ARM7 с нуля

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

Re: ARM7 с нуля

Сообщение 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

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

Re: ARM7 с нуля

Сообщение ARM7 »

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

Re: ARM7 с нуля

Сообщение 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 раз.
Аватара пользователя
ARM7
Встал на лапы
Сообщения: 85
Зарегистрирован: Пн мар 07, 2011 19:52:52

Re: ARM7 с нуля

Сообщение ARM7 »

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

Re: ARM7 с нуля

Сообщение 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 раз.
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Re: ARM7 с нуля

Сообщение Kavka »

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

Re: ARM7 с нуля

Сообщение ARM7 »

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

Re: ARM7 с нуля

Сообщение 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

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

Re: ARM7 с нуля

Сообщение Satyr »

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

Re: ARM7 с нуля

Сообщение Satyr »

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

Re: ARM7 с нуля

Сообщение ARM7 »

Satyr писал(а):PLL не стартует с такими настройками.

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

Re: ARM7 с нуля

Сообщение Kavka »

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

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

Re: ARM7 с нуля

Сообщение 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);
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Re: ARM7 с нуля

Сообщение Kavka »

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

Re: ARM7 с нуля

Сообщение ARM7 »

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

Re: ARM7 с нуля

Сообщение Satyr »

ARM7 писал(а):void pause(unsigned int p)
{
unsigned int i=0;
for (i=0;i<p;i++);
}

тут кое чего не хватает
в дебаге будет ок, а на хорошем компиляторе при оптимизации может несколько иная задержка получиться -)))
Аватара пользователя
kotovasiya
Опытный кот
Сообщения: 757
Зарегистрирован: Пт мар 30, 2007 12:11:23

Re: ARM7 с нуля

Сообщение kotovasiya »

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

Re: ARM7 с нуля

Сообщение Satyr »

kotovasiya писал(а):Кстати про них, гуру подскажите как правильно тормозить таймер, отключать от шины APB или есть иной способ?

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

Re: ARM7 с нуля

Сообщение ARM7 »

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

Re: ARM7 с нуля

Сообщение romazan »

Через буфер 74lvc245
Закрыто

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