St link v2 не подключается к компьютеру
Возникла проблема с китайским свистком ST Link V2. При подключении не распознаётся и отображается в диспетчере устройств как unknown usb device (device descriptor request failed). Смена провода и порта ничего не дали. Эмуляторов оптических дисков на пк не имеется. Заметил только то, что если его тупым оброзом переподключить раз 15, то на 15 раз он распознается и увидится системой, после чего абсолютно адекватно распознается ST Link Utility и прошьёт МК. Пробовал разные версии дарайверов ( 2013 и 2017 года), ничего не дало.
Китайский ST-Link V2
Добрый вечер. На али обнаружил в большом количестве вот такие ST-Link V2.
Китайский ST link v2
У кого есть прошивка родная от китайского ST link v2. Вчера перестал определятся на плате написано.
Китайский ST-LINK V2 и STM32F103C8T6
Об этом много писали и пишут, но конкретного решения в моем случае найти не удалось. Имеется.
Прошить ST Link v2 китайский
Подскажите как прошить STLINK 2. На плате 4 отверстия. Умер после не корректного накатывания.
Если комп не может получить дескрипторы, то проблема аппаратная. Вы напрямую в компьютер включаете или через кабель-удлинитль? Может, кабель слишком длинный или просто плохой? Попробуйте подключить без кабеля. Если не поможет, то в другой порт.
Это значит, что он был таким с рождения. Хочу отметить, что он каким-то рандомным образом то опреляется и работает, то нет.
Добавлено через 1 час 4 минуты
Пока перепаивал порт юсб заметил, что если чип, установленный на программаторе, будет немного нагрет, то в таком случае программатор распознаётся с первого раза и нормально работает. У меня есть подозрение, что у него установлено тактирование от внутренноего источника, у которого от температуры гуляет частота. В общем, можно сказать, что проблема решена, уже заказал новый ст линк, а до его прихода буду юзать программатор в паре с зажигалкой.
если чип, установленный на программаторе, будет немного нагрет, то в таком случае программатор распознаётся с первого раза и нормально работает. У меня есть подозрение, что у него установлено тактирование от внутренноего источника
От внутреннего запустится только если кварц не стартует.
В вашем случае есть вероятность плохой пайки. Пропаяйте МК для начала.
Напишу сюда ибо в инете нигде не нашел решения, а грабли серъезные.
Предистория: потребовалась тут платка с МК пошустрее Меги128, был выбран Cortex M4 — STM32F405 (памяти вагон, периферии с достатком и производительность очень приличная). Т.к. это был первый опыт работы с СТМ32 вообще, были перерыты:
AN4488 Getting started with STM32F4xxxx MCU hardware development
RM0090 Reference manual
UM1075 ST-LINK/V2 in-circuit debugger/programmer for STM8 and STM32
STM32F405-407 pinouts
Схема перерисована, выводы VAPP разъема JTAG (их там 2) не подключил на плате — т.к. не планировалась прошивка с питанием от программатора. Плата страссирована и отправлена в производство. Получено, запаяно, питания проверены, цепляем официальный ST-LINK V2, стартуем утилитку ST-Link Utility. По JTAG подключиться отказалась, по SWD подцепилась, МК определила и считала из него все. Я тут успокоился и первую прошивку решил делать на след день, а зря…
По факту оказалось что через 1 и 2 выводы с платы считывается напряжение питания. Когда с МК считывалось что-то, то на эти выводы ST-LINK не обращал внимание, а когда пишет, рулит ядром — очень даже обращал. И выводил ошибку по питанию. Питание ес-но в норме, оно и на 2 выводе есть (с самого СТЛИНКА), но в районе 1.7 В — что воспринимается как косяк…
Вообщем набросил перемычку с питания на второй вывод — и все заработало.
С JTAG работал первый раз в жизни…
UPD: та же самая проблема подстерегает Вас если Вы работаете через SWD — не будет питания на выводах VAPP — не сможете прошить.
Программирование STM32VLDiscovery через STM32 ST-Link Utility.
Ну, здесь все намного проще, чем в Keil’e. Просто скачиваем утилиту, устанавливаем (скачать можно по этой ссылке - ST-Link Utility). Как и в первом случае заменяем файл STLinkUSBDriver.dll. Он лежит здесь:
- STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility
В принципе, это все! Запускаем утилиту, ну а дальше все прозрачно – кнопка Connect для подключения, меню Open File – для выбора файла прошивки. В общем, все понятно.
Итак, мы рассмотрели два способа прошивки STM32VLDiscovery, выбирайте любой на свой вкус! )
Когда вы первый раз заходите с помощью соцсетей, мы получаем публичную информацию из вашей учетной записи, предоставляемой провайдером услуги соцсети в рамках ваших настроек конфиденциальности. Мы также автоматически получаем ваш e-mail адрес для создания вашей учетной записи на нашем веб сайте. Когда она будет создана, вы будете авторизованы под этой учетной записью.
Когда вы первый раз заходите с помощью соцсетей, мы получаем публичную информацию из вашей учетной записи, предоставляемой провайдером услуги соцсети в рамках ваших настроек конфиденциальности. Мы также автоматически получаем ваш e-mail адрес для создания вашей учетной записи на нашем веб сайте. Когда она будет создана, вы будете авторизованы под этой учетной записью.
Хорошая статья. только не понятно, зачем подменять STLinkUSBDriver.dll вашим вариантом? интересно:вижу,что размер ее много больше родной, а что там? и еще вопрос: можно ли слить hex-файл с отладочной платы?
Просто часто не заводится ST-Link, если файл не подменить, хотя у меня на работе, например, и с новым (это тот, который меньше) нормально работало. Слить можно, если не установлен бит защиты
Спасибо за быстрый ответ 🙂 Курю STM32L Discovery. Хочу для начала слить тестовый hex, зашитый при покупке. Установил ST-LINK Utility, подменил драйвер STLinkUSBDriver.dll , диспетчер устройств винды видит "STMmicroelectronics STLink dongle" при включении ST-LINK Utility ругается "No STLink detected" в settings-connection protocol стоит SWD (неактивна, серым цветом) ниче поменять не дает. Плата подключена, блымает свой тест на ЖКИ, посмеивается, наверное)) Куда копнуть, посоветуйте?
Ну вообще у меня один раз в жизни только ST-Link Utility не увидела девайс, в итоге оказалось, что разъем на плате для мини USB не контачит ) Если все норм с подключением, то в моем компьютере платка должна как флэш-накопитель определяться
Решил попробовать родной STLinkUSBDriver.dll - тот, что 65 кб весит. Девайс определился сразу ( кстати, win7 ultimate, 32 bit) и порекомендовал мне firmware upgrade, подождет)). Загрузился код с адреса 0х8000000 размером 0х1000, слово 32бит. Смог сохранить в hех. Опять же вопрос: чтобы слить всю прошивку "100%" какой стартовый адрес и длину блока выставить? Заранее спасибо 🙂
В Keil'е в настройках, во вкладке target по-моему, прописан адрес и размер как раз области памяти
Здравствуйте. Пожалуйста подскажите как сделать следующее в Keil. Пример для PIC PORTB=0x10010001; установка сигналов на порту B. Спасибо.
У STM32 свои регистры, отличающиеся от PIC. Надо смотреть в reference manual какой регистр и за что отвечает.
Если есть возможность вставьте кусок кода, а под свой контроллер я сам подгоню. Просто не до конца понимаю как в порты загонять данные. Спасибо.
Поздравляю всех с праздником великой победы!
Так что за версию STLinkUSBDriver.dll вы продвигаете и где Вы ее взяли?
В IAR6.5 - 64KB,
В IAR7.0 - 84KB.
Это фирменные драйверы, отлично работают кстати у меня на разных компьютерах.
Почему у Вас размер 381 КБ, объяснитесь!
Не надо истерик 😉
Несколько лет назад была распространенная проблема с неработающим ST-LINK. В итоге, какими то людьми в интернете был создан/найден/придуман файл подменяющий стандартный. Конкретно у меня только на одном ПК не завелся ST-LINK за все время использования. Все исправилось подменой файла. Если у Вас работает, то это очень хорошо)
ок, скорее всего это файл от старой версии железа.
Вопрос, можно ли с помощью st-linka от stm32f4discovery прошивать чипы с питанием 1.8 вольт? (LIS331EB) Достаточно ли поставить пару резисторов для падения напряжения в разрыв swdio и swclk ?
Добрый день.
Может можете подсказать.
При программировании stm32LVDiscovery получилась опечатка в задаче частоты генератора. На порядок кажется ошибся. После прошивки видно, что работает микросхема, но перестала прошиваться, стираться через внутренний программатор. Что можно сделать? На ATMega -х в таком случае можно было собрать и подключить внешний тактовый генератор - спасало.
Честно говоря, не сталкивался с такой проблемой..не знаю даже, что предложить
Проблема решается легко:
1.Подключить дискавери к компу.
2.Отключить usb шнур от дискавери.
3.Закоротить вывод boot0 и Vdd.
4.Подключить usb шнур к дискавери.
5.Снять перемычку с boot0 и Vdd.
6.Утилитой или из Keil дать команду Erase.
Комментарии ( 13 )
UM1075
User manual
ST-LINK/V2 in-circuit debugger/programmer for STM8 and STM32
страница 11 под таблицей.
1. The power supply from the application board is connected to the ST-LINK/V2 debugging and programming
board to ensure signal compatibility between both boards.
Ага, но я «по привычке» решил что это питание с программатора на плату. А сноски внизу — кто их читает… :) Это шутка конечно, но в таком количестве макулатуры нарывшись трудно что-нить не пропустить.
Как-то так исторически сложилось, что, хоть и «подружился» с микроконтроллерами от ST Microelectronics я уже давненько, но полноценного отладчика до сих пор у меня не было. «Подсадил» на STM8 меня друг, подарив на день рождения платку STM8S-Discovery. Вдоволь наигравшись с целевым камушком, я отключил отладочную часть платки, а встроенный ST-Link стал «рабочей лошадкой» в моей лаборатории. Таковым и оставался бы до сих пор, и всё было хорошо, да вот где-то с полгода назад случилась ситуация, которая сподвигнула меня на изыскания по размножению отладчика: мне пришлось подключить обратно отладочную часть дискавери, так как проэкт, над которым предполагалось работать, использовал тот же проц, что и в дискавери, и обросла платка некислым таким «ежиком» из проводов и деталюшек, закипела работа… А тут заказчик звонит-мол, приедь ко мне да подправь, плиз, прошивочку в своём устройстве-да там фигня, задержку на секунду увеличить и всего-то делов… А «рабочая лошадь» чуть ли не намертво к рабочему столу привязана проводами да кабелюками, блин! Пришлось разбирать, конечно… Вернувшись от заказчика и грустно поглядев на то, что ещё утром было полем для бурной деятельности по проверке идей-полез искать вдохновения в гугле. Кому интересно, что из этого получилось-добро пожаловать под отрезь… :)
Вариант «пойти и купить», конечно же, рассматривался. Но, поскольку «неспортивно», был оставлен в качестве «плана Б». Очень быстро были найдены фотографии внутренностей полноценного ST-Link, его «слизанная» схема, и всё хорошо, да только прошивки для полного счастья не хватало. Но на третьей странице гугля была найдена ссылочка на наш же форум, где пользователь Chinook выложил «слизанную» им прошивку от ST-Link V2.
Само собой разумеется, вариант «сделать самому» тут же перевесил «план Б». Ну и кроме того, возможность добавить некоторый функционал, отсутствующий в фирменном St-Link, весьма таки грела душу.
Тут надо заметить, что чаще я делаю мелкие девайсики, которые дополняют или расширяют функционал родительских устройств. Счётчики там всякие, интерфейсные платки, индикаторы и прочая тому подобная мелочёвка. И большинство этих штучек получают свои миллиамперы питания от родительского устройства, вживляясь в его схему. Поэтому отсутствие в штатном St-Link возможности запитывать таргет непосредственно от отладчика, и как следствие-отсутствие возможности выбора питания-5 или 3.3 вольта-меня нисколько не радовало. Да, конечно же, существует лабораторный источник питания и всё такое… Собственно говоря, первое включение после сборки всегда через лабораторный БП-мало ли что, даже новые деталюшки и то не всегда бывают исправными, ну а если уж где-то «соплю» проглядеть-так и подавно проблемы будут. Но когда всё проверено-зачем лабораторный БП гонять, если можно запитаться прямо от компа?
Вот примерно с такими мыслями я и приступил к компиляции входных данных. Были изучены доступные схемы отладчиков-из мануалов по разным версиям Discovery и найденные в сети, внесены изменения и доработки, в результате получилась вот такая spaghetti diagram схема:
Поскольку на момент составления схемы всё ещё были некоторые нестыковки, в частности-разночтения в подключении ножек идентификации, разводка JTAG в одной из схем отличалась, и, кроме того, окончательно было непонятно: заработает этот компот как надо или же нет-то часть ножек контроллера была выведена на контактные площадки для удобства перекоммутации. А если бы эта компиляция не заработала-то эти дополнительные контактные площадки позволят использовать плату как отладочную для какого-нибудь простенького USB устройства. Как раз с целью возможности использовать эту плату как отладочную я и развёл на ней JTAG-интерфейс, ибо JTAG J-Link у меня имеется в виде отдельного устройства. А для облегчения программирования платы теми, кто будет повторять эту конструкцию, на отдельный разъём были выведены все контакты, необходимые при программировании микроконтроллера с использованием его собственного загрузчика. Забегая вперёд, замечу, что ошибки в выбранной мной для работы версии схемы всё же сделали своё чёрное дело, и готовую плату пришлось-таки немного почикать скальпелем и засопливить перемычками. В статью пошла уже исправленная версия схемы и разводки, ну а фотки-уж как есть…
Разводка разъёма SWIM выполнена в соответствии с распиновкой оригинального ST-Link'а, поскольку у меня есть уже очень много устройств, кабеля программирования которых используют именно эту распиновку. А вот распиновка SWD/JTAG разъёма моя собственная. Во-первых, применённый в оригинальном ST-Link разъём не вписывался в выбранный мной корпус, во-вторых, для штыревых разъёмов типа PLS-PLD я, по возможности, предпочитаю делать «диагональные» или «симметричные» разводки разъёмов, как минимум в той части, в которой разведена сила. При этом, если вдруг разъём случайно будет перевёрнут на 180 градусов, земля и питание всё равно попадут на свои места-меньше риска испустить magic smoke. Просто устройство не будет работать. Естественно, если в разъёме присутствуют сигналы выборки или включения, неплохо бы позаботиться, чтобы при перевороте разъёма они попали на пины, которые обеспечат этим сигналам неактивные уровни. Такая себе защита от дурака, хотя и давно известно, что хуже дурака-только инициативный дурак…
Плата разводилась с использованием компонентов типоразмера 0603 под корпус 20-13 фирмы Sanhe. Можно было, конечно, использовать и 0805-места на плате более чем достаточно. Но я уже давненько перешёл на 0603, и не стал изменять своим привычкам. Размещение компонентов выбрано таким, чтобы плату можно было как монтировать в корпус (при этом кварцевый резонатор и разъёмы отладчика запаиваются на обратной стороне платы и используются выводные светодиоды), так и без корпуса, при этом разъёмы и кварц запаиваются сверху, и используется двухцветный светодиод FYLS-1210. Поскольку мне до сих пор не понятно, как и для чего ST-Link использует контроль напряжения целевого устройства, предусмотрена возможность коммутации измерительного входа микроконтроллера с постоянно присутствующего напряжения питания на напряжение питания целевой платы. Для контроля напряжения питания целевой платы необходимо запаять резистор R14, для отключения возможности контроля должен быть запаян резистор R16, причём должен быть запаян либо один, либо второй, но никак не оба вместе. В моей плате запаян R14, всё отлично работает.
Печатная плата устройства во всех отношениях экспериментальная. Экспериментальное устройство, первая проба металлизации отверстий в домашних условиях, первый тентинг с использованием фоторезиста Riston, первая попытка вытравить зазоры 0.2мм на гальванически нарощенной и из-за этого толстой фольге, первое использование сухой плёночной маски… Что-то из всего этого получилось идеально, что-то не очень, но это уже тема для отдельной статьи.
После запаивания компонентов и пробной установки разъёмов плата приобретает следующий вид:
Делаем пробное подключение к лабораторному блоку питания, убеждаемся в отсутствии дыма и нагрева деталей, убеждаемся, что стабилизатор выдаёт свои 3.3 вольта. Потом подключаем платку к компьютеру, который должен бодро отрапортовать о неопознанном устройстве USB. Раз так-значит пока всё в порядке.
Идём на сайт ST Microelectronics и скачиваем оттуда Flash Loader Demostrator. «Повбывав би гадiв», которые ST сайт делали. Найти там что-либо… Впрочем, извините, отвлёкся. Скачиваем, распаковываем, устанавливаем. Прямо на разъём загрузчика одеваем перемычку, которая соединит вывод BOOT0 микроконтроллера с плюсом питания и введёт контроллер в режим загрузчика, туда же подключаем разъём от USB-RS232 преобразователя:
Подключаем это всё в USB следующем порядке: cначала подключаем USB-RS232, затем подключаем ST-Link, отключать потом будем в обратном порядке. Запускаем Flash Loader Demonstrator, и, если мы не поджарили микроконтроллер во время впаивания, не убили его статикой и не перепутали RX/TX при подключении интерфейса, то софтинка должна бодро отрапортовать, что Target is readable. А значит, ещё один шаг к созданию собственного отладчика пройден.
Из прикреплённого к статье архива извлекаем файлик STLinkV2.J16.S4.bin, натравливаем на него Flash Loader, ждём пару секунд. Готово! Отключаем сначала ST-link, затем интерфейс. Я не рассматриваю вариант прошивки через JTAG-у кого он есть, те и сами знают, как это сделать; у новичков же адаптер JTAG вряд ли будет. Собственно, его-то мы как раз и делаем… Итак, отключаем интерфейс программирования, снимаем перемычку, и торжественно подключаем наш свежеиспечённый ST-Link к компьютеру. Который должен найти новое устройство и запросить на него дровишки, которые мы уже успели заблаговременно скачать с сайта производителя. Торжественно подключаем целевое устройство, запускаем IAR (ну или кто там в чём программирует), нажимаем «записать» и… Нифига не работает! Can not communicate with tool. Вот же ж блин! Столько труда и всё впустую. Последующие три дня проходят в попытках понять что же не так. Попытки замыкания ножек идентификации на землю и на питание в разных комбинациях, изучение осциллограмм, курение логов USBLyzer'а… Пока в один вечер, а если точнее-уже давным-давно ночер, не промахнулся по менюшке и вместо STVP не запустил St-Link Upgrade Utility. Хотя и обновлять на ту же самую версию-нонсенс, палец автоматом кликнул «Upgrade». Апгрейд прошёл штатно, но что самое главное-девайс перестал отваливаться и наконец-то заработал! Когда радости немного поулеглись (я аж проснулся), вернул схему к первоначальному виду и повторил эксперимент. И таки да, дело не в перемычках, а в прошивке. Судя по всему, что поскольку Chinook скомпоновал прошивку из двух разных версий, что-то в ней не совсем срослось. И хотя устройство и определяется как полноценный дискавери, работать оно не может. Корректное обновление записывает полноценную прошивку и решает проблему.
Теперь, когда железяка работает, пора подумать и о корпусе. Не, я, конечно, понимаю, что «труЪ киберпанк» и всякое такое… Но пару выездов для работы на территорию заказчиков, когда приходилось располагаться с ноутбуком посреди торчащих прутьев арматуры, а провода и платы размещать между кучками стальной стружки, при этом бояться пошевелиться, чтобы случайно что-нибудь ни на таргет, ни на отладчик не уронить, и самому при этом с насеста не сверзиться-навели на стойкую уверенность, что корпус таки быть должен. Как минимум, одной зоной внимания меньше… Берём наш свежеприобретённый корпус, берём боевой «Дремель» и зубопротезный бор, и через пяток минут жужжания бормашинкой и ещё пяток-шуршания надфилем получаем вот такую красоту:
Ну вот, а теперь можно и попрограммировать. Равно как и попрошивать, поотлаживать…
Пару слов напоследок. Поскольку это моя первая статья в сообществе, просьба ногами не бить и гнилыми помидорами/тухлыми яйцами не кидать. Объективная критика, наоборот, очень даже приветствуется. Статью размещаю в личном блоге, можно ли/нужно ли её скопировать куда-то в профильный раздел-пусть решают общественность и Ди Хальт. Отладчик был сделан в январе 2013, и 95% этой статьи было написано тогда же, но дописал оставшиеся 5% и публикую я всё это только сейчас, потому что до сего момента не было случая проверить работу отладчика по SWD и JTAG. Собственно, до этого времени работал преимущественно с STM8. Сейчас появилась девборда с STM32, работоспособность SWD/JTAG проверил, даже прошивку в клоне уже успел обновить на крайнюю, всё в порядке. Так что публикую со спокойной душой. :)
UPD:Перезалил ST-Link V2 PCB.zip, так как в него по недосмотру попала старая версия разводки, та самая, которую пришлось скальпелем чикать. Файл CAMTASTIC-LUT.pdf был старый! С фоторезистным вариантом-CAMTASTIC.pdf всё было и есть в порядке. Если Вы будете пробовать изготавливать плату по ЛУТ-технологии-перекачайте, пожалуйста, архив снова. Извините, недосмотрел, сам я уже давно от ЛУТ ушёл…
UPD2:Коллективный разум в комментариях выявил недостаток этой версии отладчика-отсутствие преобразователя уровней. Собственно говоря, во время проэктирования этой платы я даже и не знал, что в оригинале этот самый преобразователь есть. Соответственно, его отсутствие не позволит работать с целевыми платами, МК в которых запитаны от напряжения существенно ниже 3.3в. С этим отладчиком работа с такими платами будет возможна только в случае временного повышения напряжения питания до 3.3в (если это не приведёт к повреждению каких-либо других компонентов платы, естественно). Ну что ж, появится свободное время-буду думать о второй версии этой платы, уже с преобразователем уровней, и, возможно, гальванической развязкой. А пока хочу отдельно и особо поблагодарить коллег dosikus , GYUR22 ,Katz и Vga за конструктивную критику и ценные комментарии…
Есть чип STM32F100C8T6B (48LQFP). Сделал разводку под корпус чтоб проще было. Подпаял напрямую к программатору SWCLK и SWDIO, и питание 5В по углам + VDAA / VSSA. В итоге он его не увидел. Подумал что чип брак и впаял другой, результат тот же, опять выпаял и сейчас уже 3ий чип пока просто придавил ногами к дорожкам и все равно не видит. Что делать? пробовал понижать частоту до 50 kHz и ниже толку 0. Пробовал по JTAG тоже самое..
Huawei + хаб + роутер TP-Link. TP-Link не видит dns сервер и не работает DHCP
Huawei HG8245H + Noname (неизв.фирма) хаб + роутер TP-Link TD-W8961ND На самом хуявее dhcp.
ST-Link не видит камень.
<Изображение удалено> Пробовал соединять земли- не получается, подводил питание к VDDA и к VSSA.
TP LINK AC450 не видит сеть
Вставил в комп, проинсталлировал, видит только одну сеть, но с ней проблемы и не подключается Как.
Номинальное питание 3.3В, лимит 4В.
Datasheet, 5.2 Absolute maximum ratings
Добавлено через 18 минут
После исправления этого, надо подключить пины BOOT и RESET куда следует.
Добавлено через 23 секунды
Но чип сдох, скорее всего.
Да! только не руками а зажимами от микроскопа и как раз под ним проверил. Все ноги ровно стоят и придавлены + прозвонил основные контакты.
Как раз 2ой чип питал только от 3.3В который так же на программаторе есть результат тот же. Подцепил еще RC цепь на NRST ногу - изменений 0.
Что касается даташита, на днях питал AVR (который вроде как до 5В) от 7.5В и все хорошо было, даже не грелся.. Могу конечно перепаять на 3.3 В но не думаю что это поможет после того как я запитал его сверх нормы. Думаю тут просто чего то еще не хватает, только не знаю чего, пытаюсь пересесть с avr на stm и пока не очень получается. Чипы купил у китайский коллег на Али может они мне подсунули брак, хотя судя по отзывам все замечательно у всех. А куда бут питать? А то в сети все работают с дискавери, а я любитель все сам сделать..
Вот так как на прикреплении наверное? Тогда это объясняет зачем нужны 5В кроме как для спаливания чипов
Комментарии ( 13 )
UM1075
User manual
ST-LINK/V2 in-circuit debugger/programmer for STM8 and STM32
страница 11 под таблицей.
1. The power supply from the application board is connected to the ST-LINK/V2 debugging and programming
board to ensure signal compatibility between both boards.
Ага, но я «по привычке» решил что это питание с программатора на плату. А сноски внизу — кто их читает… :) Это шутка конечно, но в таком количестве макулатуры нарывшись трудно что-нить не пропустить.
Как-то так исторически сложилось, что, хоть и «подружился» с микроконтроллерами от ST Microelectronics я уже давненько, но полноценного отладчика до сих пор у меня не было. «Подсадил» на STM8 меня друг, подарив на день рождения платку STM8S-Discovery. Вдоволь наигравшись с целевым камушком, я отключил отладочную часть платки, а встроенный ST-Link стал «рабочей лошадкой» в моей лаборатории. Таковым и оставался бы до сих пор, и всё было хорошо, да вот где-то с полгода назад случилась ситуация, которая сподвигнула меня на изыскания по размножению отладчика: мне пришлось подключить обратно отладочную часть дискавери, так как проэкт, над которым предполагалось работать, использовал тот же проц, что и в дискавери, и обросла платка некислым таким «ежиком» из проводов и деталюшек, закипела работа… А тут заказчик звонит-мол, приедь ко мне да подправь, плиз, прошивочку в своём устройстве-да там фигня, задержку на секунду увеличить и всего-то делов… А «рабочая лошадь» чуть ли не намертво к рабочему столу привязана проводами да кабелюками, блин! Пришлось разбирать, конечно… Вернувшись от заказчика и грустно поглядев на то, что ещё утром было полем для бурной деятельности по проверке идей-полез искать вдохновения в гугле. Кому интересно, что из этого получилось-добро пожаловать под отрезь… :)
Вариант «пойти и купить», конечно же, рассматривался. Но, поскольку «неспортивно», был оставлен в качестве «плана Б». Очень быстро были найдены фотографии внутренностей полноценного ST-Link, его «слизанная» схема, и всё хорошо, да только прошивки для полного счастья не хватало. Но на третьей странице гугля была найдена ссылочка на наш же форум, где пользователь Chinook выложил «слизанную» им прошивку от ST-Link V2.
Само собой разумеется, вариант «сделать самому» тут же перевесил «план Б». Ну и кроме того, возможность добавить некоторый функционал, отсутствующий в фирменном St-Link, весьма таки грела душу.
Тут надо заметить, что чаще я делаю мелкие девайсики, которые дополняют или расширяют функционал родительских устройств. Счётчики там всякие, интерфейсные платки, индикаторы и прочая тому подобная мелочёвка. И большинство этих штучек получают свои миллиамперы питания от родительского устройства, вживляясь в его схему. Поэтому отсутствие в штатном St-Link возможности запитывать таргет непосредственно от отладчика, и как следствие-отсутствие возможности выбора питания-5 или 3.3 вольта-меня нисколько не радовало. Да, конечно же, существует лабораторный источник питания и всё такое… Собственно говоря, первое включение после сборки всегда через лабораторный БП-мало ли что, даже новые деталюшки и то не всегда бывают исправными, ну а если уж где-то «соплю» проглядеть-так и подавно проблемы будут. Но когда всё проверено-зачем лабораторный БП гонять, если можно запитаться прямо от компа?
Вот примерно с такими мыслями я и приступил к компиляции входных данных. Были изучены доступные схемы отладчиков-из мануалов по разным версиям Discovery и найденные в сети, внесены изменения и доработки, в результате получилась вот такая spaghetti diagram схема:
Поскольку на момент составления схемы всё ещё были некоторые нестыковки, в частности-разночтения в подключении ножек идентификации, разводка JTAG в одной из схем отличалась, и, кроме того, окончательно было непонятно: заработает этот компот как надо или же нет-то часть ножек контроллера была выведена на контактные площадки для удобства перекоммутации. А если бы эта компиляция не заработала-то эти дополнительные контактные площадки позволят использовать плату как отладочную для какого-нибудь простенького USB устройства. Как раз с целью возможности использовать эту плату как отладочную я и развёл на ней JTAG-интерфейс, ибо JTAG J-Link у меня имеется в виде отдельного устройства. А для облегчения программирования платы теми, кто будет повторять эту конструкцию, на отдельный разъём были выведены все контакты, необходимые при программировании микроконтроллера с использованием его собственного загрузчика. Забегая вперёд, замечу, что ошибки в выбранной мной для работы версии схемы всё же сделали своё чёрное дело, и готовую плату пришлось-таки немного почикать скальпелем и засопливить перемычками. В статью пошла уже исправленная версия схемы и разводки, ну а фотки-уж как есть…
Разводка разъёма SWIM выполнена в соответствии с распиновкой оригинального ST-Link'а, поскольку у меня есть уже очень много устройств, кабеля программирования которых используют именно эту распиновку. А вот распиновка SWD/JTAG разъёма моя собственная. Во-первых, применённый в оригинальном ST-Link разъём не вписывался в выбранный мной корпус, во-вторых, для штыревых разъёмов типа PLS-PLD я, по возможности, предпочитаю делать «диагональные» или «симметричные» разводки разъёмов, как минимум в той части, в которой разведена сила. При этом, если вдруг разъём случайно будет перевёрнут на 180 градусов, земля и питание всё равно попадут на свои места-меньше риска испустить magic smoke. Просто устройство не будет работать. Естественно, если в разъёме присутствуют сигналы выборки или включения, неплохо бы позаботиться, чтобы при перевороте разъёма они попали на пины, которые обеспечат этим сигналам неактивные уровни. Такая себе защита от дурака, хотя и давно известно, что хуже дурака-только инициативный дурак…
Плата разводилась с использованием компонентов типоразмера 0603 под корпус 20-13 фирмы Sanhe. Можно было, конечно, использовать и 0805-места на плате более чем достаточно. Но я уже давненько перешёл на 0603, и не стал изменять своим привычкам. Размещение компонентов выбрано таким, чтобы плату можно было как монтировать в корпус (при этом кварцевый резонатор и разъёмы отладчика запаиваются на обратной стороне платы и используются выводные светодиоды), так и без корпуса, при этом разъёмы и кварц запаиваются сверху, и используется двухцветный светодиод FYLS-1210. Поскольку мне до сих пор не понятно, как и для чего ST-Link использует контроль напряжения целевого устройства, предусмотрена возможность коммутации измерительного входа микроконтроллера с постоянно присутствующего напряжения питания на напряжение питания целевой платы. Для контроля напряжения питания целевой платы необходимо запаять резистор R14, для отключения возможности контроля должен быть запаян резистор R16, причём должен быть запаян либо один, либо второй, но никак не оба вместе. В моей плате запаян R14, всё отлично работает.
Печатная плата устройства во всех отношениях экспериментальная. Экспериментальное устройство, первая проба металлизации отверстий в домашних условиях, первый тентинг с использованием фоторезиста Riston, первая попытка вытравить зазоры 0.2мм на гальванически нарощенной и из-за этого толстой фольге, первое использование сухой плёночной маски… Что-то из всего этого получилось идеально, что-то не очень, но это уже тема для отдельной статьи.
После запаивания компонентов и пробной установки разъёмов плата приобретает следующий вид:
Делаем пробное подключение к лабораторному блоку питания, убеждаемся в отсутствии дыма и нагрева деталей, убеждаемся, что стабилизатор выдаёт свои 3.3 вольта. Потом подключаем платку к компьютеру, который должен бодро отрапортовать о неопознанном устройстве USB. Раз так-значит пока всё в порядке.
Идём на сайт ST Microelectronics и скачиваем оттуда Flash Loader Demostrator. «Повбывав би гадiв», которые ST сайт делали. Найти там что-либо… Впрочем, извините, отвлёкся. Скачиваем, распаковываем, устанавливаем. Прямо на разъём загрузчика одеваем перемычку, которая соединит вывод BOOT0 микроконтроллера с плюсом питания и введёт контроллер в режим загрузчика, туда же подключаем разъём от USB-RS232 преобразователя:
Подключаем это всё в USB следующем порядке: cначала подключаем USB-RS232, затем подключаем ST-Link, отключать потом будем в обратном порядке. Запускаем Flash Loader Demonstrator, и, если мы не поджарили микроконтроллер во время впаивания, не убили его статикой и не перепутали RX/TX при подключении интерфейса, то софтинка должна бодро отрапортовать, что Target is readable. А значит, ещё один шаг к созданию собственного отладчика пройден.
Из прикреплённого к статье архива извлекаем файлик STLinkV2.J16.S4.bin, натравливаем на него Flash Loader, ждём пару секунд. Готово! Отключаем сначала ST-link, затем интерфейс. Я не рассматриваю вариант прошивки через JTAG-у кого он есть, те и сами знают, как это сделать; у новичков же адаптер JTAG вряд ли будет. Собственно, его-то мы как раз и делаем… Итак, отключаем интерфейс программирования, снимаем перемычку, и торжественно подключаем наш свежеиспечённый ST-Link к компьютеру. Который должен найти новое устройство и запросить на него дровишки, которые мы уже успели заблаговременно скачать с сайта производителя. Торжественно подключаем целевое устройство, запускаем IAR (ну или кто там в чём программирует), нажимаем «записать» и… Нифига не работает! Can not communicate with tool. Вот же ж блин! Столько труда и всё впустую. Последующие три дня проходят в попытках понять что же не так. Попытки замыкания ножек идентификации на землю и на питание в разных комбинациях, изучение осциллограмм, курение логов USBLyzer'а… Пока в один вечер, а если точнее-уже давным-давно ночер, не промахнулся по менюшке и вместо STVP не запустил St-Link Upgrade Utility. Хотя и обновлять на ту же самую версию-нонсенс, палец автоматом кликнул «Upgrade». Апгрейд прошёл штатно, но что самое главное-девайс перестал отваливаться и наконец-то заработал! Когда радости немного поулеглись (я аж проснулся), вернул схему к первоначальному виду и повторил эксперимент. И таки да, дело не в перемычках, а в прошивке. Судя по всему, что поскольку Chinook скомпоновал прошивку из двух разных версий, что-то в ней не совсем срослось. И хотя устройство и определяется как полноценный дискавери, работать оно не может. Корректное обновление записывает полноценную прошивку и решает проблему.
Теперь, когда железяка работает, пора подумать и о корпусе. Не, я, конечно, понимаю, что «труЪ киберпанк» и всякое такое… Но пару выездов для работы на территорию заказчиков, когда приходилось располагаться с ноутбуком посреди торчащих прутьев арматуры, а провода и платы размещать между кучками стальной стружки, при этом бояться пошевелиться, чтобы случайно что-нибудь ни на таргет, ни на отладчик не уронить, и самому при этом с насеста не сверзиться-навели на стойкую уверенность, что корпус таки быть должен. Как минимум, одной зоной внимания меньше… Берём наш свежеприобретённый корпус, берём боевой «Дремель» и зубопротезный бор, и через пяток минут жужжания бормашинкой и ещё пяток-шуршания надфилем получаем вот такую красоту:
Ну вот, а теперь можно и попрограммировать. Равно как и попрошивать, поотлаживать…
Пару слов напоследок. Поскольку это моя первая статья в сообществе, просьба ногами не бить и гнилыми помидорами/тухлыми яйцами не кидать. Объективная критика, наоборот, очень даже приветствуется. Статью размещаю в личном блоге, можно ли/нужно ли её скопировать куда-то в профильный раздел-пусть решают общественность и Ди Хальт. Отладчик был сделан в январе 2013, и 95% этой статьи было написано тогда же, но дописал оставшиеся 5% и публикую я всё это только сейчас, потому что до сего момента не было случая проверить работу отладчика по SWD и JTAG. Собственно, до этого времени работал преимущественно с STM8. Сейчас появилась девборда с STM32, работоспособность SWD/JTAG проверил, даже прошивку в клоне уже успел обновить на крайнюю, всё в порядке. Так что публикую со спокойной душой. :)
UPD:Перезалил ST-Link V2 PCB.zip, так как в него по недосмотру попала старая версия разводки, та самая, которую пришлось скальпелем чикать. Файл CAMTASTIC-LUT.pdf был старый! С фоторезистным вариантом-CAMTASTIC.pdf всё было и есть в порядке. Если Вы будете пробовать изготавливать плату по ЛУТ-технологии-перекачайте, пожалуйста, архив снова. Извините, недосмотрел, сам я уже давно от ЛУТ ушёл…
UPD2:Коллективный разум в комментариях выявил недостаток этой версии отладчика-отсутствие преобразователя уровней. Собственно говоря, во время проэктирования этой платы я даже и не знал, что в оригинале этот самый преобразователь есть. Соответственно, его отсутствие не позволит работать с целевыми платами, МК в которых запитаны от напряжения существенно ниже 3.3в. С этим отладчиком работа с такими платами будет возможна только в случае временного повышения напряжения питания до 3.3в (если это не приведёт к повреждению каких-либо других компонентов платы, естественно). Ну что ж, появится свободное время-буду думать о второй версии этой платы, уже с преобразователем уровней, и, возможно, гальванической развязкой. А пока хочу отдельно и особо поблагодарить коллег dosikus , GYUR22 ,Katz и Vga за конструктивную критику и ценные комментарии…
Есть чип STM32F100C8T6B (48LQFP). Сделал разводку под корпус чтоб проще было. Подпаял напрямую к программатору SWCLK и SWDIO, и питание 5В по углам + VDAA / VSSA. В итоге он его не увидел. Подумал что чип брак и впаял другой, результат тот же, опять выпаял и сейчас уже 3ий чип пока просто придавил ногами к дорожкам и все равно не видит. Что делать? пробовал понижать частоту до 50 kHz и ниже толку 0. Пробовал по JTAG тоже самое..
Huawei + хаб + роутер TP-Link. TP-Link не видит dns сервер и не работает DHCP
Huawei HG8245H + Noname (неизв.фирма) хаб + роутер TP-Link TD-W8961ND На самом хуявее dhcp.
ST-Link не видит камень.
<Изображение удалено> Пробовал соединять земли- не получается, подводил питание к VDDA и к VSSA.
TP LINK AC450 не видит сеть
Вставил в комп, проинсталлировал, видит только одну сеть, но с ней проблемы и не подключается Как.
Номинальное питание 3.3В, лимит 4В.
Datasheet, 5.2 Absolute maximum ratings
Добавлено через 18 минут
После исправления этого, надо подключить пины BOOT и RESET куда следует.
Добавлено через 23 секунды
Но чип сдох, скорее всего.
Да! только не руками а зажимами от микроскопа и как раз под ним проверил. Все ноги ровно стоят и придавлены + прозвонил основные контакты.
Как раз 2ой чип питал только от 3.3В который так же на программаторе есть результат тот же. Подцепил еще RC цепь на NRST ногу - изменений 0.
Что касается даташита, на днях питал AVR (который вроде как до 5В) от 7.5В и все хорошо было, даже не грелся.. Могу конечно перепаять на 3.3 В но не думаю что это поможет после того как я запитал его сверх нормы. Думаю тут просто чего то еще не хватает, только не знаю чего, пытаюсь пересесть с avr на stm и пока не очень получается. Чипы купил у китайский коллег на Али может они мне подсунули брак, хотя судя по отзывам все замечательно у всех. А куда бут питать? А то в сети все работают с дискавери, а я любитель все сам сделать..
Вот так как на прикреплении наверное? Тогда это объясняет зачем нужны 5В кроме как для спаливания чипов
Решение
Что касается даташита, на днях питал AVR (который вроде как до 5В) от 7.5В и все хорошо было, даже не грелся
Это проблема AVR-а.
У STM32 лимиты другие, и к ним надо относиться внимательно.
Схему можете посмотреть на демонстрационных платах. Типа STM32VLDISCOVERY.
Можете ещё проще, купить эти Discovery. Там всё работает сразу.
Ну то что дискавери работает это понятно. Но я все таки добью пока эту разводку, если чипы кончатся, а мигалка так и не замигает, то придется брать дискавери. Сейчас попробуем бут подцепить и на старом чипе еще гляну, мож живой еще, а так в запасе есть еще. Будем пробовать..
в ваш stlink точно заточен под коммуникацию с STM32? Дело в том, что stlink'и есть под STM8 и есть под STM32. И ваш должен быть точно предназначен для STM32, иначе это работать не будет.
Питание нужно подавать на все питающие ноги чипа.
Все заработало после такого как я еще раз спозиционировал чип и прижал опять таки зажимом (припаяю потом). Не знаю правда когда именно заработало, возможно после пляски вокруг бута, но мысль о том, что наконец таки можно писать код не может не радовать.
Чип кстатий это 4ой уже, но мне прям интересно сломило ли предыдущий 5тью Вольтами, но узнаю как нибудь в следующий раз, не хочу провести еще пару часов с чипом..
Добавлено через 11 минут
Решил таки припаять, на радости забыл отключить программатор, вспомнил только когда ПК подал характерный звук об отключении USB. Допаял таки думал что пронесет, а нет Чуда не произошло, чип умер
Добавлено через 3 часа 25 минут
Собсно нормально все заработало только после не длительного пребывания в ацетоне, не думал что флюс создаст такую проблему как хаотичное замыкание контактов..
Путин, странная история. В ДШ на STM32 обычно пишут максимум (то ли 4.0, то ли 3.6В). Соответственно, питание 5.0В гарантированно убивает чип.
ЗЫ: я не понимаю эту настойчивую идею мучать чип нестабильным повышенным питанием. Поставьте лучше хотя бы простейший стаб на 3.3В, чтобы не насиловать микросхему. Не предназначена линейка STM32 работать от 5В. Некоторые входы действительно совместимы с 5В, но остальное - совсем нет. Вы просто насилуете электронику самым "грубым образом" .
РЕШЕНО! Столкнулся с проблемой подключения китайского st link v2. В наличии было два разных программатора из разных магазинов. На одном все работало и прошивалось нормально (на картинке №1) а на втором, программатор в системе был виден, а программируемая плата не определялась. Разобрал и в том что не работал обнаружил ошибку в распиновке. Причем на корпусе маркировка была идентичная работающему программатору. После этого подключил программируемую плату по маркировке на плате программатора и все заработало. Оставляю описание здесь, может кому пригодится.
Доброго времени суток всем! Продолжу тему - поскольку горит аж не могу.
Дано: stm32f030f4p6 и два линка (китайский свисток и stm32l-discovery). Все это накрывает keil 5.24.1.
Схема подключения на одной из картинок (схема не моя и при желании статью можно найти по картинке).
Вооt ногу кидал как на землю так и на плюс (пробовал вообще никуда не подключать). Толку ноль.
В degug с права я так понимаю должно быть название чипа (пару раз оно там появлялось, но все равно ничего не прошивалось). Возможно оно там появлялось после того как я уже изменил конфигурацию подключения. Отсюда вопрос когда софт видит подключенный контролер? Надо ли перезапускать софт? Надо ли какой то волшебный переключатель дергать, чтоб обновились подключенные железки?
Результат всегда один:
no target connected
Error: Flash Download failed - Target DLL has been cancelled
Дополнение к схеме подключения: пробовал запитывать А линию - результата нет, добавлял кварц на 14 Мгц - так же безрезультатно.
Перед тем как написать взял новый чип и проверил еще раз подключение (мало ли старый спалил) - безрезультатно.
Горит аж не могу - какое тут будет желание изучать программирование если для прошивки контролера в век интернета надо с бубном плясать.
Итого:
как проверить живой ли контролер?
как проверить живой ли линк?
как проверить доходят ли команды между линком и контролером?
как узнать хоть, что нибудь?
Компания STMicroelectronics прекратила поддержку библиотеки SPL, которая использовалась в этом курсе. Поэтому я создал новую рубрику, посвященную работе уже с новыми инструментами, так что буду рад видеть вас там - STM32CubeMx. Также вот глобальная рубрика по STM32 - ссылка.
Решил я написать статью про подключение отладочной платы STM32VLDiscovery (еще одна статья учебного курса по STM32 - весь он тут). Казалось бы это вообще элементарно, воткнул провод и вперед, но на деле можно наступить на огромное количество граблей. Поэтому нельзя оставлять этот вопрос неосвещенным.
Программирование STM32VLDiscovery через Keil.
Подключаем нашу платку к USB, и ждем пока она определится как внешний носитель. Если Windows не увидел вашу плату (как было у меня), то советую проверить в первую очередь кабель и разъем для него на плате. У меня, например, отошел контакт на Discovery, и я очень долго пытался понять, почему же плата не работает )
Но чаще всего подключение проходит без проблем, так что двигаемся дальше. Идем в папку с Keil’ом и находим драйвер для USB. Он лежит вот тут:
- ARM\STLink\USBDriver (это в папке, куда установлен Keil)
Запускаем ST-Link_V2_USBdriver.exe и устанавливаем его. Возвращаемся чуть назад – в папку C:\Keil\ARM\STLink и видим там файл STLinkUSBDriver.dll размером около 65 кб. Его надо заменить на файл - STLinkUSBDriver.dll (подменять файл следует только в том случае, если ST-LINK завести не удается (!) ).
Первый этап позади!
Запускаем Keil и открываем там проект, который будем заливать в железку. Идем в меню Flash-Configure Flash Tools. Во вкладке Debug выбираем Use ST-Link Debugger и ставим галочку Run to main():
Теперь открываем вкладку Utilities и тоже выбираем ST-Link Debugger.
Думаете все? А вот и нет, продолжаем настройку. Нажимаем кнопку Settings и в появившемся окне нужно добавить Programming algorithm для нашего девайса:
В этом же окне открываем вкладку Debug, находим поле Port и вместо JTAG ставим SW:
С настройкой закончили, но и это еще не все. Открываем файл stm32f10x.h и находим в районе 45-55 строк такой текст:
Не забываем в настройках проекта попросить компилятор генерировать hex:
Собираем проект и нажимаем кнопку Load. В случае удачной прошивки видим строки:
Если все-таки почему-то у вас не вышло прошить плату через Keil, то есть второй способ.
Читайте также: