Atlantis
2020-11-21 08:12:27 UTC
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
(https://www.st.com/resource/en/datasheet/stm32f407vg.pdf) 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:
Loading Image...
Czy 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?
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
(https://www.st.com/resource/en/datasheet/stm32f407vg.pdf) 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:
Loading Image...
Czy 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?