Я построил свою собственную плату с STM32F7-45VGT6. Я успешно запрограммировал его с помощью ST-LINK v2 (но не оригинального) и теперь даже не могу подключиться к MCU.
Я использую ST-Link Utility из интерфейса ST и SWD. Это может быть случай, когда я использую выводы SWD в качестве вывода, и в своем коде я установил их как вывод GPIO. Может ли это быть так?
Тем не менее, я подключаю свой контакт сброса к GND и устанавливаю опцию «Подключить при сбросе» в утилите ST-Link, но она не работает ... Что я могу сделать?
В интернете я нашел кое-что об использовании BOOT0 Pin, но точно не знаю ...
stm32
programming
flash
st-link
zupazt3
источник
источник
Ответы:
Мне удалось решить эту проблему. Если кто-нибудь сталкивается с подобной проблемой, вот что я сделал:
Я использовал ST-Link v2 и ST-Link Utility. В настройках я установил «Подключить при сбросе» и интерфейс SWD (я не уверен насчет частоты).
Затем я нажимаю кнопку сброса на моей плате и нажимаю «Target» -> «Erase chip», и сразу после нажатия я отпускаю кнопку - она стерла чип, чтобы я теперь мог перепрограммировать свой MCU.
В любом случае, если вам нужно использовать выводы SWD в качестве вывода, добавьте некоторую задержку в начале программы или используйте перемычку, чтобы отключить / включить установку этих выводов в качестве выходов.
источник
Для того чтобы подключение было сброшено, ST-Link должен иметь контроль над выводом сброса, если вы подключите его к заземлению, ST-Link не сможет запустить цель и получить к ней доступ.
Если во время включения питания вы подняли вывод BOOT0 на высокий уровень, MCU запустится во внутренний загрузчик, и вы сможете получить доступ, используя несколько последовательных протоколов (см. Справочное руководство для получения дополнительной информации).
Внутри загрузчика должны быть доступны выводы SWD, но я не уверен на 100% в этом.
ST Flash Loader Demonstrator - это инструмент, который позволяет стирать / программировать микро, используя интерфейс UART. Если вы не можете получить доступ к любому из UART вашего микро, это решение не будет работать для вас.
источник
если вы используете stmcubemx, вам нужно настроить последовательный провод на вкладке распиновки stmcube. на вкладке распиновки нажмите SYS и измените параметр отладки на последовательный провод. это решит мою проблему, и, возможно, вашу проблему тоже.
источник
Я загрузил некоторый код на свою собственную плату STM32F427. Тогда я больше не могу подключиться к своей плате с помощью утилиты ST-LINK. Я думаю, что мой код испортил конфигурации контактов порта отладки (? Не могу подтвердить). Я сделал следующее, чтобы установить соединение и перепрограммировать мою плату:
Я восстановил 2 доски с помощью этого трюка. Надеюсь это поможет. --Bob
источник
Как Дили сказал:
STM32CubeMx не настраивает порт отладки по умолчанию, следовательно, ST-Link перестанет работать, как только вы загрузите свой код. Вы должны стереть чип с помощью ST-Link Utility, например. Чтобы подключиться к MCU, мне пришлось во время включения питания сильно тянуть контакт BOOT0, чтобы активировать загрузчик. Затем перейдите в меню Tarjet и стереть чип .
источник
Чтобы перепрограммировать MCU, удерживайте кнопку сброса и выберите «Подключиться к устройству» в ST-Link Utility или нажмите «загрузить» в вашей IDE (например, Keil), а затем отпустите кнопку сброса.
источник
Загрузочные контакты (биты в некоторых версиях) могут препятствовать запуску отладчика. Убедитесь, что вы не внедрили загрузочный шаблон при запуске (определенный двоичный шаблон на контактах boot0 и boot1), иначе ваш MCU перейдет в состояние загрузки.
источник