2 Geräte an einem µC UART

OP #8087752
Lesenswert?

Hallo,

Kurze Frage in die Runde: habe hier einen LPC11C14 => der hat nur einen UART. Der bekommt im Normalbetrieb die Positionsdaten eines GPS Empfängers (NEO-6M). Funktioniert so weit. Jetzt sollte aber der UART auch für ein Firmware update verwendet werden können. Folglich muss ich den GPS Empfänger für die Dauer des Firmware Updates zum schweigen bringen.

Erste Idee: der GPS Sender wird low side mit einem ULN2003A abgeschaltet. Vcc bleibt drann. => kann das funktionieren? oder können da Pegel auftreten, welche der NEO-6M nicht so mag und ich einen Hardwareschaden riskiere? Zur Sicherheit noch Serienwiderstand in TX/RX geben? (Warum ULN2003A => den hab ich da :) )

Oder gibt's andere / bessere Alternativen?

Um es einfach zu halten, gerne mit Bauteilen welche ich bereits zur Verfügung habe. (Standard Dioden, Widerstände und Transistoren hab ich auf Lager...aber keinerlei Logik IC's).

Danke & vG Alram

#8087755
Lesenswert?

GND solltest Du niemals schalten. VCC auch nicht. Dein Modul kann nämlich nur Spannungen von 0V bis VCC ab, und wenn VCC 0V ist, dann heißt das, dass das Modul komplett spannungsfrei an allen Pins sein muss.

Es gibt zwei Möglichkeiten:

  1. Dein GPS Modul kann auch über I2C bedient werden. Schau dazu ins Manual. Das macht den UART frei. Du wirst Dich dann wahrscheinlich mit dem binären UBX-Protokoll beschäftigen müssen.
  2. UART multiplexen. Nimm dazu einen 74LVC2G125 und einen 74LVC2G126. Das sind zweifach-Buffer mit Enable beim 125 ist Enable Active-low, beim 126 ist Enable Active-High. Die Enables führst Du alle zusammen auf einen GPIO-Pin und kannst damit zwischen Update-UART und GPS-UART umschalten.

fchk

OP #8087761
Lesenswert?

Danke für eure schnelle Rückmeldung!

Frank K. schrieb:

GND solltest Du niemals schalten. VCC auch nicht. Dein Modul kann nämlich nur Spannungen von 0V bis VCC ab, und wenn VCC 0V ist, dann heißt das, dass das Modul komplett spannungsfrei an allen Pins sein muss.

das hab ich befürchtet. Und zum ausprobieren ist der IC dann doch zu teuer :)

Frank K. schrieb:

Dein GPS Modul kann auch über I2C bedient werden.

Hab dieses Modul: https://www.berrybase.at/u-blox-neo-6m-gps-ttl-empfaenger-inkl.-antenne Da sind nur die UART PIN's ausgeführt :(

Hmmm schrieb:

Wenn der "Update-Adapter" nur bei Bedarf angeschlossen wird, ist es einfach: GPS-Empfänger über ein paar kOhm an den RX-Pin des UARTs hängen, den Update-Anschluss direkt. Dann hat letzterer Vorrang.

Das ist vielleicht in der Tat die einfachste Variante. Der Programmer ist zwar permanent "angesteckt" (ein anderer IC auf der Platine) - aber dessen PIN's kann ich auf hochohmig einstellen, wenn nicht geflashed wird.

Hmmm schrieb:

GPS-Empfänger über ein paar kOhm an den RX-Pin des UARTs hängen

Was wäre bei 9600 bit/s ein guter Wert zum testen? 10k?

#8087773
Lesenswert?

Alram L. schrieb:

Was wäre bei 9600 bit/s ein guter Wert zum testen? 10k?

Besitzt du ein Oszi?
Es hängt von der kapazitiven Last an deinem Bus und der Treiberleistung von deinem Update-Adapter ab. 10kOhm kann schon arg groß sein. Guck dir die Signale an.

Den NEO-6M kannst du bestimmt auch auf 4800 Bd einstellen. Wenn du nur die Datensätze überträgst, die du benötigst, reicht das immer - ging früher auch.

: Bearbeitet durch User
Moderator Persönliche Seite #8087775
Lesenswert?

Hmmm schrieb:

Alram L. schrieb:

Folglich muss ich den GPS Empfänger für die Dauer des Firmware Updates zum schweigen bringen.

Wenn der "Update-Adapter" nur bei Bedarf angeschlossen wird, ist es einfach: GPS-Empfänger über ein paar kOhm an den RX-Pin des UARTs hängen, den Update-Anschluss direkt. Dann hat letzterer Vorrang.

Oder einfach eine zweipolige Klinkenbuchse mit Schalter benutzen. ;-)

#8087787
Lesenswert?

Jörg W. schrieb:

Oder einfach eine zweipolige Klinkenbuchse mit Schalter benutzen. ;-)

Ist teurer als ein Widerstand ...

Bradward B. schrieb:

Geht NMEA nicht in beide richtungen und man könnte dem GPA-Modul auch ein Kommando schicken, das es abschaltet ?

Es geht nicht alleine darum, das GPS-Modul zum Schweigen zu bringen, sondern der Treiber muss auch abgeschaltet werden, es sei denn, man baut mit Dioden noch ein OR-Gatter.

#8087809
Lesenswert?

Andere Idee: Dein LPC11C14 hat einen Bootloader im ROM, und er hat CAN (was wahrscheinlich der Grund dafür ist, dass er verwendet wird). Der Bootloader kann sowohl über UART als auch über CAN seinen Code laden. Für den ROM-Bootloader müsste man nur zwei GPIOs beim Reset pullen. Der Rest geht dann ohne weitere Hardwareänderungen.

fchk

#8087811
Lesenswert?

Hmmm schrieb:

Alram L. schrieb:

Folglich muss ich den GPS Empfänger für die Dauer des Firmware Updates zum schweigen bringen.

Wenn der "Update-Adapter" nur bei Bedarf angeschlossen wird, ist es einfach: GPS-Empfänger über ein paar kOhm an den RX-Pin des UARTs hängen, den Update-Anschluss direkt. Dann hat letzterer Vorrang.

Aber das GPS-Modul bekommt immer noch die Antworten des Prozessors. Das könnte stören.

fchk

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren