Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: PLL в LM3S6432
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
stapleman
Здравствуйте.
Программирую lm3s6432. Пытаюсь запустить внутренний PLL, но он упорно отказывается запускаться. Хотя когда использую внешний кварц без PLL (BYPASS=0), то все работает.
Код, инициализирующий PLL, такой:
Код
void SYSCTL_Init (void){
    // get current value
    uint32_t rcc_buf = SYSCTL->RCC;

    // bypass the PLL and system clock divider
    rcc_buf |= SYSCTL_RCC_BYPASS;
    rcc_buf &= ~SYSCTL_RCC_USESYSDIV;
    // write new value
    SYSCTL->RCC = rcc_buf;

    // enable main osc
    rcc_buf &= ~SYSCTL_RCC_MOSCDIS;
    // write new value
    SYSCTL->RCC = rcc_buf;
    SysCtlDelay(524288);

    // select the crystal value and oscillator source
    rcc_buf &= ~(SYSCTL_RCC_XTAL_M | SYSCTL_RCC_OSCSRC_M);
    rcc_buf |= SYSCTL_RCC_XTAL_6MHZ;
    rcc_buf |= SYSCTL_RCC_OSCSRC_MAIN;
    // write new value
    SYSCTL->RCC = rcc_buf;

    SysCtlDelay(16);

    // Clear the PLL lock interrupt.
    SYSCTL->MISC |= SYSCTL_MISC_PLLLMIS;

    // power-down PLL desable
    rcc_buf &= ~SYSCTL_RCC_PWRDN;
    // select the desired system divider
    rcc_buf &= ~SYSCTL_RCC_SYSDIV_M;
    rcc_buf |= SYSCTL_RCC_SYSDIV_4;
    // enable use of the system clock divider
    rcc_buf |= SYSCTL_RCC_USESYSDIV;
    // write new value
    SYSCTL->RCC = rcc_buf;

    while (bit_is_clear(SYSCTL->RIS,SYSCTL_RIS_PLLLRIS)){}
    SYSCTL->MISC |= SYSCTL_MISC_PLLLMIS;

    // enable use of the PLL
    rcc_buf &= ~SYSCTL_RCC_BYPASS;
    // write new value
    SYSCTL->RCC = rcc_buf;

    SysCtlDelay(16);
}

При попытке использовать готовые функции, результат тот же.
Подскажите, пожалуйста, в чем может быть проблема.
DpInRock
По каким признакам вы судите, то не работает PLL?
stapleman
Цитата(DpInRock @ Dec 31 2010, 22:13) *
По каким признакам вы судите, то не работает PLL?

В функции main дергаю пином.
Если пишу rcc_buf &= ~SYSCTL_RCC_BYPASS, то нога перестает дергаеться. Контроллер перестает шиться. И приходится делать recovery "locked" chip.
DpInRock
Соответствует ли частота дерганья частоте кварца? (Лучше для этого использовать что-то типа PWM - аппаратного пина с выходной частотой - ибо частота дерганья пина вещь очень условная)ю
stapleman
Так, проблему локализовал до LDO.
Из errata вычитал, что PLL не работает при LDO <= 2.5 В. Пробую назначить LDO равным 2.75, а он меняется на 2.56 В. При назначении 2.5, он равняется 2.3В.
Когда попробовал внешнее напряжение 2.6 В подать, то все заработало.
Теперь у меня вопрос: что происходит с внутренним LDO?
Кварец 1 мкФ повесил. Замыканий нет.
DpInRock
Цитата
Когда попробовал внешнее напряжение 2.6 В подать

Надеюсь, что сие означает подача 2.6 на вывод VDD25 при отсоединенном пине 7?

Цитата
Пробую назначить

А это что означает?
stapleman
Цитата(DpInRock @ Jan 1 2011, 12:46) *
Надеюсь, что сие означает подача 2.6 на вывод VDD25 при отсоединенном пине 7?

Разумеется
Цитата(DpInRock @ Jan 1 2011, 12:46) *
А это что означает?

Значение напряжения LDO можно задавать програмно в диапазоне от 2.25 до 2.75 В
DpInRock
Тогда каков уровень пульсаций питающего напряжения? В милливольтах?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.