Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

STM32 перестал прошиваться

Вс сен 17, 2017 18:52:52

Приветствую.
Сегодня пробовал прошить STM32F030F4 программатором ST-LINK/V2 (китайский, за 400 руб.) из Keil MDK-ARM Version 5 - кейл написал, что все в порядке, но камень не подавал признаков жизни. Попробовал прошить через ST-LINK utility v. 3.9.0.0 - подключился к МК без проблем, что-то в него даже записалось, но по окончании загрузки выдало ошибки: Connection to device is lost: check power supply and debug connection. If the target is in low power mode, please enable "Debug in Low Power mode" option from Target->settings menu. Эти настройки у меня уже были. Камень все еще ничего не делал. Запаял новый - все тоже самое. Обновил ST-LINK utility до v. 4.1.0.0 и прошивку программатора с V2.J27.S7 до V2.J28.S7 - теперь прошивка заливается в МК без ошибок, но при попытке сделать это повторно выдает: Can not connect to device! Камень по-прежнему не прошит нормально. К слову, пользовался этим программатором несколько лет и не имел проблем (последний проект был 3 месяца назад).

Re: STM32 перестал прошиваться

Вс сен 17, 2017 18:58:46

Т. е. первая прошивка проходит нормально, а последующие с ошибками? Наверное в коде SWD отключаете или переводите МК в режим энергосохранения с отключением отладочного интерфейса. Теперь нужно переключиться на бут и шить нормальную прошивку (без отключения SWD), или зажать сброс и шить в режиме Connect under reset.

Re: STM32 перестал прошиваться

Вс сен 17, 2017 19:44:13

Ни одна прошивка не проходит нормально. Прошивку генерировал кубом, а его обновил совсем недавно. Только обратил внимание, что там SWDIO и SWCLK теперь надо вручную включать при указании распиновки. Получается, я действительно выключил отладочный интерфейс.
Connect under reset установлен, но перепрошить, подтягивая сброс к земле, не получается.
Изображение

Re: STM32 перестал прошиваться

Вс сен 17, 2017 20:02:55

Нужно соединить вывод сброса с землей, нажать в проге кнопку Connect и через секунду отключить сброс от земли.
Или по другому. Вывод BOOT соединить с 3.3 вольта и прошить через SWD.

Re: STM32 перестал прошиваться

Вс сен 17, 2017 20:14:23

Мурик, можешь ещё предложить станцевать с бубном.
Нахрена советовать если сам ноль?

Re: STM32 перестал прошиваться

Вс сен 17, 2017 20:36:28

Досикус, кроме как хамить вы больше ничего не можете...

Re: STM32 перестал прошиваться

Вс сен 17, 2017 20:43:10

Это всего лишь констатация факта.
Последствия юзанья барсиков, калокубов и эмоблитцев...

Re: STM32 перестал прошиваться

Ср сен 20, 2017 08:41:48

Нужно соединить вывод сброса с землей, нажать в проге кнопку Connect и через секунду отключить сброс от земли.
Или по другому. Вывод BOOT соединить с 3.3 вольта и прошить через SWD.

Если БУУТ 0 соединить с 3,3В , то шить нужно не через СВД . а через УАРТ.
Тут Досикус прав .

Re: STM32 перестал прошиваться

Ср сен 20, 2017 10:19:41

Вы не поняли. Когда МК переведен в ражем загрузки, он не выполняет залитую в него прошивку, а значит SWD не отключен и МК можно перепрошить как через UART так и через SWD.

А что касается досикуса, он хам. У него больше хамских ответов чем по теме. Не верите? Посмотрите его ответы на форуме.

Re: STM32 перестал прошиваться

Ср сен 20, 2017 12:01:26

Если не можешь осознать полезность чужих советов, не стоит обвинять других.
У ТС китайский огрызок что не имеет вывода RESET для STM32 .
И что бы не зависеть от советов "умниковсамихничегонезнающих", проще исправить огрызок чем исполнять ритуальные танцы под твою дудку...

Re: STM32 перестал прошиваться

Ср сен 20, 2017 12:13:13

dosikus писал(а):У ТС китайский огрызок что не имеет вывода RESET для STM32 .
Plazmoid писал(а):ST-LINK/V2 (китайский, за 400 руб.)
Китайский за 400 рублей https://ru.aliexpress.com/item/STLINK-S ... 70276.html
Точно уверены что у него нет вывода сброса?
Не оригинал, но вывод RESET должен быть.

Re: STM32 перестал прошиваться

Ср сен 20, 2017 12:20:23

А что касается досикуса, он хам.
Он в душе хороший человек :) Это его форум kazus испортил.

Re: STM32 перестал прошиваться

Ср сен 20, 2017 12:21:26

Надо не гадать надо знать https://geektimes.ru/post/287748/
А потом уже советовать...

Re: STM32 перестал прошиваться

Ср сен 20, 2017 12:23:40

Вы по ссылке переходили? :facepalm:
Какой там отладчик и какой на https://geektimes.ru/post/287748/

Re: STM32 перестал прошиваться

Чт сен 28, 2017 23:30:03

Мурик прав - у меня программатор с ресетом. Но дело оказалось в том, что куб (протестировал версии 4.18.0 и 4.22.1) неправильно конфигурирует ФАПЧ и МК остается без тактового сигнала (с источниками HSI и HSE без PLL все работает). Я сообщил в техподдержку об этой проблеме, может, пофиксят. Пока остается настраивать умножитель частоты ручками.
А с SWD никакой проблемы вовсе не было.

Re: STM32 перестал прошиваться

Пт сен 29, 2017 06:32:56

Не порите чушь.
При физически соединенном Reset и выставленной опцией connect under Reset, STLink'у глубоко фиолетово на настройки тактовой . Прошьет и не подавится.
Но все это справедливо для STLink версии 2.0 и выше.
Что у вас за Link мне не известно...

Re: STM32 перестал прошиваться

Пт сен 29, 2017 10:10:49

Людям свойственно ошибаться, а также неточно формулировать мысли, поэтому не стоит цепляться к каждому слову, уважаемый dosikus. В конце концов, если бы я знал, в чем проблема, то не создавал бы эту тему. Сначала я думал, что сломался программатор и МК не прошивается, но не был в этом уверен. Потом думал, что отвалился SWD. В итоге проблема оказалась именно в ФАПЧ - это определено и подтверждено опытным путем. Других проблем все это время НЕ БЫЛО.

Re: STM32 перестал прошиваться

Пт сен 29, 2017 12:08:40

В итоге проблема оказалась именно в ФАПЧ - это определено и подтверждено опытным путем. Других проблем все это время НЕ БЫЛО.


Вы вновь упорото утверждаете , и не можете даже мысли допустить, что глубоко заблуждаетесь.
Я вам вновь заявляю
При физически соединенном Reset и выставленной опцией connect under Reset, STLink'у глубоко фиолетово на настройки тактовой .


Подтвержденно неоднакратно с различными Link'ами и чипами.
Соединение с SWD с connect under Reset происходит ДО ВАШЕЙ УСТАНОВКИ ТАКТОВОЙ
Если у вас вменяемый STlink , проверяйте линию RESET , ваш экземпляр может просто-напросто не работать с ней.
Ну и не мешало бы озвучить какими проводниками соединен таргет, шнур USB так же может влиять.

Re: STM32 перестал прошиваться

Пт сен 29, 2017 12:48:09

Вы говорите, что программатор с соответствующими настройками прошивает МК. Я подтверждаю это - во флэш записываются данные. В том числе можно записать прошивку с некорректно настроенным PLLCLK, выбранным в качестве источника тактового сигнала. В таком случае камень прошит, но делать ничего не может. Можете сами попробовать сделать в кубе конфиг с ФАПЧ и попробовать прошить МК и убедиться, что он не сможет даже ножкой подрыгать.
P.S. Я уже неделю назад сделал рабочую железку, но, по-видимому, это сон. :))

Re: STM32 перестал прошиваться

Пт сен 29, 2017 13:18:47

Plazmoid, тема озаглавлена STM32 перестал прошиваться и вы до последнего утверждали что чип не прошивается.
Так что учитесь излагать свои мысли , а не вываливать свои надумки.
Про то что калокуб вреден я твержу везде, но вам же хочется нарываться на грабли.
Здесь рабочий инит тактовой на 64МГц , ни что не отваливается и прекрасно работает.
Код:
 void SystemInit(void){
if ((RCC->CFGR & RCC_CFGR_SWS) == RCC_CFGR_SWS_PLL)  /* (1) */
         {
          RCC->CFGR &= (uint32_t) (~RCC_CFGR_SW); /* (2) */
          while ((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_HSI) /* (3) */
          {
          /* For robust implementation, add here time-out management */
          }
         }

         RCC->CR &= (uint32_t)(~RCC_CR_PLLON); /* (4) */
         while((RCC->CR & RCC_CR_PLLRDY) != 0) /* (5) */
         {
          /* For robust implementation, add here time-out management */
         }
         FLASH->ACR = FLASH_ACR_PRFTBE | FLASH_ACR_LATENCY;
         RCC->CFGR|=RCC_CFGR_PLLSRC_0;
         RCC->CFGR = (RCC->CFGR & (~RCC_CFGR_PLLMUL)) | (RCC_CFGR_PLLMUL16); /* (6) */
         RCC->CR |= RCC_CR_PLLON; /* (7) */
         while((RCC->CR & RCC_CR_PLLRDY) == 0) /* (8) */
         {
          /* For robust implementation, add here time-out management */
         }
         RCC->CFGR |= (uint32_t) (RCC_CFGR_SW_PLL); /* (9) */
         while ((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL)  /* (10) */
         {
          /* For robust implementation, add here time-out management */
         }
}   
Ответить