4 января 2015 в 12:49

Отладчик за копейки: делаем ST-Link из Maple Mini tutorial



Начав свое знакомство с STM32 с китайских клонов Leaf Maple Mini (потому что самый дешевый вариант, 4$), я столкнулся с неудобством. Поскольку на Maple IDE рассчитывать не стоит, значит, приходится работать с «голым» STM32. А раз ST-Link у меня нет, заливать программу я могу только по UART, что неудобно (и нет возможности отладки).

Но хабраюзер imwode ровно через 9 часов после моей публикации написал ответный материал, из которого я узнал прекрасное: отладчик ST-Link основан на том же микроконтроллере STM. При этом, прошивка отладчика умельцами вытащена и готова к загрузке на неродные устройства. Maple Mini подходит идеально: ничего лишнего, USB распаян, надо только несколько резисторов подключить.


Нужно:

1. Соединить PA5 и PB13 (D6 и D30 у Maple Mini). Это будет линия SWСLK.
2. Между PB14 и PB12 (D29 и D31) поставить резистор в 220 Ом. PB14 (D29) — это линия SWDIO.
3. PA0 (D11) подключить к делителю из двух резисторов в 4.7 КОм между +3.3В и GND.

И тут тоже грабли!

После прошивки, по идее, ПК должен распознать плату как ST-Link. Но нет. Как будто ничего вообще не подключено. На поиск граблей было потрачено энное количество времени, а надо было всего лишь повнимательнее посмотреть на схему Maple Mini, а конкретно — на реализацию линии USB D+. Она подтягивается к +3.3В через резистор 1.5 КОм, но включается подтяжка транзисторным ключом. Который управляется с ножки МК и по умолчанию выключен. А раз так, ПК просто не понимает, что подключено к USB-порту. Не будем вмешиваться в плату, а просто «повесим» еще резистор в 1.5 КОм между +3.3В и D+ (D23).

Теперь у нас появилось устройство ST-Link. Ставим ST-Link Utility, там и драйвер имеется. Обновляем прошивку нашего ST-Link (через эту самую Utility), и с отладчиком можно начинать работу. По крайней мере, я подключил к нему вторую Maple Mini: SWCLK к PA14 (D21), SWDIO к PA13 (D22) и успешно как залил откомпилированный Blink, так и произвел его дебаг средствами Coocox.

В принципе, устройство уже можно оснащать нормальным разъемом и запихивать в корпус. Не забыв перед этим добыть «нормальные» резисторы, а не то, что под руку подвернулось. Не помешает и какая-нибудь светодиодная индикация. Я думаю, многие самодельщики подтвердят, что переход от «спички, желуди, синяя изолента» к законченному устройству — самый сложный и длительный, ибо «зачем, оно и так работает, хоть и провода торчат во все стороны».

И, да, китайский ST-Link можно купить за те же 4$ на Aliexpress, например.

Основополагающая тема на Easyelectionics.
Прошивка (тожe Easyelectronics).
Описание Leaf Maple Mini
ST-Link Utility
Мануал на «родной» ST-Link
Илья @eta4ever
карма
17,0
рейтинг 0,0
инженер-затейник
Похожие публикации
Самое читаемое

Комментарии (7)

  • +3
    Неделя STM на хабре.
    • 0
      Надо срочно наваять какую-нибудь «Хрень фанерную подвижную на Arduino» и «Особенности портирования Blink на Raspberry Pi и Cubieboard».
      • +5
        «Помигаем светодиодом через cron», например.
        • +1
          Смешно, но я в свое время так и не нашел актуальную статью про управление GPIO на куби. Делал через отдельный контроллер, который принимал команды по uart и дрыгал ножками.
          • 0
            Я когда с Cubie ковырялся, у меня создалось впечатление, что по ней вообще информации очень мало. Т.е., крутое железо, а дальше пляши как хочешь. Очень недружелюбно по сравнению с той же малинкой.
            • +2
              Очень много таких плат, которые выглядят круто, а после покупки непонятно что с ними делать — никакой информации. Прошивка часто не заливается и кроме андроида или куцего варианта WinCE на них ничего не работает. Часто еще и ревизия отличается от той, для которой положили софт.
              в итоге рабочих удобных плат с документацией не так и много.
              причем, в описании обычно написано, что весь софт есть, все положат в коробку :)
            • 0
              А я, так пока ещё ковыряюсь :)
              Но чем дальше, тем ленивее — как раз из-за отсутствия нормальной поддержки и т.п. Да и по производительности таки не устраивает.

              На данный момент собран «кирпич» — корпус с блоком питания и аккумом на 7Ач, подключён (в том же корпусе) дисплей по GPIO, NR24L01P по SPI. Задуманы ещё кнопки, внешний мониторинг питания (лежат несколько INA219), но, думаю, не сподоблюсь пока не найду альтернативу с 4-8 ядрами, ибо двух явно мало…

              В итоге было исправлен баг в PWM драйвере ядра и написано полтора своих (заодно поизучал, как оно) — для LCD, по мотивам статьи на Хабре, и уже свой, для NRF24L01, что будет собирать температуру вместо клубка проводов вокруг древней ардуины ;)

              Возня с SPI и 232 проявила явную «сырость» существующих дров. Вплоть до срыва синхронизации аппаратно-ускоренного видео, при не слишком-то и интенсивном обмене :( А уж вывод потока «мусора» в терминал через USB-232 адаптер так вообще превращает всё это дело в слоупока :(

              Единственный бонус — потребляет вместе с 3.5" винчестером около 6-9Вт. После 60Вт от Synology — мечта для 24/7 сервачка! ))

              ЗЫ: Всё это написано с того самого «кирпича», живущего нынче в качестве новосте-читалки, RDP клиента и программатора всякох фигни типа атмеловских чипов и NRF24LE1

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