Czytając instrukcję STM32F051, wygląda na to, że można skonfigurować tę samą funkcję alternatywną na dwóch pinach; na przykład możesz mieć wiele pinów USART1_TX jednocześnie. Lub na przykład bardziej problematyczny przypadek dwóch pinów USART_RX. W tym przypadku instrukcja milczy. Czy to jest legalne / bezpieczne? Czy to jest przydatne?
10
Odpowiedzi:
W procesorach, które używają rejestrów na pin do wybierania funkcji I / O, ogólnie możliwe jest kierowanie funkcji wyjścia do wielu pinów bez konfliktu; wszystkie piny wygenerują echo tego samego wyjścia. Efekt posiadania wielu pinów podłączonych do wejścia jest często nieokreślony; jeśli np. UART miałby piny 3 i 4 I / O podłączone do UART, może zachowywać się tak, jakby UART był podłączony do bramki „AND”, która przyjmowała piny 3 i 4 jako wejścia, lub może zachowywać się tak, jakby był podłączony do jednego pinu i zignoruj drugi, albo może połączyć oba piny z buforem wejściowym UART poprzez tranzystory o umiarkowanej rezystancji lub może pobierać dodatkowy prąd, gdy pin 3 jest wysoki i 4 jest niski lub odwrotnie, lub może zrobić wszystko, co tylko można sobie wyobrazić. Ja nie
Nieco ładniejszym podejściem projektowym, stosowanym w niektórych częściach Microchip (być może także w niektórych częściach STM) jest posiadanie każdej funkcji we / wy zawierającej multiplekser do wybierania, z którego styku powinien przyjmować sygnał wejściowy, i styk zawierający multiplekser wskazujący I Funkcja / O, z której powinna wyprowadzać dane. Taki projekt umożliwia, aby jeden pin podawał wiele funkcji We / Wy, jednocześnie eliminując wszelkie niejasności wynikające z konfliktowych konfiguracji.
źródło
Tak, jest to przydatne. Wynik eksperymentu na STM32F407VGT6: Oba piny AF mogą być używane jednocześnie jako AF, przynajmniej jeśli te piny są używane jako wejścia AF. Eksperyment polegał na wyzwoleniu TIM1 na zboczu narastającym zewnętrznego wyzwalacza - sygnał „TIM1_ETR”. Sygnał „TIM1_ETR” może być mapowany na piny PE7 i / lub PA12 pakietu MCU.
Eksperyment: Zainicjuj oba piny PE7 i PA12 jako AF „TIM1_ETR” dla TIM1:
Wynik - TIM1 jest uruchamiany przez zbocze narastające na dowolnym z pinów PE7 lub PA12.
Ujawnia to drogę do pinów MUX (zmiana) AF w czasie wykonywania:
Może to być pomocne, ponieważ do uruchomienia timera potrzebne są dwa różne źródła, co może uratować nas poza MUX IC :). Oba wejścia mogą być używane jednocześnie, jeśli są inicjalizowane, jak pokazano na początku postu. Wejścia nie są ze sobą połączone, to znaczy sygnał na PA12 nie jest przesyłany do PE7 i odwrotnie (ponieważ GPIO są ustawione jako wejścia).
Kod jest generowany przez „STM32CubeF4 v5.3” + „Pakiet oprogramowania układowego V1.24.0 / 08-luty-2019”.
źródło
Zasadniczo piny to GPIO, które można przypisać do alternatywnych funkcji, np. UART_RX. Każda funkcja alternatywna ma swój pin domyślny i piny alternatywne, do których można przypisać funkcję. Jeśli zapoznasz się z instrukcją obsługi STM32F103 w sekcji 9.1.5, powiedzą:
źródło