реклама на сайте
подробности

 
 
> LPC2387, PLLSTAT
addi
сообщение Feb 24 2011, 04:46
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 679
Регистрация: 9-08-06
Пользователь №: 19 422



Здравствуйте

Вопрос по поводу установки клоков, значения PLLCFG не отражаются в PLLSTAT, исполнение виснет на проверки соответствующего бита

Может кто скалкиваоя, прошу помочь
Код
void ConfigurePLL ( void )
{
  DWORD MValue, NValue;

  if ( PLLSTAT & (1 << 25) )
  {
    PLLCON = 1;            /* Enable PLL, disconnected */
    PLLFEED = 0xaa;
    PLLFEED = 0x55;
  }

  PLLCON = 0;                /* Disable PLL, disconnected */
  PLLFEED = 0xaa;
  PLLFEED = 0x55;
    
  SCS |= 0x20;            /* Enable main OSC */
  while( !(SCS & 0x40) );    /* Wait until main OSC is usable */

  CLKSRCSEL = 0x1;        /* select main OSC, 16MHz, as the PLL clock source */

  PLLCFG = PLL_MValue | (PLL_NValue << 16);
  PLLFEED = 0xaa;
  PLLFEED = 0x55;
      
  PLLCON = 1;                /* Enable PLL, disconnected */
  PLLFEED = 0xaa;
  PLLFEED = 0x55;

  CCLKCFG = CCLKDivValue;    /* Set clock divider */
#if USE_USB
  USBCLKCFG = USBCLKDivValue;        /* usbclk = 288 MHz/6 = 48 MHz */
#endif
  //while ( ((PLLSTAT & (1 << 26)) == 0) );    /* Check lock bit status */
  while (!(PLLSTAT & 0x02000000));    /* Check lock bit status */  - здесь стоим.....
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
yashok
сообщение Mar 22 2011, 06:08
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 31-08-10
Из: Минск-Витебск
Пользователь №: 59 203



Для какого именна NXP это код??

Код
U0FDR = 0x000000E5;    /* DIVADDVAL = 5, MULVAL = 8 */

Предпологаю, что в строке ошибочный коомент. MULVAL = 14, поэтому подсчеты ошибочны.

Код
U1DLL = Fdiv % 256;

Попробуйте просто
Код
U1DLL = Fdiv


Еще бы не плохо было бы явно настраивать рабочую частоту для модулей UART. Что бы точно было 72 MHz.
Go to the top of the page
 
+Quote Post
addi
сообщение Mar 22 2011, 08:52
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 679
Регистрация: 9-08-06
Пользователь №: 19 422



Цитата(yashok @ Mar 22 2011, 09:08) *
Для какого именна NXP это код??

Код
U0FDR = 0x000000E5;    /* DIVADDVAL = 5, MULVAL = 8 */

Предпологаю, что в строке ошибочный коомент. MULVAL = 14, поэтому подсчеты ошибочны.

Код
U1DLL = Fdiv % 256;

Попробуйте просто
Код
U1DLL = Fdiv


Еще бы не плохо было бы явно настраивать рабочую частоту для модулей UART. Что бы точно было 72 MHz.

Спасибо за поддержку

Запутался в версиях кода, как следствие U0FDR был указан для 60 МГц
Изначально
Резонатор на 16 МГц
Необходимо сделать 72МГц частоту тактирования ядра и периферии

Получается

M = 72
N = 8
ClkDiv = 4
для
Fcco = 288 МГц
Необходимый бодрейт - 921600 б/с

Тогда DIVADDVAL = 5, MULVAL = 8

В итоге получается в районе 740000 б/с при передачи и соотвественно прием на 921600 б/с передатчика заершается с ошибками фрейма

Почитал эррату, там говорится что желательно 72 МГц добиватся при 12 МГц на входе и Fcco = 288 МГц

В итоге настроил какбы на 12 Мгц(при оставшемся кварце 16 Мгц) - M = 12, N = 1, получается теперь почти как нада, дительность бита как на картинке 1

Но прием попрежнему с ошибками, длительность бита передатчика на рис 2

Микроконтролер LPC2387

Сообщение отредактировал addi - Mar 22 2011, 12:17
Прикрепленные файлы
Прикрепленный файл  1.bmp ( 146.3 килобайт ) Кол-во скачиваний: 6
Прикрепленный файл  2.bmp ( 146.3 килобайт ) Кол-во скачиваний: 4
 
Go to the top of the page
 
+Quote Post



Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 13:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01394 секунд с 7
ELECTRONIX ©2004-2016