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.
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.
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.
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
Brak komentarzy.