Ich habe ein einfaches Projekt, das im Wesentlichen Daten über eine USB-Verbindung und Bluetooth sendet und empfängt. Sowohl das USB-Modul als auch das BT-Modul teilen sich dieselben UART RX (P1.2)- und TX (P1.1)-Ports.
Das Problem, das ich habe, ist, dass ich mit dem USB-Modul keine Befehle an den MSP430 senden kann, wenn das Bluetooth mit Strom versorgt wird. Wenn ich das BT-Modul ausstecke, kann ich problemlos über USB senden.
Schließe ich sie falsch an oder muss ich BT deaktivieren, wenn ich USB verwende?
Das USB-Modul basiert auf FT232R: https://www.sparkfun.com/products/9716
Das BT-Modul basiert auf RN-42: https://www.sparkfun.com/products/10269
USB-Anschlüsse:
BT-Verbindungen:
Der Arduino hat das gleiche Problem, und sie haben vor langer Zeit eine Lösung implementiert.
Wie Sie im Bild sehen können, sind die Widerstände RN4B und RN4A 1k-Serienwiderstände zwischen dem USB-Serial ic und dem ATMega328p des Arduino. Dadurch kann ein Gerät, das direkt mit den Arduino-Headern verbunden ist, wie z. B. ein Shield/Boosterpack, mit dem Arduino ohne Störung durch den USB-Serial-IC kommunizieren.
Sie wollen dasselbe umsetzen. Platzieren Sie 1k-Widerstände zwischen Ihrem MSP430 und Ihrem Bluetooth-Modul. Dies bedeutet, dass die USB-Serial-Verbindung Vorrang vor dem Bluetooth-Modul hat. Jegliche Kommunikation zwischen dem USB-Serial und dem MSP430 wird nicht durch das Bluetooth-Modul gestört. Allerdings können Sie nicht vom Bluetooth-Modul senden/empfangen, wenn die USB-Serial-Verbindung angeschlossen ist.
Update: Dies funktioniert jedoch möglicherweise nicht immer. Wenn auf einer Seite kein USB-Signal anliegt, verwandeln einige Geräte den TX/RX in schwebende/offene Eingänge, anstatt die Leitung anzusteuern, was gut ist, aber andere können im ausgeschalteten Zustand immer noch Strom über Klemmdioden in gpio-Pins abziehen . Es kann ein Schmerz sein, weil dies bedeutet, dass sie versuchen, die Leitung zu fahren und andere daran hindern. In Ihrem Fall benötigen Sie möglicherweise einen bidirektionalen Multiplexer oder einfacher, wenn die USB-Seriell nur gelegentlich verwendet wird, könnten Sie hinzufügen ein Jumper zur Leitung. Stecken Sie den Jumper ein, wenn Sie die USB-Verbindung verwenden müssen, und entfernen Sie ihn, wenn Sie dies nicht tun.
Sowohl der USB als auch der BT teilen sich die gleichen GPIO-Pins, verwenden Sie für jedes Modul unterschiedliche Pins. Ich gehe davon aus, dass Sie nur einen UART haben, daher ist zusätzliche Logik oder Software erforderlich.
Du verbindest sie falsch.
Bluetooth-Modul und USB-zu-Seriell-Konverter (ich nenne es kurz FTDI) teilen sich die gleichen UART-Pins. Sie sind parallel mit demselben UART verbunden.
Typischerweise gibt es getrennte UARTs für Bluetooth und FTDI.
Alternativ können Sie Ihrem Schaltplan einen Multiplexer hinzufügen, sodass der UART des Mikrocontrollers jeweils nur ein Gerät "sieht".
Benutzer2218339
Passant
Benutzer2218339