Перейти к содержанию
    

STM32f405 виснет PLL

Добрый день ув. форумчане

генерирурю файл syste_stm32f4xx.c с помощью утилиты Экселевской от разработчника

при запуске приложения виснет на строке

/* Enable the main PLL */

RCC->CR |= RCC_CR_PLLON;

пробовал от разных источников тактировать, когда тактирую напрямую от кварца или от внутреннего источника, то запускается без проблем, как только выбираю PLL с кварцем или внутренним источником, так отказывается работать...

причем на другой похожей плате запускается, разводка питания одинаковая у плат, правда вторая плата без внешнего кварца

частоту пытаюсь настроить 160мгц, но и другие частоты тоже не работают

не пойму в какую сторону копать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

    // Enable PLL
    RCC->CR |= RCC_CR_PLLON;

    // Wait till PLL is ready
    while ((RCC->CR & RCC_CR_PLLRDY) == 0) 
    ;

так выглядит код?

 

Попробуйте кубом сгенерить для проверки аппаратуры проект пустой (выведя MCO для контроля.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

https://www.dropbox.com/s/2dae76s0grdfdpm/D...d_MAG.lay6?dl=0 - вот файл разводки, кондеры по питанию и VCAPы стоят по 3х1мкф, схемы не имею, всегда сразу плату рисую. ещё навесом после стабилизатора 3.3 вольтового висит электролит 47мкф.

код выглядит так, при пошаговом выполнении прога падает именнно на той строке, которую я кинул, до цикла не доходит выполнение

Кубом сейчас попробую

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

состояние boot0 ситуации не меняет

 

попробовал сгенерить проект в кубе

так-же виснет, на ноги MCO ничего не выдает

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1) у вас очень много разъёмов, питание и земля процессора выведены не на один. возможно плата питанием и землёй включена последовательно в какую-то сложную сильноточную импульсную цепь. переключите питание и землю процессора на этих разъёмах таким образом, чтобы они находились в "стороне" от остальных узлов; или вообще отключите от платы всё лишнее - оставьте только землю и питание, подключенные к одному разъёму;

2) параллельно каждому конденсатору 1 мкФ припаяйте конденсатор 1000 пФ (или что-то около этого) NPO; он должен быть первым от процессора;

3) параллельно каждому конденсатору 1 мкФ припаяйте конденсатор 33 нФ (или что-то около этого) X7R; он должен быть вторым от процессора;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вот файл разводки
Нет никакого желания ставить sprint. Неужели трудно выложить картинку? Про рисование платы без схемы промолчу.

 

Был аналогичный случай - в схеме питание на AVdd подавалось через ферритовую бусину (ferrite bead). так вот контрактному сборщику попалась катушка деталей, которая была промаркирована как бусины, детали выглядели как бусины, но на самом деле являлись конденсаторами. Соответственно, пока процессор ничего не потреблял по аналоговому питанию - на этой ноге за счет каких-то утечек внутри процессора натекало достаточное для отпускания сброса по включению питания (POR) напряжение. Когда же включалась ФАПЧ (PLL) - напряжение просаживалось, процессор уходил в сброс. Именно на таком же операторе. После замены этого чуднОго элемента на нормальную бусину все заработало.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ещё покажите фото платы, чем паяли, промыли?

 

я на плате насчитал 6 конденсаторов питания и VCAP, вы пишете про 3. остальные не запаяны?

 

какого номинала резистор в цепи vdda?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Обратите внимание на VCAPx. Если на них окажется 0.1 мкФ - почти с гарантией будут проблемы. с рекомендованными 2.2 мкФ нормально. Соответственно, где брали конденсаторы, там могли положить не то.

 

зы: очередной кошмар. Ну неужели никто из тех, кто рисует в лайлоуте, не заметил, что макросы SMD конденсаторов и резисторов там под автоматический монтаж (ну или под пасту+печку)? Кладем конденсатор и не подлезть с паяльником. И на такой просторной плате переходные со сверловкой 0.3 и внешним диаметром 0.6... при этом проводники 0.2.

Изменено пользователем Genadi Zawidowski

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

на данный момент к разъемам подключен только ST_LINK находящийся в плате Discovery, остальные разъемы пустые

 

нашел косяк, присмотрелся к резистору идущему на Vdda, а он там 10ком стоит, по ошибке не туда впаял%) теперь запустилось все, спасибо большое

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

чудеса с PLL продолжаются

кварц 8мгц, выбираю в Экселевском файле источник HSE, ставлю частоту 160мгц, он мне высчитывает PLL_M=8 PLL_N=320 PLL_P=2 PCLK1=40 PCLK2=80, генерирурю файл, в коде заполняю структуру

int main()
{
 SystemCoreClockUpdate();

 RCC_ClocksTypeDef Clocks;
 RCC_GetClocksFreq(&Clocks);
....
}

и в дебаге вижу содержимое структуры

SYSCLK=500000000

HCLK=500000000

PCLK1=125000000

PCLK2=250000000

 

причем от HSI работает как задумано

осцил на ногах кварца показывает частоту 8мгц

 

to Genadi Zawidowsk... перед отправкой на производство плат все эти моменты были устранены

Изменено пользователем Reystlin

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...