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

 
 
> LPC2366, при записи в CCLKCFG все ломается.
meister
сообщение Apr 15 2008, 10:49
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 219
Регистрация: 20-11-07
Пользователь №: 32 484



Никак не пойму, что я делаю не так: при записи 199 (и при записи 1 тоже) в CCLKCFG все ломается. Кварц у меня 3.686МГц.

На МК написано следующее:
Код
LPC2366FBD100
SH3959.1          01
ZSD0743BY


Код
    void init_system_controls_and_status_register(void)
    {
        PCONP = 0;

        // 6.14 PLL setup sequence
        PLLCON_bit.PLLC = 0;
        PLLFEED = hw::PLLFEED_DATA1;
        PLLFEED = hw::PLLFEED_DATA2;
        
        PLLCON_bit.PLLE = 0;
        PLLFEED = hw::PLLFEED_DATA1;
        PLLFEED = hw::PLLFEED_DATA2;

        SCS = BIT_(hw::SCS_GPIOM) | BIT_(hw::SCS_OSCEN);
        while (!SCS_bit.OSCSTAT) {}
        
        CLKSRCSEL = hw::CS_MAIN_OSCILLATOR;
        
        PLLCFG_bit.MSEL = PLL_REGISTER_M - 1;
        PLLCFG_bit.NSEL = PLL_REGISTER_N - 1;
        PLLCON_bit.PLLE = 1;
        PLLFEED = hw::PLLFEED_DATA1;
        PLLFEED = hw::PLLFEED_DATA2;
        
        while (!PLLSTAT_bit.PLOCK) {}
        
        CCLKCFG = 0;        
        CCLKCFG = 199; // до этой строчки стабильно доходит, а через нее - нет

        PLLCON_bit.PLLC = 1;
        PLLFEED = hw::PLLFEED_DATA1;
        PLLFEED = hw::PLLFEED_DATA2;
    }
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Axel
сообщение Apr 15 2008, 14:15
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188



Может этот вариант поможет (в свое время родился после некоторых мучений):

Код
void PLLInit(u32 state)
{
    u32 stat_value;

    rSCS |= 0x20;      
    rSCS &= ~0x10;      
    while(!(rSCS & 0x40));

    if (rPLLSTAT & (1 << 25))
    {
        rPLLCON = 1;    
        rPLLFEED = 0xaa;
        rPLLFEED = 0x55;
    }

    rPLLCON = 0;      
    rPLLFEED = 0xaa;
    rPLLFEED = 0x55;
    CLKSRCSEL = 0x1;  

    if(state)
    {
        rPLLCFG = 11;
        rPLLFEED = 0xaa;
        rPLLFEED = 0x55;
        rPLLCON = 1;      
        rPLLFEED = 0xaa;
        rPLLFEED = 0x55;
    
        do
        {
            stat_value = rPLLSTAT;
        }
        while (((stat_value & 0x00007FFF) != 11) || ((stat_value & 0x00FF0000) >> 16) || !(stat_value & (1 << 26)));

        CCLKCFG = 3;
        USBCLKCFG = 0x05;
        rPLLCON = 3;       // enable and connect
        rPLLFEED = 0xaa;
        rPLLFEED = 0x55;
        while (!(rPLLSTAT & (1 << 25))); // Check connect bit status
        g_SysFreq = 72000;
    }
    else
    {
        CCLKCFG = 0;
        g_SysFreq = 12000;
    }
}


И, на всякий случай, проверьте, что значение PLLCFG соответствует требованиям к выходной частоте PLL: 275MHz <= Fout <= 290 MHz.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 23:21
Рейтинг@Mail.ru


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