Як використовувати зовнішній ST-Link для налагодження / програми STM32F103 MCU?


16

Я використовую STM32F103 MCU для власного проекту і хочу використовувати плату ST-Link STM32F411 Nucleo для зовнішньої налагодження / програмування.

Я встановив перемички CN2 вимкнено, і моє актуальне питання - в розрізі SWO (CN2). Як я продовжую це робити так:

  • PIN-код 1 (SWO) - VDD_Target
  • PIN 2 - SWCLK
  • PIN 3 - це GND
  • PIN-код 4 - SWDIO
  • PIN 5 - NRST
  • PIN 6 - SWO

Наскільки мені відомо, я не повинен використовувати всі ці штифти вище. Як і в, я підключився

  • PIN 2 до PIN 37 (або PA14) у MCU
  • PIN-код 3 до GND
  • PIN-код-PIN-код 34 (або PA13)
  • PIN-код 5-PIN-код 7 або (RESET) в цільовому MCU.

Не впевнений, чи слід підключати штифт SWO, оскільки він встановлений як "зарезервований" (Чому?). Крім того, я даю 3,3 В на VIN контакт MCU, означає, що мені не потрібно підключати VDD (PIN 1 Stlink).

Будь ласка, зверніться до цієї таблиці, яку я взяв з офіційного листа даних:

введіть тут опис зображення введіть тут опис зображення

Ось загальна конфігурація розрізу MCU тут:

введіть тут опис зображення

Я перевірив "майже" все за допомогою осцилографа і тестера, і все здається нормальним. Що ще мені тут не вистачає? Чи потрібно щось робити зі шпильками BOOT0 або BOOT1?

Відповіді:


11

Перш за все, ви маєте рацію, якщо у вашої плати вже є джерело напруги живлення, вам не потрібно підключати VDD-контактний контакт ST-Link.

Друге, що я вам рекомендую, - це відкрити довідник керівництва плати STM32F411 Nucleo та переглянути схеми. Особливо та частина, де ST-Link підключений до контролера на платі.

введіть тут опис зображення

За допомогою ST Microelectronics, SWCLK, SWDIO, NRST і SWO (і GND звичайно) підключені до цільового MCU. Додатковий штифт SWO використовується для цілей налагодження, ви можете отримати доступ до друкованих даних за допомогою printfфункції за допомогою цього штифта за допомогою утиліти ST-Link .

Printf через SWO Viewer відображає дані printf, надіслані від цілі через SWO.

Тож я можу порекомендувати вам також підключити SWO, що може стати в нагоді пізніше. Підключіть свій MCU до ST-Link так само, як вони підключили до нього MCU Nucleo.

Що стосується конфігурацій завантаження, то є три варіанти, які можна вибрати, найпростіше - дотримуватися Main Flash та прив’язувати Boot0 до GND, але я не знаю ваших вимог, тому вирішувати вам.

введіть тут опис зображення


3
Незважаючи на те, що ви можете «відійти від», не підключаючи штифти VDD, він не повинен бути джерелом живлення, а там, щоб виявити напругу живлення цілі (дивіться, як вона підключена до аналогового входу). Більш складний інтерфейс налагодження міг би тримати свої лінії низькими без цього і лише піднімати їх до відповідного рівня живлення, підтримуючи декілька цільових напруг. Лінія скидання зазвичай не потрібна (на відміну від багатьох інших реалізацій SWD). Це важливо для відновлення після поганих навантажень і прошивки, які відключають штифти SWD, але також можна вручну керувати ними.
Кріс Страттон

На платі STM32F1xx головною причиною того, щоб зробити BOOT0 зовнішньою можливістю вибору, було б, якщо є бажання використовувати заводський завантажувач ROM UART (тощо). У '103 це не підтримує USB, як це робиться для багатьох пізніх частин ST. Якщо потрібний завантажувач USB на "103", він повинен бути в основній флеш-пам'яті, тому контактний BOOT0 для цього не корисний.
Кріс Страттон

Для мого boot0 та boot0 встановлено нуль, щоб програма була записана на флеш-пам’ять. Крім цього, я спробую використовувати утиліту st-link на машині Windows. Зараз я використовую Mac OS, але не впевнений, чи це моя проблема пов'язана з ОС.
baqx0r

Я використовував ST-Link STM32F407 Kit Discovery Kit для програмування STM32F303. Я просто підключив SWD-роз'єм (2-5 контактів) Kit до моєї плати SWCLK, GND, SWDIO, NRST, SWO (так само, як це робиться на Discovery і Nucleo), і він працював із утилітою ST-Link. Штифта boot0 прив’язана до GND через 10k резистор, заснований на посібнику з технічного обладнання STM32F303 .
Бенс Каулікс

6

Перш за все дякую всім за їх внесок.

Після двох безсонних ночей і боротьби я міг з’ясувати проблему. Проблема полягала в контактних з'єднаннях на моїй користувальницькій платі: я вважав, що в моєму MCU контакт 9 (VDDA) коротко замикається з PIN-кодами 24-36-48, а контакт 8 (VSSA) з PIN-кодами 23-35-47, але це не так.

Мені потрібно було подарувати ще 3,3 В та GND на VDDA та VSSA і вул підключаються почали працювати.

Метод рішення : Я використовував схеми Maple Mini, щоб зрозуміти з'єднання STM32F103. Виявилося, що вони мають коротке замикання на VDDA з VDD1, VDD2 та VDD3 та VSSA з VSS1, VSS2 та VSS3. Я думаю, я мав би це зрозуміти з іменування VSSA, оскільки це не VSS0 або VSS4.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.