Skocz do zawartości

problem z programowaniem zewnętrznego STM32 z programatora Nucleo


Pomocna odpowiedź

(edytowany)
  1. NRST nie jest podciągnięte do zasilania poprzez 10k
  2. Porty zasilające mikrokontroler nie są zasilane... a raczej większość z nich. Czasami się uda taki zabieg, ale to rzadkość.
  3. Brak kondensatorów 100nF per wejście zasilania odsprzęgających wysokie częstotliwości oraz zbiorczego 4.7uF dla tych nieco niższych, oczywiście ceramiczne, chociaż ten 10uF od zasilacza powinien dać radę zastąpić 4.7uF

Ogólnie... to prawie na pewno nie zadziała 😞 

Przykład z STM32F103C[8B]T6 niżej 😉 

Trochę tu więcej dodatków, ale...

SCH_Schematic1_1-P1_2025-07-04.thumb.png.dc911831a0b8f12a1acdc2056b826a7a.pngSCH_Schematic1_2-P2_2025-07-04.thumb.png.6649f2451d1b33d6d36e649736149ab7.png

Oraz wersja z wykreślonymi zbędnymi rzeczami (na żółto rzeczy, które są przydatne)

SCH_Schematic1_1-P1_2025-07-04.thumb.png.7ed82a6053dda84cab584e439944e6bb.pngSCH_Schematic1_2-P2_2025-07-04.thumb.png.c0d1b41ed8bb3fa600a67090daaf14ab.png

Taki wzór powinien pomóc Ci dostrzec co jest nie tak w Twoim schemacie 😉 

Diody przy tranzystorach NPN są zbędne, bo i tak zrobienie tego przed czym mają chronić skończyłoby się spaleniem MCU, ale daję je tam odruchowo 😄 

EDIT:

https://www.youtube.com/@PhilsLab

Łap link z dobrymi materiałami 😉 

Edytowano przez H1M4W4R1
  • Lubię! 1

@H1M4W4R1  Czyli jednak jeszcze długa droga przede mną ze strony HW 🙂

No dobra, mam kilka pytań po przeanalizowaniu schematu.

1. NRST zauważyłem sam. Poprawiłem to na płytce prototypowej, jednak zachowanie wtedy też się nie zmieniło. Czyli BOOT podciągam do masy przez 10k a zworą wystawiam plusa. NRST podciągam do 3,3V przez 10k a przewodem na płytce prototypowej zwieram do masy.

2. Nie miałem pojęcia, że należy zasilić wszystkie porty. Sprawdzałem multimetrem i wszystkie Vdd są ze sobą połączone. Wszystkie czyli nóżki 19, 32 i 64. To samo dotyczy masy, ale ona akurat jest połączona. Czysto teoretycznie każdy port jest więc zasilony. Natomiast Vbat zgodnie z dokumentacją zasila RTC i zewnętrzny oscylator, a tych elementów nie mam. To samo z Vddusb, nie używam tutaj USB więc zakładałem, że nie jest mi potrzebne. Moje pytanie tutaj jest następujące: Czy koniecznością jest niezależne zasilanie na każdy Vdd? Oraz co w pozostałymi zasilaniami takimi jak Vbat, Vdda i Vddusb?

3. Brak kondensatorów odsprzęgających każdy port wynika poniekąd z poprzedniego punktu. Po prostu o tym nie wiedziałem. Skupiłem się na prostym wygładzeniu tętnień elektrolitem 10u i wysokich częstotliwości ceramiką 4,7n.

 

Czy jest coś jeszcze o czym powinienem wiedzieć, zanim poprawię zasilania, filtrowanie, NRST i zamówię kolejną płytkę? Jakieś golden rules? Kanał fajny, będzie leciał w tle 🙂 

  • Lubię! 1
(edytowany)
1 godzinę temu, bestsiwy napisał:

Nie miałem pojęcia, że należy zasilić wszystkie porty. Sprawdzałem multimetrem i wszystkie Vdd są ze sobą połączone. Wszystkie czyli nóżki 19, 32 i 64. To samo dotyczy masy, ale ona akurat jest połączona. Czysto teoretycznie każdy port jest więc zasilony. Natomiast Vbat zgodnie z dokumentacją zasila RTC i zewnętrzny oscylator, a tych elementów nie mam. To samo z Vddusb, nie używam tutaj USB więc zakładałem, że nie jest mi potrzebne. Moje pytanie tutaj jest następujące: Czy koniecznością jest niezależne zasilanie na każdy Vdd? Oraz co w pozostałymi zasilaniami takimi jak Vbat, Vdda i Vddusb?

Zasilasz wszystko 😉 Co najwyżej wyłączasz funkcje programowo, by zredukować pobór energii. Z tego co pamiętam w serii 4XX VDDusb to zwykłe VDD, które jest najbliżej peryferiów USB.

VDDa powinno być zasilane przez filtr dolnoprzepustowy złożony z ferrytu 100R @100MHz oraz kondensatora 4.7uF do masy (to taka najbardziej podstawowa opcja zasilająca, jak nie korzystasz z peryferiów analogowych można dać zwykłe 4.7uF + 100nF)

1 godzinę temu, bestsiwy napisał:

Brak kondensatorów odsprzęgających każdy port wynika poniekąd z poprzedniego punktu. Po prostu o tym nie wiedziałem. Skupiłem się na prostym wygładzeniu tętnień elektrolitem 10u i wysokich częstotliwości ceramiką 4,7n.

4.7n to ciut mało jak na mikrokontroler... 100nF to optymalna opcja ze względu na dość duży pobór prądu przez niektóre peryferia, a kondensator odsprzęgający pozwala zarówno na redukcję zakłóceń HF jak i na szybkie dostarczenie dużego prądu do układu gdy będzie takie zapotrzebowanie (tutaj przydałby się ktoś mądrzejszy z zakresu fizyki prądu elektrycznego, ale z tego co pamiętam zasilacz może nie zdążyć się dopasować i spadek napięcia może wpłynąć na funkcjonowanie układu).

Przy okazji: każdy scalak powinien mieć 100nF na wejściu zasilającym (zarówno tym z dodatnim jak i ujemnym napięciem). Większy kondensator tylko dla układów prądożernych typu mikrokontroler.

1 godzinę temu, bestsiwy napisał:

Czyli BOOT podciągam do masy przez 10k a zworą wystawiam plusa.

To trzeba sprawdzić w nocie aplikacyjnej - każdy mikrokontroler ma własne ustawienia zworek BOOT dla konkretnych trybów (USB DFU, wbudowana pamięć, UART...); o ile mnie pamięć nie myli 476 powinien mieć dwie...

1 godzinę temu, bestsiwy napisał:

Czy jest coś jeszcze o czym powinienem wiedzieć, zanim poprawię zasilania, filtrowanie, NRST i zamówię kolejną płytkę? Jakieś golden rules? Kanał fajny, będzie leciał w tle 🙂 

Zrobię sobie autoreklamę 😉 

Edytowano przez H1M4W4R1
  • Lubię! 1

@H1M4W4R1

Dzięki za materiały. Zawsze to trochę więcej w głowie 🙂 

Czyli czysto teoretycznie głównym problemem jest słaba filtracja zasilania?

Pobrałem teraz zasilanie 3,3V z Nucleo, zmostkowałem na płytkę prototypową i dodałem brakujące kondensatory. Brak reakcji, nadal nie chce się zaprogramować. 

50 minut temu, bestsiwy napisał:

Czyli czysto teoretycznie głównym problemem jest słaba filtracja zasilania?

Teoretycznie tak, praktycznie nie wiem co jeszcze może być tam nie tak... Osobiście używam JLinka, więc to tylko strzały w ciemno, bo równie dobrze coś może być źle ustawione w zworkach na płytce Nucleo.

Wypróbowałem jeszcze inną drogę. Skoro ST-link programuje wewnętrzny układ na nucleo to pomyślałem, że można podłączyć mój układ równolegle do pinów Nucleo z pominięciem całego osprzętu na mojej płytce, ale wyjmując zworkę na JP2 żeby pozostawić procesor niezasilony. Oczywiście zasiliłem swój układ stabilnym 3,3V. 

Zdjęcie żeby zobrazować:

Zrzutekranu2025-07-07181721.thumb.png.6466623104283f288edf6d326361ca21.png

Tym razem mam inny błąd. Zrzut poniżej. Tak jak wspominałem, chip STM jest nowy, prosto z hurtowni. Czy jest szansa, że należy zrobić jakąś sekwencję startową, żeby go aktywować? Nie chce mi się wierzyć, że dostałem partię wadliwych procesorów. 

Error in final launch sequence:

 

Failed to execute MI command:

load C:\\Users\\User\\Documents\\Embedded-C\\my_workspace\\target\\test2\\Debug\\test2.elf

 

Error message from debugger back end:

Error finishing flash operation

Failed to execute MI command:

load C:\\Users\\User\\Documents\\Embedded-C\\my_workspace\\target\\test2\\Debug\\test2.elf

 

Error message from debugger back end:

Error finishing flash operation

Failed to execute MI command:

load C:\\Users\\User\\Documents\\Embedded-C\\my_workspace\\target\\test2\\Debug\\test2.elf

 

Error message from debugger back end:

Error finishing flash operation

Error finishing flash operation

 

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...