Bei der Evaluierung des Libelium Waspmote- Boards für drahtlose Sensornetzwerke entdeckten wir ein seltsames Kommunikationsproblem.
Wir haben versucht, eine Verbindung zwischen der Waspmote und einem anderen Board über UART bei 115200 Baud mit 8N1 herzustellen.
Dies ist die resultierende Wellenform auf Tx für das Senden von 9 mal 0x55 (01010101b):
Die High- und Low-Pegel degenerieren bis zur Erkennungsschwelle: Beginnend mit einem High-Pegel von 3,3 V fallen die Spitzen auf etwa 2,7 V ab und die Tiefs beginnen bei etwa 1,1 V und fallen auf 0,7 V ab.
Gemäß der Spezifikation der Zielplatinen sollten die Spitzen > 2,3 V und die Tiefs < 1 V für einen korrekten Betrieb sein.
Es sieht für mich so aus, als ob ein kapazitives Verhalten auftritt, aber ich habe keine Ahnung, warum dies passiert.
Ich brauche einen Hinweis darauf, was passiert, was ich falsch mache oder was ich tun kann, um dieses Problem zu beheben.
Einige Zusatzinfos:
AKTUALISIERUNG 1
Ich habe eine Detailaufnahme des Signals gemacht. Wir betrachten eine Übertragung mit etwa 125 kHz - was ein bisschen weit von den gewünschten 115200 Baud entfernt zu sein scheint, die ich anstrebe.
AKTUALISIERUNG 2
Ich messe identische Wellenformen, wenn ich die Traget-Platine abtrenne und die Oszilloskopsonde direkt an den UART-Pin des Mikrocontrollers stecke. Dies scheint Probleme mit der Zielplatine auszuschließen. Die gemessene Baudrate beträgt jedoch genau 125000, was einen Fehler von etwa 8 % gegenüber der gewünschten Zielbaudrate von 115200 darstellt. Da die UARTs-Spezifikation den Baudratenversatz auf 2 % begrenzt, liegt hier wohl mein Problem. Da das Waspmote-Board jedoch auf eine Taktrate von 8 MHz eingestellt ist, kann der Atmega1281 auf dem Board durch die Prescaler-Register keinen genaueren 115200-Baud-Takt erzeugen (ich habe das Handbuch überprüft). Ich denke, ich brauche ein anderes Board, um mit meinem Zielboard zu kommunizieren.
Danke an alle.
Ihr Problem liegt wahrscheinlich in der Verwendung der falschen Baudrate: 112500 ist höchstwahrscheinlich ein Fehler, die Standardrate in diesem Bereich ist 115200 (eine Suche auf der Website des Herstellers nach dieser Nummer findet viele Treffer, aber keinen für 112500). Sie könnten auch aufgrund der Teiler-Granularität nicht die programmierte Baudrate an dem einen oder anderen Ende erzeugen; Manchmal kann es hilfreich sein, das Oversampling des UART zu ändern. BEARBEITEN: Insbesondere ein Wert von 8 (Teiler von 9) bringt Ihnen 111111 Baud von 8 MHz, wenn Sie das Modusbit "Doppelte Geschwindigkeit" setzen.
Zweitens haben Sie ein Problem wie das Fehlen einer gemeinsamen Erdung zwischen den Platinen oder das Oszilloskop nicht mit ihnen geerdet, was zu einer verzerrten Wellenform führt. Es ist noch nicht klar, ob es das ist, was der Empfänger sieht, oder ob es sich lediglich um einen Messfehler bei der Anwendung des Zielfernrohrs handelt.
Haben Sie außerdem überprüft, ob das unbenannte externe Board auch ohne einen seriellen Übersetzer läuft? Die meisten modularen seriellen Kommunikationen zwischen Platinen erfolgen auf RS232-Pegeln und sind logisch von den Logikpegelsignalen invertiert, obwohl es Ausnahmen gibt.
Wie Sie sagen - das Signal scheint kapazitiv gekoppelt zu sein - wenn ja, macht es einen relativ guten Sinn für das, was Sie sehen. Es sei denn, das Oszilloskop ist kapazitiv gekoppelt und zeigt Ihnen die Auswirkungen davon.
Eine vernünftige Möglichkeit:
Der technische Leitfaden von WaspMote weist darauf hin, dass es über 4 UARTS verfügt,
von denen jeder über einen mitgelieferten Multiplexer ausgewählt werden kann.
In der Tat, wenn Sie den UART sehen möchten, den Sie verwenden, MUSS er vom Multiplexer ausgewählt werden :-) !!!
Abschnitt 2.5 auf Seite 16 behandelt UART- und Mux-Pinbelegungen und 2.5.4 auf Seite 18 behandelt die Software-Mux-Steuerung.
Wenn Sie den UART nicht richtig ausgewählt haben, koppelt er möglicherweise informell kapazitiv. Haben Sie den Multiplexer richtig ausgewählt?
Eine Möglichkeit:
Sobald Sie sich sicher sind, wie der DC-Verbindungspfad aussehen sollte, können Sie ihn überprüfen.
Schalten Sie alle Systeme aus. Messen Sie die DC-Kontinuität von Ende zu Ende auf der Signalleitung entlang des längsten Pfads, der DC-resistiv sein sollte.
Ist es?
Messen Sie den Massedurchgang vom Massestift des Prozessors zur Masse des Waspmote-Prozessors.
Diese sollten offensichtlich DC-kontinuierlich sein.
Einen Versuch wert:
Entscheiden Sie, ob es einen Punkt in der TX-CCT gibt, der so nahe am Signalursprungspunkt liegt, der geerdet oder mit einem kleinen Widerstand heruntergezogen werden kann. Vielleicht auch zur Versorgung gezogen. Wenn ja, tun Sie dies und prüfen Sie, ob der DC-Pegel bestehen bleibt und nicht nur eine kapazitiv gekoppelte Auslenkung verursacht.
Verzweifelt
Wird ein Treiber nicht mit Strom versorgt, so dass der Signalhub ihn mit Strom versorgt, die Versorgung dann jedoch unter Last abklingt.
Majenko
Russell McMahon
Kenny
Russell McMahon
Olin Lathrop
Chris Stratton