Перейти к содержанию
    

LPC210x - Настоящий ли там PLL?

Возник вопрос в связи с тем, что надо сделать устройство с ногодрыгом, синхронным с внешней тактовой. В LPC210x для тактирования ядра есть PLL. Однако, в даташите (и мануале) совсем не видать параметров сего модуля. Интересует, настоящий ли там PLL или какой FLL - т.е. удерживается ли тактовая частота проца с точностью до фазы?

 

Может быть кто из форумчан проверял этот момент? Или, может быть, имеет возможность уделить пол-часа времени для проверки? Или вообще, знает NXP'шный документ, освещающий этот вопрос?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А здесь AN10331 - Philips LPC2xxx family phase lock loop ничего полезного нет?

Насколько я понимаю, при наличии аналогового CCO (Current Controlled Oscillator) устройство PLL близко к классическому ФАПЧ: с фазовым детектором и набором счетчиков-делителей с программируемым коэффициентом деления.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А здесь ничего полезного нет?

 

Именно по моему вопросу - нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а здесь ?

 

Ну о том, что в SAM7 именно PLL, можно догадаться по виду наружного фильтра :)

 

К сожалению, SAM7 не подходит, надо уметь за 2 такта дрыгнуть ножкой.

 

Насколько я понимаю, при наличии аналогового CCO (Current Controlled Oscillator) устройство PLL близко к классическому ФАПЧ

 

Я, конечно, на это надеюсь. И это нетрудно проверить в живую. Но так исторически сложилось, что под рукой нет ни одного девайса на LPC :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я, конечно, на это надеюсь. И это нетрудно проверить в живую. Но так исторически сложилось, что под рукой нет ни одного девайса на LPC :(

 

Могу попробовать помочь, у меня есть отладочная плата SK-LPC-S3E на LPC2378, правда я с АРМами только начал разбираться, если Вы методику обрисуете и код пришлете (если исходник то желательно чтобы WinARMом откомпилировался или IAR тем который бесплатный до 32 кБайт кода). По времени - вечером после 18.00 могу приступить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Могу попробовать помочь

 

О, спасибо. Какая у Вас версия IAR'а? Я тогда под нее проект состряпаю. И если можно, бросьте в личку какой-либо свой контакт типа аси (мой можете посмотреть у меня в профиле).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а нафег выкинуть фапч и поключить выход кварцевого генератора к процессору?

получите тактовую 8...12 мгц и фазу колебаний кварца. тока я сомневаюсь что ноги за 2 такта дрыгатся будут. как я мерял на lpc2103 4 такта на переключение пина при записи через быструю шину и FastIO

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня есть своя плата на процессоре LPC2138, тактируемом от внешнего генератора Epson с частотой 20.48МГц.

В прерывании от таймера программно включается и выключается светодиод.

Двухлучевой осциллограф Tektronix показывает, что переключения светодиода происходят строго синхронно с входной тактовой частотой, и

картинка на экране "стоит" (развёртку синхронизировал как по сигналу включения светодиода, так и по сигналу выключения светодиода).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

значит обычная фапч внутри с фазовым детектором, а не петля с частотным дискриминатором.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я тогда под нее проект состряпаю....

Ну железа всякого и у меня много. Измерители того-же джитера имеются (правда под телекомуникации - 2048-8448-25776-34368 килобит)... Если на LPC21xx Могу, например, на олимексовcкой P2148 (без FAST GPIO) кварц -любой, попробовать.

Компилятор - любой IAR.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а нафег выкинуть фапч и поключить выход кварцевого генератора к процессору?

получите тактовую 8...12 мгц и фазу колебаний кварца.

 

Мне не годится. Мне надо умножить входную тактовую на 2.

 

тока я сомневаюсь что ноги за 2 такта дрыгатся будут. как я мерял на lpc2103 4 такта на переключение пина при записи через быструю шину и FastIO

 

Что-то не то меряли. Через FastGPIO состояние ноги изменяется за 2 такта (столько же выполняется STR).

 

Двухлучевой осциллограф Tektronix показывает, что переключения светодиода происходят строго синхронно с входной тактовой частотой, и

картинка на экране "стоит"

 

Полезная инфа, спасибо. Действительно, это поведение честного PLL. Только еще случайное начальное значение сдвига фазы в пределах 2pi/коэффициент_умножения должно наблюдаться.

 

Ну железа всякого и у меня много. Измерители того-же джитера имеются (правда под телекомуникации - 2048-8448-25776-34368 килобит)... Если на LPC21xx Могу, например, на олимексовcкой P2148 (без FAST GPIO) кварц -любой, попробовать.

 

Это спасибо, но измерители - то круто, тут просто двухлучевым осциллографом проще (меня мало интересуют количественные характеристики, на глаз определить "синхронно/несинхронно" - будет достаточно.), а вот без FastGPIO - я хз как там устроен этот мост между шинами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это спасибо, но измерители - то круто, тут просто двухлучевым осциллографом проще (меня мало интересуют количественные характеристики, на глаз определить "синхронно/несинхронно" - будет достаточно.)

На глаз не корректно, если только не описать условия синхронихации и ждать-ждать-ждать....

, а вот без FastGPIO - я хз как там устроен этот мост между шинами.

С Fast у меня тоже есть, но это уже не универсальное железо, или LPC23/24xx

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На глаз не корректно, если только не описать условия синхронихации и ждать-ждать-ждать....

 

Дык глаз-диаграммы сигнала с шевелящегося пина (развертка засинхронизирована с частотой кварца) с накоплением в десяток миллисекунд будет вполне достаточно.

 

#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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нечто типа такого....

Ну тогда, если никто не сделает, то поближе к субботе - сейчас просто подходящей железки с Fast нет под руками. Только вот чего проверить-то хотите? Умножитель там будет умножать тупо и безвариантно, а деление, даже если и сделан "цифровой" c подсбросом, то это не проверяете, ибо не делите. Да, допустим, будет иметь джиттер полтакта от частоты после умножителя (сотни мегагерц)- это критично?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...