Полная версия этой страницы:
STM32f405 виснет PLL
Reystlin
Jul 21 2016, 19:16
Добрый день ув. форумчане
генерирурю файл syste_stm32f4xx.c с помощью утилиты Экселевской от разработчника
при запуске приложения виснет на строке
/* Enable the main PLL */
RCC->CR |= RCC_CR_PLLON;
пробовал от разных источников тактировать, когда тактирую напрямую от кварца или от внутреннего источника, то запускается без проблем, как только выбираю PLL с кварцем или внутренним источником, так отказывается работать...
причем на другой похожей плате запускается, разводка питания одинаковая у плат, правда вторая плата без внешнего кварца
частоту пытаюсь настроить 160мгц, но и другие частоты тоже не работают
не пойму в какую сторону копать
Цитата(Reystlin @ Jul 21 2016, 22:16)

разводка питания одинаковая у плат
покажите схему и разводку
Genadi Zawidowski
Jul 21 2016, 21:19
Код
// Enable PLL
RCC->CR |= RCC_CR_PLLON;
// Wait till PLL is ready
while ((RCC->CR & RCC_CR_PLLRDY) == 0)
;
так выглядит код?
Попробуйте кубом сгенерить для проверки аппаратуры проект пустой (выведя MCO для контроля.
Reystlin
Jul 21 2016, 22:39
https://www.dropbox.com/s/2dae76s0grdfdpm/D...d_MAG.lay6?dl=0 - вот файл разводки, кондеры по питанию и VCAPы стоят по 3х1мкф, схемы не имею, всегда сразу плату рисую. ещё навесом после стабилизатора 3.3 вольтового висит электролит 47мкф.
код выглядит так, при пошаговом выполнении прога падает именнно на той строке, которую я кинул, до цикла не доходит выполнение
Кубом сейчас попробую
Reystlin
Jul 21 2016, 23:33
состояние boot0 ситуации не меняет
попробовал сгенерить проект в кубе
так-же виснет, на ноги MCO ничего не выдает
1) у вас очень много разъёмов, питание и земля процессора выведены не на один. возможно плата питанием и землёй включена последовательно в какую-то сложную сильноточную импульсную цепь. переключите питание и землю процессора на этих разъёмах таким образом, чтобы они находились в "стороне" от остальных узлов; или вообще отключите от платы всё лишнее - оставьте только землю и питание, подключенные к одному разъёму;
2) параллельно каждому конденсатору 1 мкФ припаяйте конденсатор 1000 пФ (или что-то около этого) NPO; он должен быть первым от процессора;
3) параллельно каждому конденсатору 1 мкФ припаяйте конденсатор 33 нФ (или что-то около этого) X7R; он должен быть вторым от процессора;
Сергей Борщ
Jul 22 2016, 05:37
QUOTE (Reystlin @ Jul 22 2016, 01:39)

вот файл разводки
Нет никакого желания ставить sprint. Неужели трудно выложить картинку? Про рисование платы без схемы промолчу.
Был аналогичный случай - в схеме питание на AVdd подавалось через ферритовую бусину (ferrite bead). так вот контрактному сборщику попалась катушка деталей, которая была промаркирована как бусины, детали выглядели как бусины, но на самом деле являлись конденсаторами. Соответственно, пока процессор ничего не потреблял по аналоговому питанию - на этой ноге за счет каких-то утечек внутри процессора натекало достаточное для отпускания сброса по включению питания (POR) напряжение. Когда же включалась ФАПЧ (PLL) - напряжение просаживалось, процессор уходил в сброс. Именно на таком же операторе. После замены этого чуднОго элемента на нормальную бусину все заработало.
ещё покажите фото платы, чем паяли, промыли?
я на плате насчитал 6 конденсаторов питания и VCAP, вы пишете про 3. остальные не запаяны?
какого номинала резистор в цепи vdda?
Genadi Zawidowski
Jul 22 2016, 08:39
Обратите внимание на VCAPx. Если на них окажется 0.1 мкФ - почти с гарантией будут проблемы. с рекомендованными 2.2 мкФ нормально. Соответственно, где брали конденсаторы, там могли положить не то.
зы: очередной кошмар. Ну неужели никто из тех, кто рисует в лайлоуте, не заметил, что макросы SMD конденсаторов и резисторов там под автоматический монтаж (ну или под пасту+печку)? Кладем конденсатор и не подлезть с паяльником. И на такой просторной плате переходные со сверловкой 0.3 и внешним диаметром 0.6... при этом проводники 0.2.
Reystlin
Jul 22 2016, 08:44
на данный момент к разъемам подключен только ST_LINK находящийся в плате Discovery, остальные разъемы пустые
нашел косяк, присмотрелся к резистору идущему на Vdda, а он там 10ком стоит, по ошибке не туда впаял%) теперь запустилось все, спасибо большое
Reystlin
Jul 22 2016, 20:26
чудеса с PLL продолжаются
кварц 8мгц, выбираю в Экселевском файле источник HSE, ставлю частоту 160мгц, он мне высчитывает PLL_M=8 PLL_N=320 PLL_P=2 PCLK1=40 PCLK2=80, генерирурю файл, в коде заполняю структуру
CODE
int main()
{
SystemCoreClockUpdate();
RCC_ClocksTypeDef Clocks;
RCC_GetClocksFreq(&Clocks);
....
}
и в дебаге вижу содержимое структуры
SYSCLK=500000000
HCLK=500000000
PCLK1=125000000
PCLK2=250000000
причем от HSI работает как задумано
осцил на ногах кварца показывает частоту 8мгц
to Genadi Zawidowsk... перед отправкой на производство плат все эти моменты были устранены
Reystlin
Jul 22 2016, 21:41
нашел, почему-то в файле stm32f4xx.h был HSE_Value дефайн на 25мгц
Цитата(Reystlin @ Jul 23 2016, 00:41)

нашел, почему-то в файле stm32f4xx.h был HSE_Value дефайн на 25мгц
известный баг
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.