Powrót do strony głównej

Błędy debugowania mikrokontrolerów: SWD i błędy sprzętowe

Artykuł analizuje rzeczywiste przypadki błędów przy rozwoju mikrokontrolerów: błędy sprzętowe jak brud w złączach i konflikty pinów, programowe — konfiguracja Flash i FPU. Praktyczne rozwiązania dla niezawodnego debugowania STM32, TI CC, nRF.

Epickie błędy MCU: od SWD po ESD i kryształy
Advertisement 728x90

Typowe błędy sprzętowe i programowe podczas debugowania mikrokontrolerów

Firmware mikrokontrolera zawiesza się: heart beat LED przestaje migać, konsola UART nie odpowiada. To standardowy objaw. Nie panikuj — metodycznie sprawdzaj stack trace, logi i peryferię. Często przyczyna kryje się w prostych problemach: brudzie w złączach, konfliktach pinów lub błędnej konfiguracji.

Pułapki sprzętowe: od brudu po lutowanie

Rozwój płytki telematycznej w sieci CAN: samochód nie odpala, rozrusznik kręci się na pusto. Trzy godziny diagnostyki — a przyczyna w złączu OBD-II: kawałek folii zwarł trzy piny. Usunięcie śmieci rozwiązało problem.

Gęsty layout płytki z Tag-Connect: złącze programujące niedostępne przez blisko położony stabilizator Traco Power. Zacisk nie zatrzaskuje się — palce nie przechodzą. Rozwiązanie: wezwać kolegów z cienkimi palcami lub przerobić layout.

Google AdInline article slot

Zasilanie USB miga i gaśnie. Podejrzenie spadku napięcia od BLE/UWB odpadło. Przyczyna — wadliwe gniazdo USB-A: pełne wciśnięcie wtyczki nie daje styku, wysunięcie o pół milimetra — działa. Wniosek: używaj jakościowych kabli i złącz.

Połączenie SWD urywa się na kablu 90 cm przez slip-ring w wieżyczce. Pakiety nie przechodzą. Krótki kabel 12 cm działa. Przyszło programować płytki na uchwytach.

Konflikty pinów i debugowanie

JTAG/SWD nie startuje: 'No device found'. Skrypt bat prośby wymaga ręcznego resetu w STM32 ST-LINK Utility. Przyczyna — LED na pinie PA13 (TMS/SWDIO). Pinów SWD (PA13, PA14) nie wolno używać pod GPIO. Przeniesienie LED na PA15 przywróciło debugowanie.

Google AdInline article slot

Płytka z FC7300: J-Link na pomarańczowo (stan reset), J-Flash wyrzuca 'Could not download file'. Przelutowanie MCU nie pomogło. Tymczasowy fix — zmiana portu USB lub programatora.

Konfiguracja MCU i bootloadery

CC26x2 zawiesza się po power-cycle, choć pod debuggerem działa. Przyczyna — brak zapisu w sektorze customer configuration na ostatniej stronie Flash. W TI CC26x4 trzeba najpierw wgrać blinky_backdoor_select_btn26x2.bin narzędziem SmartFR Flash Programmer 2, potem swoje firmware.

Bootloader STM32F413ZGJ6 nie przechodzi do aplikacji: sprawdzenie MSP w tablicy wektorów >128 kB. MCU ma 320 kB RAM, ale bootloader skompilowany pod STM32F205VC. Kompatybilność Cortex-M4/M3 ukrywała błąd przez pięć lat.

Google AdInline article slot

Elektryczność statyczna i niezawodność

Tygodniowy test: logi w RAM kasowane iskrą ESD przy dotknięciu. Rozwiązanie — NVRAM lub karta SD pod logi.

Audio i peryferia

I2S z BT1026 (Bluetooth classic): chrapliwy głos na nRF5340. WS 50 kHz, ale moduł FSC-BT1026C daje próbki tylko do 48 kHz — zera powodują chrapot. Fix: BT1026 jako master I2S.

Błędy schematyczne

Zapomniano podać zasilanie na MCU — drucik montażowy naprawił. Lub kwarc Ethernet PHY 23 MHz zamiast 25 MHz: auto-negocjacja nie przechodzi. Olimex-STM32-H407: krzaki w UART przez kwarc 12 MHz zamiast 25 MHz w firmware.

Prototyp SPI-NAND W25M02GV: boczne piny zwierają thermal pad na płytce prototypowej. Przelutowanie na zieloną płytkę rozwiązało.

VNQ7E100AJ high-side driver: fałszywy prąd przy open-load (pull-up V_SENSEH). ADC widzi przeciążenie. Wymiana chipa w rewizji ECU.

FPU i błędy bibliotek

snprintf() na Cortex-M33 wpada w Default Handler przez problemy FPU przy formatowaniu float.

Co ważne

  • Sprawdzaj piny SWD/JTAG przed przydzielaniem GPIO.
  • Konfiguruj customer sectors w TI MCU przed własnym firmware.
  • Używaj ochrony ESD i NVRAM pod logi.
  • Waliduj kwarc i złącza na prototypach.
  • Czytaj datasheet: funkcje typu open-load detection uchronią przed fałszywymi alarmami.

— Editorial Team

Advertisement 728x90

Czytaj dalej