PLL для STM32F205 не взлетает

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Прорезались зубы
Сообщения: 210
Зарегистрирован: Пн окт 21, 2013 07:33:45

Сообщение FPGAlover »

Добрый день! у меня почему то не программируется PLL. Как бы я его не программировал, с выхода имею неприменные 80мгц минус примерноерно 3%.
кварц запаян на 16мгц. Попытки отключить часть кода, ответственные за его программирование приводят к тому же результату.
Этот код выполняется первым в main, однако написано это в рамках примера от STM (не исключаю, что в каком ни будь стартапе что то имеется по этому поводу. например хитрый лок или обновление по прерыванию)
Подскажите, пожалуйста, где я не прав ? :)
//настройка системы тактирования
RCC_ClockSecuritySystemCmd(ENABLE);
RCC_HSEConfig(RCC_HSE_ON);
while((RCC->CR & RCC_CR_HSERDY) == 0) {;}
RCC_PLLCmd(DISABLE);
while((RCC->CR & RCC_CR_PLLRDY) == 1) {;}
RCC_PLLConfig( RCC_PLLSource_HSE, 8 , 192 ,4, 8 ); //M N P Q
RCC_PLLCmd(ENABLE);
while((RCC->CR & RCC_CR_PLLRDY) == 0) {;}
FLASH_SetLatency(FLASH_Latency_3);
FLASH->ACR |= FLASH_ACR_PRFTEN;
RCC_SYSCLKConfig(RCC_SYSCLKSource_HSE);
// пробрасывание частот на MCO1 и MCO2 чтобы пощупать осциллографом
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOC , DISABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC , ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
RCC_MCO2Config(RCC_MCO2Source_PLLCLK,RCC_MCO2Div_4);

RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOA , DISABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA , ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
RCC_MCO1Config(RCC_MCO1Source_HSE,RCC_MCO1Div_4);
// дальше ничего не выполняем ,бо чистота эксперимента ...
while (1) { };
Шоб я польку танцевал..
Реклама
Прорезались зубы
Сообщения: 210
Зарегистрирован: Пн окт 21, 2013 07:33:45

Сообщение FPGAlover »

Создал проект с нуля - заработало как надо...
где же грабли?
Пожалуйста, подскажите варианты, почему это может быть? Возможно ли PLL заморозить, или ввести в состояние индифферентности по отношению к программирующему воздействию?
Или у STM принято по какому ни будь злобному прерыванию, прописанному в стартапе следить за частотой и поправлять.

А пока буду ковырять стартап... познавать армовский ассемблер :shock:
Шоб я польку танцевал..
Реклама
Прорезались зубы
Сообщения: 210
Зарегистрирован: Пн окт 21, 2013 07:33:45

Сообщение FPGAlover »

поковырял... а там то и ковырять оказалось нечего.... дефолтные обработчики прерываний и таблица векторов из них слеплена....
и все же... где же собака порылась?
Шоб я польку танцевал..
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

Вы бы проект проблемный выложили, а то проект пересоздали, код заработал. Получается Ваш код рабочий. А как ответить где собака порылась, если даже порыться не в чем!?
С уважением.
Ставим плюсы: )
Реклама
Эиком - электронные компоненты и радиодетали
Прорезались зубы
Сообщения: 210
Зарегистрирован: Пн окт 21, 2013 07:33:45

Сообщение FPGAlover »

В общем, сразу после программирования PLL своими значениями (PLLM=8 PLLN=192 PLLP=4), читаю из него же PLLM=25 PLLN=240 PLLP=2 весьма осмысленные константы для разгонки до 120 МГЦ от кварца 25Мгц
Проект - пример от ST виртуального ком порта качал отсюда http://emproj.com/Documents/ARM/Applica ... ce_lib.zip.
лежит в папке Project\USB_Device_Examples\VCP\EWARM
работаю в IAR.
использую следующие дефайны:
USE_STDPERIPH_DRIVER
STM32F2XX
USE_STM322xG_EVAL
USE_USB_OTG_FS
Вроде бы исчерпывающе :)
Шоб я польку танцевал..
Реклама
Прорезались зубы
Сообщения: 210
Зарегистрирован: Пн окт 21, 2013 07:33:45

Сообщение FPGAlover »

Нашел таки :) дело было в "system_stm32f2xx". там все эти константы прописаны и systeminit вызывается из Reset_Handler
правда все равно остается недопонимание, почему перепрограммировать из майна не удается...
Шоб я польку танцевал..
Реклама
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1433
Зарегистрирован: Вс дек 02, 2012 03:13:48
Откуда: Калининград

Сообщение balmer »

В демках STM32L есть переключение частоты. Но там сначала переключают на HSI clock. Потом уже перепрограммируют HSE/PLL.
Ответить

Вернуться в «ARM»