Tut mir leid, wenn dies eine dumme Frage zu sein scheint, aber ich entwerfe eine benutzerdefinierte Leiterplatte basierend auf dem STM32F303RE-Mikrocontroller und bin etwas verwirrt darüber, wie der UART in der Hardware angeschlossen werden sollte, um seriell über USB zu kommunizieren.
Ich habe einen microUSB-Anschluss an Bord, sollten die UART-Pins direkt mit diesem Anschluss verbunden werden? Oder muss ich die USB-Pins am STM32 verwenden und den Mikrocontroller als USB-Gerät einrichten und den UART irgendwie an diese Pins anschließen (oder sie überhaupt nicht verwenden)?
Ich habe mit einem Nucleo-Board für die Entwicklung begonnen und kann dort über UART kommunizieren (unter Verwendung von HAL-UART-Funktionen), aber das Betrachten des Schaltplans ist aufgrund des integrierten ST-LINK verwirrend. Soweit ich sehen kann, wird das UART-Signal des STM32 an die UART-Pins der ST-LINK-MCU weitergeleitet und die USB-Pins der ST-LINK-MCU sind mit dem MicroUSB-Anschluss verbunden, aber ich bin mir nicht sicher, wie die Daten wird durchlaufen? Verwendet es tatsächlich die USB-HAL-Funktionen, um die empfangenen UART-Daten zu konvertieren?
Sie können den UART Rx/Tx nicht direkt mit den DP/DN-Signalen am USB-Anschluss verbinden.
Sie haben grundsätzlich zwei Möglichkeiten:
Fügen Sie Ihrer Anwendung Software hinzu, um das USB-Peripheriegerät auf Ihrem STM32 zu verwenden, um einen virtuellen COM-Port zu implementieren. ST hat dafür einige Beispielprojekte, daher ist es nicht besonders schwierig, aber die Implementierung wird wahrscheinlich einige Zeit in Anspruch nehmen. Ich denke, es gibt hier Beispielsoftware: https://www.st.com/en/embedded-software/stsw-stm32121.html . In diesem Fall würden Sie die USB-Pins am STM32 mit dem USB-Anschluss verbinden.
Sie können einen Chip kaufen, um eine USB-zu-UART-Brücke bereitzustellen. FTDI stellt mehrere Versionen davon her, wie diese hier: https://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT230X.pdf
Dies erfordert einen zusätzlichen Chip, ist aber wahrscheinlich die einfachere Option, um zum Laufen zu kommen. In diesem Fall würden Sie die UART-Pins mit den Rx/Tx-Pins des FTDI-Chips verbinden und dann das USB-Paar auf dem FTDI-Chip mit dem USB-Anschluss verbinden.
Ich denke, es gibt auch Option 3. Sie könnten ein USB-zu-TTL-UART-Kabel kaufen und dieses an Ihr Board anschließen, anstatt den USB-Anschluss auf Ihr Board zu stecken, wenn Sie sowohl mit der Software als auch mit dem PCB-Design so einfach wie möglich werden möchten. Konfektionierte FTDI-Kabel: https://www.ftdichip.com/Products/Cables/USBTTLSerial.htm .
Die UART- und USB-Peripheriegeräte sind völlig getrennte Einheiten.
Wenn Sie einfachen UART wünschen, können Sie im Allgemeinen die TX-, RX- und GND-Pins auf einen Anschluss ausbrechen und diese dann mit einem geeigneten UART-fähigen Gerät verbinden. Sie müssen beide Geräte so konfigurieren, dass sie übereinstimmen, was Geschwindigkeit (Baudrate), Paritätstyp, Anzahl der Stoppbits usw. angeht.
Wenn Sie möchten, dass Ihr Projekt ein USB-Gerät wird, ist es komplizierter. Zusätzlich zu ziemlich strengen Hardware-Richtlinien muss es alle USB-Protokoll-Sachen „unter der Haube“ handhaben. ST stellt eine USB-Gerätebibliothek zur Verfügung, die hier zu finden ist . Es braucht ein bisschen Lernen.
Eine dritte Option ist die Verwendung eines USB-zu-UART-Konverters. In diesem Fall übernimmt der Konverter alle Anforderungen des USB- und UART-Protokolls. Es nimmt einfachen UART von Ihrem Mikrocontroller und leitet ihn über ein USB-Kabel an einen USB-Host. Sie können Schaltkreise auf Ihrer Platine einbauen, um die Konvertierung durchzuführen, oder Sie können einen externen Konverter kaufen, den jemand anderes bereits entwickelt hat.
Ein Beispiel für einen internen USB-Seriell-Konverter wäre ein FT232H . Sie müssten es und seine unterstützende Schaltung zu Ihrem Design hinzufügen:
Ein Beispiel für ein vorkonfektioniertes Konverterkabel wäre hier . In diesem Fall stecken Sie es in einen USB-Anschluss (vielleicht an einem PC) und verbinden das andere Ende mit den UART-Pins Ihres Geräts:
Dies sind nur Beispiele. Es stehen viele interne und externe Konverter zur Auswahl.
Übrigens, schließen Sie UART-Signale nicht einfach an einen USB-Anschluss an. Es wird nicht nur nicht funktionieren, sondern die unterschiedlichen Spannungspegel können Ihr Gerät und/oder das entfernte Gerät zerstören.
Eugen Sch.
Tony Stewart EE75
Chris Stratton
Tony Stewart EE75
bitsmack
sophia_ash