Skocz do zawartości

Kurs STM32L4 – #10 – ekspander portów (SPI), quiz


Pomocna odpowiedź

Dnia 8.07.2021 o 18:23, Frantick napisał:

Kolejna czesc kursu za mna i mam mala uwage, nie wiem czy kazdy fabrycznie nowy uklad MCP jest tak ustawiony ale moj mial wszystkie bity w rejestrze IPOL "wlaczone" przez co logika dla przykladu z przyciskiem byla u mnie odwrotna.

SPI.thumb.png.e9205e45bd91dfad1037054e6fc2b604.png

Też tak miałem nie wiedzieć czemu. Pomogło zwarcie nóżki MCP Reset do masy 🙂

W jakim celu daliśmy kondensator 100nF przy ekspanderze?

  • 7 miesiące później...

@michalkepka tutaj oczywiście chodzi o to jaka będzie wartość bitu na danej pozycji - stąd zapisy "0" i  "1", a dopiero przy zapisie szesnastkowym pełnej liczby zapisaliśmy wynik jak 0x02. Rozumiem jednak co masz na myśli. Zapisuję do późniejszej weryfikacji, bo nie chcę teraz wpisywać tam "2", ponieważ może to mylić osoby, które dopiero zaczynają swoją przygodę z operacjami bitowymi (można będzie wtedy błędnie pomyśleć, że 1 & 1 = 2). 😉

  • 4 miesiące później...

@Mateusz_0xFF witam na forum 🙂 Kondensator nie ma żadnego związku z STM32 to bardziej podstawy techniki cyfrowej i taka "dobra praktyka", aby przy zasilaniu każdego układu dodawać kondensator ceramiczny, który filtruje zasilanie. Bez tego układ też będzie działał, ale "zgodnie ze sztuką" powinien być dodany.

  • Pomogłeś! 1
10 godzin temu, Mateusz_0xFF napisał:

Nikt nie zadał tego pytania, to może zapytam, bo jedynej rzeczy, której nie do końca rozumiem, to zastosowanie kondensatora w tym schemacie. Mógłby ktoś proszę wyjaśnić?

Ścieżki na PCB mają dość dużą rezystancję, a układ nagle może potrzebować dość dużego prądu (np. nadajniki WiFi często mają szczytowy pobór prądu rzędu 2A). Wtedy dostarczenie tego prądu w krótkim czasie jest dość skomplikowane, w szczególności na dłuższy dystans, a kondensator zlokalizowany blisko pinu zasilającego może go dostarczyć bardzo szybko. Dodatkowo usuwa część szumów generowaną przez układ (stabilizuje napięcie zasilania), dzięki czemu inne układy nie ulegają nagłemu wyłączeniu.

To tak dość łapotologicznie i w dużym uproszczeniu 😉

  • Lubię! 1
  • Pomogłeś! 1
  • 1 rok później...

Jestem w trakckie zabawy w rozdział #10. Wyciągnąłem z szuflady prosty analizator stanów logiczny - taki za 25 zł. Podłączyłem CS - kan0, MOSI - kan 1, MISO - kan 2, CLK - kan3, GP0 - kan4. W programie wyłączyłem HAL_Delay. Właczyłem analizator SPI, ustawiłem trigger na pierwsze opadające zbocze CS, nacisąłem reset Nocleo, włączyłem zapis, puściłem reset  Nucleo. idać co się dzieje:

obraz.thumb.png.ea9fe5cc7d575725d5c02d6252c4607a.png

Niestety inicjalizacja ekspandera nie została zdekodowana, dlatego że opadające zbocze CS nastąpiło jeszcze w momencie, gdy sygnał CLK był w stanie wysokim. SPI nie do końca się zainicjował. Chyba trzeba dać jakieś opóźnienie miedzy MX_SPI2_Init() a pierwszą transmisją, albo wymusić stan niski na CLK, bo zaczyna od stanu wysokiego.

Żadne opóźnienia nie pomogły. Zastosowałem inny trik po prostu powtórzyłem wysłanie paczki nicjującej ekspander i ta powtórka mzostała już prawidłowo zdekodowana. Po przebiegach widać że pierwsza to było to samo.

obraz.thumb.png.5c278fe1bfe0673d051f50849108e413.png

Widać że wysłanie komendy zapalenia lub zgaszenia led trwa niecałe 3 mikrosekundy

  • Lubię! 1

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