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

STM32F373 - проблемы с прошивкой

Добрый день, товарищи!

 

Возникла у меня такая проблема: появилась необходимость запрограммировать STM32F373 в наборе с разной периферией. В качестве программатара использую stm32l-discovery. В качестве среды - keil 5. Проект собрал, в качестве тестовой програмки решил помигать светодиодом на плате (PA1). Получился вот такой код:

 

#include "stm32f37x.h"

int i=0;

int main(void)
{
GPIO_InitTypeDef GPIO_IS;
/* GPIOD Periph clock enable */
 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
GPIO_IS.GPIO_Pin  = GPIO_Pin_All;
 GPIO_IS.GPIO_Mode = GPIO_Mode_OUT;
 GPIO_IS.GPIO_Speed = GPIO_Speed_2MHz;
 GPIO_IS.GPIO_OType = GPIO_OType_PP;
 GPIO_IS.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOA, &GPIO_IS);

while(1)
{
	GPIO_Write(GPIOA, 0xFF);
	while(i<100000) i++;
	i=0;
	GPIO_Write(GPIOA, 0xFF);
	while(i<100000) i++;
	i=0;
}
}

#include "stm32f37x.h"

 

Сразу оговорюсь, не осознал прблему и затер старый код, так что возможно использовался порт B. Сам код эффекта не имеет (ибо при переходе по внутренним while-ам состояние не меняется).

Далее, я попытался прошиться из под keil через SW. Плата увиделась, прошивка прошла. А тут и началась беда. больше плата не распознавалась, понять почему, а тем более исправить, я не смог.

 

Попробовал стандартуную утилиту к ST-LINK - эффект тот-же: скорее всего исключил проблему с keil.

Попробовал вернуть программатар на МК discovery - работает: вроде как исключил проблемы с программатором.

Не пробовал: подключить кроме ног SWDIO и SWCLK еще ногу ресета. Завтра попробую, но очент=ь сложно - она никак не разведена на плате(

 

В голове созрел такой вариант: раз ноги SWDIO и SWCLK сопряжены с шиной порта A, я снял с них функцию отладочных входов/выходов.

 

Больше вариантов я не придумал, разве что МК погорел (чур меня).

 

Надеюсь на вашу мудрость и понимание вороса :help: .

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

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


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

Вообще то я не силен в CMSIS, не приходилось использовать.

Но вроде как инициализируете порт F, а пишите в А, нет?

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


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

Поправил! Спасибо, что указали на ошибку. Как я уже сказал, код я старый затер, но точно помню, что все порты были в соответствии.

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


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

Тогда и далее в цикле:

Вы в обоих случаях пишите 0xFF, что не приводит к изменению состояния выходов.

Похоже код не имеет отношения к проблеме, если она вообще существует...

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


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

Код действительно не имеет смысла, о чем я и говорил в топике. Он был создан с единственной целью - прошить что-то в МК. опять же с другой стороны данный код не должен мешать последующей прошивке. Но проблема на лицо: первый раз проект залился в МК, после чего МК перестал определяться средствами прошивки и отладки.

 

И понимаю ваш скепсис по поводу проблемы. Проблема не с кодом, который не претендует на что-то правильное и работающее. Проблема вот с чем: мог ли я програмно обрезать себе функцию отладки и прошивки через порт SW, и если да, то как это исправить.

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

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


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

Значит я неправильно прочитал Ваше письмо.

Видимо проблема в том, что Вы задействовали _все_ выводы порта А, в том числе и интерфейса SWD.

Хотя чтобы отменить функционал SWD, надо вроде Remap ног делать.

Тем не менее ST-LINK Utility умеет прошивать в разных режимах.

Вероятно Вам поможет опция "Under Reset", или что-то в этом духе.

Чтобы прошивка ничего не успела сделать с ногами.

 

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

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


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

Попробовал сейчас снизить частоту для ST-LINK до 100 кГц. Не подключился. Перепробовал все комбинации режимов и ресетов - тоже самое.

 

Не пробовал еще подключить кроме ног SWDIO и SWCLK еще ногу ресета. Завтра попробую, но очень сложно - она никак не разведена на плате(

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

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


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

Проблема решилась добавкой ресета к SWD шине. Как правильно говорил amiller, если перезагрузить МК, то порт А не успеет проинициализироваться и прошиться удастся.

Думаю добавить теперь в код задержку перед инициализацией ног в несколько секунд, на всякий пожарный, что бы успевать прошиться, если что-то пойдет не так.

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


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

Думаю добавить теперь в код задержку перед инициализацией ног в несколько секунд, на всякий пожарный, что бы успевать прошиться, если что-то пойдет не так.
Вы просто когда будете перенастраивать порт А, настраивайте PA14, PA15 в режим SWD. Или просто не трогайте, если ваша библиотека такое позволяет.

 

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


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

Думаю добавить теперь в код задержку перед инициализацией ног в несколько секунд, на всякий пожарный, что бы успевать прошиться, если что-то пойдет не так.

 

А почему нельзя жить дальше с добавленным ресетом, не думая ни о каких портах?

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


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

А почему нельзя жить дальше с добавленным ресетом, не думая ни о каких портах?

 

Проблема вот в чем: плата уже используется по целевому назначению, никто переразводить её не будет ради добавления шины ресет от МК до порта SWD. А с напаянным к ножке МК проводком плату ни заказчику не покажешь, не на испытания не поставишь. Во и приходится изгаляться(

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

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


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

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

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

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

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

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

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

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

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

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