|
LPC210x - Настоящий ли там PLL? |
|
|
|
Jul 16 2009, 07:25
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Возник вопрос в связи с тем, что надо сделать устройство с ногодрыгом, синхронным с внешней тактовой. В LPC210x для тактирования ядра есть PLL. Однако, в даташите (и мануале) совсем не видать параметров сего модуля. Интересует, настоящий ли там PLL или какой FLL - т.е. удерживается ли тактовая частота проца с точностью до фазы?
Может быть кто из форумчан проверял этот момент? Или, может быть, имеет возможность уделить пол-часа времени для проверки? Или вообще, знает NXP'шный документ, освещающий этот вопрос?
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Jul 16 2009, 08:37
|

developer
   
Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032

|
Цитата(Rst7 @ Jul 16 2009, 12:32)  Именно по моему вопросу - нет. а здесь ?
--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
|
|
|
|
|
Jul 16 2009, 08:49
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата а здесь ? Ну о том, что в SAM7 именно PLL, можно догадаться по виду наружного фильтра  К сожалению, SAM7 не подходит, надо уметь за 2 такта дрыгнуть ножкой. Цитата Насколько я понимаю, при наличии аналогового CCO (Current Controlled Oscillator) устройство PLL близко к классическому ФАПЧ Я, конечно, на это надеюсь. И это нетрудно проверить в живую. Но так исторически сложилось, что под рукой нет ни одного девайса на LPC
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Jul 16 2009, 09:06
|
Частый гость
 
Группа: Участник
Сообщений: 149
Регистрация: 2-06-08
Из: Москва
Пользователь №: 38 003

|
Цитата(Rst7 @ Jul 16 2009, 12:49)  Я, конечно, на это надеюсь. И это нетрудно проверить в живую. Но так исторически сложилось, что под рукой нет ни одного девайса на LPC  Могу попробовать помочь, у меня есть отладочная плата SK-LPC-S3E на LPC2378, правда я с АРМами только начал разбираться, если Вы методику обрисуете и код пришлете (если исходник то желательно чтобы WinARMом откомпилировался или IAR тем который бесплатный до 32 кБайт кода). По времени - вечером после 18.00 могу приступить.
|
|
|
|
|
Jul 16 2009, 10:21
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата(klen @ Jul 16 2009, 12:45)  а нафег выкинуть фапч и поключить выход кварцевого генератора к процессору? получите тактовую 8...12 мгц и фазу колебаний кварца. Мне не годится. Мне надо умножить входную тактовую на 2. Цитата тока я сомневаюсь что ноги за 2 такта дрыгатся будут. как я мерял на lpc2103 4 такта на переключение пина при записи через быструю шину и FastIO Что-то не то меряли. Через FastGPIO состояние ноги изменяется за 2 такта (столько же выполняется STR). Цитата(etoja @ Jul 16 2009, 12:52)  Двухлучевой осциллограф Tektronix показывает, что переключения светодиода происходят строго синхронно с входной тактовой частотой, и картинка на экране "стоит" Полезная инфа, спасибо. Действительно, это поведение честного PLL. Только еще случайное начальное значение сдвига фазы в пределах 2pi/коэффициент_умножения должно наблюдаться. Цитата(zltigo @ Jul 16 2009, 13:03)  Ну железа всякого и у меня много. Измерители того-же джитера имеются (правда под телекомуникации - 2048-8448-25776-34368 килобит)... Если на LPC21xx Могу, например, на олимексовcкой P2148 (без FAST GPIO) кварц -любой, попробовать. Это спасибо, но измерители - то круто, тут просто двухлучевым осциллографом проще (меня мало интересуют количественные характеристики, на глаз определить "синхронно/несинхронно" - будет достаточно.), а вот без FastGPIO - я хз как там устроен этот мост между шинами.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Jul 16 2009, 10:28
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Rst7 @ Jul 16 2009, 13:21)  Это спасибо, но измерители - то круто, тут просто двухлучевым осциллографом проще (меня мало интересуют количественные характеристики, на глаз определить "синхронно/несинхронно" - будет достаточно.) На глаз не корректно, если только не описать условия синхронихации и ждать-ждать-ждать.... Цитата , а вот без FastGPIO - я хз как там устроен этот мост между шинами. С Fast у меня тоже есть, но это уже не универсальное железо, или LPC23/24xx
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jul 16 2009, 10:43
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата На глаз не корректно, если только не описать условия синхронихации и ждать-ждать-ждать.... Дык глаз-диаграммы сигнала с шевелящегося пина (развертка засинхронизирована с частотой кварца) с накоплением в десяток миллисекунд будет вполне достаточно. CODE #include <NXP/iolpc2378.h> #include <intrinsics.h>
__ramfunc void ToggleIO(void) { FIO2DIR = 1<<3; //pin P2.3 configured as output for(;;) { FIO2SET = 1<<3; FIO2CLR = 1<<3; FIO2SET = 1<<3; FIO2CLR = 1<<3; FIO2SET = 1<<3; FIO2CLR = 1<<3; __no_operation(); } }
void StartPLL(void) { // 1. Init OSC SCS_bit.OSCRANGE = 0; SCS_bit.OSCEN = 1; // 2. Wait for OSC ready while(!SCS_bit.OSCSTAT); // 3. Disconnect PLL PLLCON_bit.PLLC = 0; PLLFEED = 0xAA; PLLFEED = 0x55; // 4. Disable PLL PLLCON_bit.PLLE = 0; PLLFEED = 0xAA; PLLFEED = 0x55; // 5. Select source clock for PLL CLKSRCSEL_bit.CLKSRC = 1; // Selects the main oscillator as a PLL clock source. // 6. Set PLL settings 288 MHz (from 12MHz), Fpll=(2*12(M)*12MHz/1(N)) PLLCFG_bit.MSEL = 12-1; PLLCFG_bit.NSEL = 1-1; PLLFEED = 0xAA; PLLFEED = 0x55; // 7. Enable PLL PLLCON_bit.PLLE = 1; PLLFEED = 0xAA; PLLFEED = 0x55; // 8. Wait for the PLL to achieve lock while(!PLLSTAT_bit.PLOCK); // 9. Set clk divider settings CCLKCFG = 6-1; // 1/6 Fpll USBCLKCFG = 6-1; // 1/6 Fpll - 48 MHz PCLKSEL0 = PCLKSEL1 = 0; // other peripherals PCLKSEL1_bit.PCLK_GPIO = 1; //GPIO prescaller 1:1 // 10. Connect the PLL PLLCON_bit.PLLC = 1; PLLFEED = 0xAA; PLLFEED = 0x55; }
void GPIOinit(void) { // Set to inputs IO0DIR = \ IO1DIR = \ FIO0DIR = \ FIO1DIR = \ FIO2DIR = \ FIO3DIR = \ FIO4DIR = 0;
// Enable Fast GPIO0,1 SCS_bit.GPIOM = 1;
// clear mask registers FIO0MASK =\ FIO1MASK =\ FIO2MASK =\ FIO3MASK =\ FIO4MASK = 0;
// Reset all GPIO pins to default primary function PINSEL0 =\ PINSEL1 =\ PINSEL2 =\ PINSEL3 =\ PINSEL4 =\ PINSEL5 =\ PINSEL6 =\ PINSEL7 =\ PINSEL8 =\ PINSEL9 =\ PINSEL10= 0; }
int main() { // MAM init MAMCR_bit.MODECTRL = 0; MAMTIM_bit.CYCLES = 3; // FCLK > 40 MHz MAMCR_bit.MODECTRL = 2; // MAM functions fully enabled StartPLL(); GPIOinit(); ToggleIO(); return 0; }
Нечто типа такого. Код дергает ножкой P2.3, частота кварца 12МГц, PLL - x4, т.е. такты проца 48МГц, значит сигнал на ножке будет как раз с частотой кварца (каждое состояние - 2 такта, итого период 4 такта). Собирается в иаре 5.20 в ARM-режиме с макс. оптимизацией по скорости - то что надо. Положу сразу весь проект до кучи (таргет - Debug).
TestPLL.zip ( 3.89 килобайт )
Кол-во скачиваний: 131
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Jul 16 2009, 10:50
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Rst7 @ Jul 16 2009, 13:43)  Нечто типа такого.... Ну тогда, если никто не сделает, то поближе к субботе - сейчас просто подходящей железки с Fast нет под руками. Только вот чего проверить-то хотите? Умножитель там будет умножать тупо и безвариантно, а деление, даже если и сделан "цифровой" c подсбросом, то это не проверяете, ибо не делите. Да, допустим, будет иметь джиттер полтакта от частоты после умножителя (сотни мегагерц)- это критично?
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|