UART-Kommunikationsprobleme

Ich verwende einen UART, um mit RS232 auf einem Bluetooth-Modul Roving Networks RN-42 SM zu kommunizieren. Ich habe Sender und Empfänger an einen Logikanalysator angeschlossen.

Das Problem, das ich habe, ist, dass der Logikanalysator anzeigt, dass die TX-Leitung des TX 0 ist, wenn ich den TX meines uC mit dem Roving-Netzwerk RS232 RX verbinde. Wenn ich den RX des Roving Networks-Moduls trenne, beginnt es erneut mit der Datenübertragung.

Die Bilder sind in den Links unten enthalten.

Hier ist mein Sendecode:

while(1)
{
    PORTC ^= 0xFF;

    transmitStr((unsigned char *)CMDMODE);
    _delay_ms(1000);

}

Keine Verbindung zu TX

Keine Verbindung zu TX

Verbindung zu TX

Verbindung zu TX

Möglicherweise interpretieren Sie den "Standpunkt" der Beschriftung von TX und RX auf dem Modul falsch, was dazu führt, dass Sie die Sendepins der beiden Geräte miteinander verbinden.
Das dachte ich, als es nicht funktionierte, aber als ich es überprüfte, war es tatsächlich der TX, der mit dem RX verbunden war. Ich sollte auch erwähnen, dass das Bluetooth-Modul mit 3,3 (V) läuft, das von 5 (V) auf dem uC reguliert wird. Der TX des uC geht durch einen Widerstandsteiler, um die entsprechenden 3,3 (V) für den Eingang zum RX auf dem Bluetooth-Modul zu erhalten ... Ich denke jedoch nicht, dass dies irgendwelche Probleme verursachen sollte
Messen Sie mit einem Oszilloskop sowohl vor als auch nach dem Teiler, das sollte Ihnen helfen, herauszufinden, was schief läuft. Wenn Sie den Bereich nicht haben, fahren Sie den UART-Pin als GPIO, der alle paar Sekunden umschaltet, und verwenden Sie ein Messgerät.
Es scheint, dass der UART trotz der ihm gegebenen Eingaben IMMER hochgezogen wird ... Ich frage mich, was die Probleme sind ...

Antworten (1)

RS-232- und Mikrocontroller-Logikpegel-UART-Signale sind nicht dasselbe. Allgemein werden die Logikpegelsignale zum einen invertiert. Der Leerlaufpegel der Logikpegelleitung ist typischerweise hoch. Auch die Spannungspegel unterscheiden sich erheblich. Die Logikpegelsignale sind natürlich auf normalen Logikpegeln, die normalerweise 0–3,3 V oder 0–5 V betragen. RS-232 liegt unter -5 V für Leitungsruhe (Leerzeichen) und über +5 V für aktiv (Markierung).

Dies ist ein häufiges Problem, daher gibt es Chips, die diese Konvertierung für Sie übernehmen. Suchen Sie nach "MAX232" und Sie werden viele Varianten von verschiedenen Herstellern für Logik-zu-RS-232-Umwandlungschips finden.

Ich hatte das gleiche Problem auch mit dem Standard-UART aus dem Modul, ich denke, ich werde der Standard-UART-Schnittstelle eine weitere Chance geben ...