Kilka pytań o STM32F407VGT6

Do tej pory wszystkie swoja bardziej "zaawansowane" projekty (takie, które wymagały zastosowanie MCU o większej mocy obliczeniowej i bogatym zestawie peryferiów) robiłem głównie na układach PIC24/PIC32, wcześniej ATXmega. Miałem już trochę do czynienia z STM-ami, ale głównie w formie prostych STM32F103. Teraz przymierzając się do pewnego projektu przyglądam się bardziej zaawansowanemu układowi z tej rodziny - STM32F407VGT6. Gdy przeglądałem dokumentacje i przeklikiwałem się przez konfigurator STM32CubeMX, nasunęło mi się kilka pytań:

Sposób podłączenia USB w trybie host: Na stronie 186 dokumentacji

formatting link
znajduje się schemat. Pin VBUS gniazdka USB jest na nim podłączony za pośrednictwem "current limiter power switch" albo przynajmniej "basic power switch", sterowany pinem GPIO. W STM32CubeMX nigdzie nie widzę możliwości wyboru tego wyjścia kluczującego zasilanie, które byłoby przypisane do konkretnego interfejsu USB. Mam rozumieć, że już z poziomu kodu wybiera się dowolny pin GPIO? Pytam, ponieważ w układach PIC32 był do tego przeznaczony sterowany sprzętowo pin VBUSON, z którego stosowania można było zrezygnować w konfiguracji, co zresztą robiłem, ponieważ w moim urządzeniu do hosta USB był na stałe podłączony pendrive, nie było wiec konieczności kluczowani zasilania - było ono wyprowadzone na gniazdku na stałe. Rozumiem, że w przypadku STM32 sterowanie zasilaniem jest obowiązkowe i powinienem w swoim projekcie uwzględnić ten switch? Poza tym widzę, że można aktywować/dezaktywować jeszcze dwa piny przypisane do interfejsu USB: VBUS oraz SOF. Rozumiem, że VBUS służy do wykrywania zasilnia na gniazdku USB i jest stosowany w trybach device orz OTG. Schemat w dokumentacji dla trybu host nie uwzględnia tego pinu, jednak STM32CubeMX pozwala na jego użycie nawet w trybie "Host only". Jaka jest jego funkcja w tym przypadku? Rozumiem, że mogę z niego zrezygnować, jeśli urządzenie m być hostem? I jeszcze jedno pytanie odnośnie USB. DO tej pory we wszystkich swoich projektach stosowałem drabinkę transili tuż obok gniada USB. Schematy w dokumentacji ich nie uwzględniają. To uproszczenie schematu, czy celowe działanie? Rozumiem, że nadal mogę stosować to zabezpieczenie z STM32?

Magistrala równoległa do podłączenia LCD: Z tego co widzę, mikrokontroler posiada sprzętową magistralę do komunikacji z pamięciami, którą można także wykorzystać do podłączenia wyświetlacza LCD.Dysponuję takim wyświetlaczem:

formatting link
będzie się go dało podłączyć za pomocą tego interfejsu? Jeśli tak, w jaki sposób? Do którego pinu powinien iść sygnał "LCD register select"? Czy ten interfejs wymaga już jakiegoś specjalnego sposobu prowadzenia ścieżek?

Przetwornik cyfrowo-analogowy: Widzę, że ten układ posiada dwa wyjścia DAC. Sprawdzą się w roli wyjść audio (odtwarzanie muzyki) czy lepiej zastosować osobny układ, np. na I2S?

Interfejs SDIO: Z tego co widzę, układ posiada również interfejs SDIO. To dla mnie pewna nowość, bo do tej pory zawsze podłączałem karty SD przez SPI. Czy powinienem o czymś pamiętać projektując płytkę? Linie SDIO trzeba już prowadzić w jakiś określony sposób? Który tryb pracy (SD/MMC) i szerokość magistrali (1/4/8 bit) będą najbardziej odpowiednie?

Reply to
Atlantis
Loading thread data ...

Atlantis pisze:

Tak

Jeśli przewidujesz sytuację, że device weźmie za dużo prądu, ogranicznik poda sygnał "overcurrent" i trzeba będzie zasilanie odłączyć - wtedy ten port jest potrzebny. Dowolny.

To już moje rozważania teoretyczne, nigdy nie robiłem hosta. Ale wydaje mi się, że VBUS jest wejściem monitorującym 5V i generującym przerwanie, gdy napięcie spanie poniżej normy.

Jeśli jesteś pewny źródła 5V można z niego zrezygnować. W Reference manualu (rev. 13, str. 1255) jest przykładowy układ bez VBUS.

Ja stosuję układ

formatting link
było przypadku uszkodzenia portu.

Ja stosuję inne wyświetlacze, ale nazwy pinów są takie same. Połączenia: LCD - STM32 RS - A16 RD - NOE WR - NWE CS - NE1 Reset - dowolny port

Ja się nigdy nie specjalnie nie przejmowałem i zawsze działa.

Nie znam się i się nie wypowiem :(

Pozdrowienia, MKi

Reply to
MKi

Hmm... To jest realizowane przez bibliotekę do obsługi USB, czy muszę to sam zaimplementować w pętli głównej/funkcji obsługi przerwania zewnętrznego? Pytam, bo chciałbym się upewnić, czy mogę dostosować się zarówno do elementów, gdzie pin EN jest aktywowany stanem niskim, jak i wysokim.

Rozumiem, że nic nie stoi na przeszkodzie, żeby zamiast "switcha" zastosować przetwornicę, którą mogę wyłączyć zewnętrznym sygnałem? Urządzenie będzie zasilane z akumulatorka, więc przetwornica i tak jest jedynym sposobem na uzyskanie 5V do zasilania USB.

Dokładnie tych samych używam od dawna z PIC32 oraz Xmega. Dzięki za potwierdzenie, że nie ma z nimi problemu w przypadku STM32. ;)

Reply to
Atlantis

Sam implementujesz. Tylko od zastosowanego układu ograniczającego prąd zależy, czy EN będzie aktywowane Hi czy Lo.

Jak dla mnie jak najbardziej. Tylko musisz skądś wziąć sygnał "overcurrent".

Pozdrowienia, MKi

Reply to
MKi

Może znajdzie się jakaś przetwornica, która daje taki sygnał? ;)

Reply to
Atlantis

Jak poszukasz to na pewno :-)

formatting link

Reply to
Zbych

Mogę jeszcze zapytać jakichś wyświetlaczy używasz? Bo szukając informacji na temat mojego egzemplarza przekonałem się, że nie jest to zbyt popularny model. Chińczycy chyba przestali go produkować, zastępując nieco nowszą wersją, która ma inny pinout. Ciężko będzie kupić zastępczy egzemplarz albo drugi taki sam wyświetlacz do kolejnego projektu...

Reply to
Atlantis

Używam dwóch:

formatting link
Pozdrowienia, MKi

Reply to
MKi

Dzięki. Tak jeszcze dla porządku zapytam, bo właśnie kończę projektować płytkę: czy któreś linie interfejsu LCD wymagają podciągania rezystorami do zasilania?

Reply to
Atlantis

Nie, ten interfejs (zasadniczo to jest interfejs pamięci NOR Flash, sterowanie LCD jest tak przy okazji) jest całkowicie samodzielny. A w ogóle to STM ma swoje własne pullupy i pulldowny, możesz je włączać i wyłączać programowo.

Pozdrowienia, MKi

Reply to
MKi

Niby tak, ale tutaj kierowałem się pamięcią o tym, że w niektórych przypadkach i tak zalecane było stosowanie zewnętrznych pullupów, w celu uniknięcia stanów nieustalonych na krytycznych liniach po restarcie, zanim program zdąży skonfigurować dany pin. Chociażby linie CS w SPI...

Swoją drogą, używałeś może interfejsu RMII w STM32 do obsługi Ethernetu? W jego przypadku konieczne będzie jakieś specyficzne prowadzenie linii (np. wyrównywanie ich długości poprzez meandrowanie albo ekranowanie ich masą) czy też wystarczy, jeśli będą możliwie krótkie? W końcu częstotliwość pracy tej magistrali wynosi 50 MHz...

Reply to
Atlantis

Atlantis snipped-for-privacy@wp.pl napisał(a):

Piszę firmware dla urządzenia korzystającego z RMII w STM32. Żadnego specjalnego prowadzenia ścieżek tam nie zastosowano. Niemniej zaleca się, żeby różnica w długości nie była większa jak 2 cale, a nawet 10 mm według jednego źródła. Ekranowanie również jest zalecane.

Reply to
Grzegorz Niemirowski

Widziałem kiedyś tutorial, w którym płytka discovery została połączona z modułem PHY za pomocą zwykłych kabli ze złączami do goldpinów, więc podejrzewałem, że ten interfejs nie jest aż tak wymagający. Z drugiej strony to, że coś działało w tutorialu nie oznacza, że będzie działało stabilnie w finalnym urządzeniu, więc wolałem zapytać.

Ten warunek niemal na pewno jest spełniony. Mikrokontroler i PHY znajdują się w odległości 1.25". Biorąc pod uwagę fakt, że ścieżki zakręcają i omijają przeszkody, najdłuższe z nich będą pewnie miały długość nieco większą niż 2", ale różnica pomiędzy najdłuższą i najkrótszą na pewno nie będzie tego rzędu wielkości.

Ze spełnieniem tego warunku będzie już trudniej. Niemniej różnice w długościach wynikają głównie z faktu, że nieraz trzeba się dostać do wyprowadzeń po różnych stronach układu scalonego, omijając jakieś elementy albo pola lutownicze.

Z tym też będzie ciężko. Warunek jest spełniony częściowo w tym sensie, że linie RMII są zgrupowane razem i oblane polem masy. Niektóre z nich przynajmniej na części długości mają masę między sobą. Niemniej płytka jest modyfikacją projektu, który zaczął powstawać jeszcze w czasach, gdy PCB projektowałem z myślą o termo/fototransferze, więc grubsze ścieżki i większe pola lutownicze zajmują trochę miejsca, którego nie zostaje zbyt wiele na "meanadry". Nie ma też przelotek pod układami.

Reply to
Atlantis

Wracając do tematu: czy stosowanie ogranicznika prądu/switcha na linii VBUS jest obowiązkowe w przypadku układów STM32 i portu USB pracujcego w trybie host? Jak już wspominałem, w swoich poprzednich projektach na PIC24/PIC32 zwykle po prostu łączyłem pin VBUS w gniazdku USB bezpośrednio z linią 5V. Tylko w przypadku moich projektów port USB robił zwykle za pamięć masową - był tam na stałe wpięty pendrive o dającym się określić poborze prądu. Nie występowało zagrożenie, że użytkownik podłączy dowolne urządzenie (gniazdo było ukryte wewnątrz obudowy) a za zabezpieczenie nadprądowe robił bezpiecznik na wejściu.

Przyglądam się właśnie paru projektom na STM32 (m.in. transceiverowi SDR mcHF od M0NKA) i widzę, że kluczowanie zasilani na VBUS i stosowanie osobnego układu zabezpieczającego przed nadmiernym poborem prądu także niekiedy bywa pomijane.

Czy istnieją jakieś ważne powody, żeby stosować taki układ w STM32? Powinienem mimo wszystko uwzględniać go w swoich projektach? Może nawet wskazane jest stosowanie czegoś takiego także w innych rodzinach mikrokontrolerów? Czy może jednak mogę to sobie odpuścić i nieco uprościćpłytkę, łącząc VBUS bezpośrednio z 5V?

Reply to
Atlantis

Musisz zrobić - uwaga modne słowa - analizę ryzyka. Jeśli wyjdzie Ci, że prawdopodobieństwo zbyt dużego obciążenia przez device czy dotkliwość takiej awarii są dostatecznie małe (albo szansa na wykrycie odpowiednio wcześnie takiej sytuacji jest duża)

- to nie instaluj ogranicznika.

Ja nie znam żadnych powodów oprócz tego, o którym pisałem wcześniej.

Pozdrowienia, MKi

Reply to
MKi

Właśnie skończyłem projektować swoją płytkę z STM32107 i DP83848. Jest szansa, że będzie stabilnie i prawidłowo działało w trybie Fast Ethernet?

Reply to
Atlantis

Właśnie skończyłem projektować swoją płytkę z STM32F107 i DP83848. To amatorski projekt, więc nie oczekuję, że przeszłoby to jakąkolwiek certyfikację. :) Można jednak liczyć na to, że będzie działało stabilnie i prawidłowo w trybie Fast Ethernet?

formatting link

Reply to
Atlantis

Czyli wychodzi na to, że faktycznie raczej nie muszę instalować ogranicznika. Pendrive pobiera prąd mieszczący się w granicach wydajności układu zasilania, a ryzyko podłączenia czegoś innego przez użytkownika jest znikome, bo:

1) Port USB będzie zamknięty wewnątrz obudowy. 2) Tym użytkownikiem będę ja. ;)

A w najgorszym razie po prostu przepali się bezpiecznik na wejściu. Rozumiem, że ogranicznik służy temu, żeby można było obsłużyć przypadek nadmiernego poboru prądu z USB bez przerywania pracy urządzenia? W moim przypadku jest to tak naprawdę zbędne. :)

Reply to
Atlantis

Atlantis snipped-for-privacy@wp.pl napisał(a):

Myślę, że bez problemu. Co do płytki, to same ścieżki wyglądają OK jeśli chodzi o kąty, równoległość i długość. Natomiast powinno się unikać przelotek, widać dwie w okolicach C48. Możesz zerknąć na zalecenia producenta w datasheecie, rozdział 8.1.1 PCBLayoutConsiderations.

Reply to
Grzegorz Niemirowski

C48 jest podłączony do układu VS1003 (DAC/dekoder MP3) a przelotka po jego prawej stronie znajduje się na interfejsie SPI, któremu to nie powinno przeszkadzać. DP83848 znajduje się po lewej stronie płytki.

Reply to
Atlantis

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.