Beim Lesen des Handbuchs STM32F051 scheint es möglich zu sein, dieselbe alternative Funktion an zwei Pins zu konfigurieren. Beispielsweise könnten Sie mehrere USART1_TX-Pins gleichzeitig haben. Oder zum Beispiel der problematischere Fall von zwei USART_RX-Pins. Das Handbuch enthält keine Informationen zu diesem Fall. Ist das legal / sicher? Ist das nützlich?
10
Antworten:
Auf Prozessoren, die Per-Pin-Register zur Auswahl von E / A-Funktionen verwenden, ist es im Allgemeinen möglich, eine Ausgangsfunktion ohne Konflikte an mehrere Pins weiterzuleiten. Alle Pins geben den gleichen Ausgang wieder. Der Effekt der Verbindung mehrerer Pins mit einem Eingang ist häufig nicht spezifiziert. Wenn beispielsweise ein UART die E / A-Pins 3 und 4 mit einem UART verbunden hatte, verhält es sich möglicherweise so, als wäre der UART mit einem "UND" -Gatter verbunden, das die Pins 3 und 4 als Eingänge verwendet, oder als wäre er verbunden an einen Pin und ignorieren den anderen, oder es werden beide Pins über Transistoren mit mäßigem Widerstand mit dem Eingangspuffer des UART verbunden, oder es wird zusätzlicher Strom gezogen, wenn Pin 3 hoch und 4 niedrig ist oder umgekehrt, oder umgekehrt könnte fast alles andere tun, was man sich vorstellen kann. Ich nicht
Ein etwas besserer Entwurfsansatz, der in einigen Microchip-Teilen (möglicherweise auch in einigen STM-Teilen) verwendet wird, besteht darin, dass jede E / A-Funktion einen Multiplexer enthält, um auszuwählen, von welchem Pin die Eingabe akzeptiert werden soll, und dass der Pin einen Multiplexer enthält, um das I anzuzeigen / O-Funktion, von der Daten ausgegeben werden sollen. Ein solches Design ermöglicht es, dass ein Pin mehrere E / A-Funktionen speist und gleichzeitig alle Mehrdeutigkeiten beseitigt, die durch widersprüchliche Konfigurationen entstehen.
quelle
Ja, es ist nützlich. Ergebnis des Experiments mit STM32F407VGT6: Beide AF-Pins können gleichzeitig als AF verwendet werden, zumindest wenn diese Pins als AF-Eingänge verwendet werden. Das Experiment bestand darin, TIM1 bei steigender Flanke des externen Triggersignals "TIM1_ETR" auszulösen. Das Signal "TIM1_ETR" kann auf die Pins PE7 und / oder PA12 des MCU-Pakets abgebildet werden.
Das Experiment: Initialisieren Sie beide Pins PE7 und PA12 als AF "TIM1_ETR" für TIM1:
Das Ergebnis - TIM1 wird durch Ansteigen der Flanke an einem der Pins PE7 oder PA12 gestartet.
Dies zeigt den Weg zu MUX (Wechsel) AF-Pins zur Laufzeit:
Dies kann hilfreich sein, wenn zwei verschiedene Quellen für die Timer-Triggerung benötigt werden. Dies kann uns einen Offboard-MUX-IC ersparen :). Beide Eingänge können gleichzeitig verwendet werden, wenn sie wie am Anfang des Beitrags gezeigt initialisiert wurden. Die Eingänge sind nicht miteinander verbunden. Ich meine, das Signal auf PA12 wird nicht an PE7 übertragen und umgekehrt (da GPIOs als Eingänge festgelegt sind).
Der Code wird von "STM32CubeF4 v5.3" + "Firmware Package V1.24.0 / 08-February-2019" generiert.
quelle
Grundsätzlich sind die Pins GPIOs, die alternativen Funktionen zugewiesen werden können, z. B. UART_RX. Jede alternative Funktion hat ihren Standard-Pin und alternative Pins, denen die Funktion neu zugeordnet werden kann. Wenn Sie das Referenzhandbuch des STM32F103 in Abschnitt 9.1.5 lesen, heißt es:
quelle