LabVIEWForum.de - Software UART Stream

LabVIEWForum.de

Normale Version: Software UART Stream
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,
Ich versuche zur Zeit die Daten, die mir eine IMU über eine UART-Schnittstelle schickt, auszulesen.
Das Problem dabei ist, dass ich ein sbRIO9632 verwende und die serielle Schnittstelle darauf bereits belegt ist. Ich muss also mit den DIOs des FPGA eine Software UART emulieren.
Dafür gibts eine Art Toolbox "FPGA IP (IPNet)- Digital Buses and Protocols (SPI, I2C and Serial)" wobei ich die VIs für die Serielle Schnittstelle verwende.
Leider funktioniert das Auslesen nicht. Ich bekomme zwar Datensalat, der aber nicht den Telegrammen entspricht, die der Sensor sendet (überprüft mit KO)
Ich vermute das Problem liegt darin, dass der Sensor die Daten quasi streamt, also 280 Werte pro Sekunde auf die Schnittstelle schiebt und die UART das Startbit nicht korrekt erkennt.

Hat zufällig jemand von euch einen Lösungsansatz, um das Startbit am Anfang eines Telegramms korrekt zu erkennen?
Weitere Infos:
Baudrate 115200
8 Datenbits
Keine Parity
1 StopBit

Telegrammlänge 18 oder 20 Zeichen bzw. Bytes

lDie kleine While-Schlaufe vor der Read-Schlaufe ist von mir und soll die (lange) Pause zwischen zwei Telegrammen detektieren und erst dann das Startbit suchen. Der Rest des Codes ist im Originalzustand, wie er heruntergeladen wurde.
Beide VIs laufen auf dem FPGA

Danke für die Unterstützung

Lv09_img2
[attachment=34800] [attachment=34801]
hat keiner eine Idee?

nach vielen Versuchen, andere Ansätze zu prüfen, hab ich jetzt versucht herauszufinden, ob die Erkennung der fallenden Flanke des Startbits funktioniert, indem ich direkt nach Erkennung der Flanke einen anderen Pin kurz High setze.
auf dem KO mit einer Sonde am Stream und einer am Testpin sehe ich nun, dass von 20Bytes im Telegramm höchstens bei 4 oder 5 Startbits die Triggerung auslöst.
Hat vielleicht dafür jemand eine Erklärung?
Das Problem lag nicht an der Erkennung des Startbits, sondern in der Weitergabe der Bytes an den Realtime Controller des RIO über einen FIFO - egal wie schnell der ausgelesen wurde, er lief immer sofort voll - ob mit 100 oder 10000 Elementen.

Die Lösung war, das Zusammenstellen der Telegramme auf das FPGA herunter zu nehmen und nur komplette Telegramme zum Realtime zu senden -> FIFO fällt weg.
Läuft jetzt zuverlässig mit den erwähnten Einstellungen.
Schreiben funktioniert ähnlich, ganzes Telegramm wird als Array ans FPGA übermittelt und dann byteweise gesendet.
Hallo

Deiner Beschreibung nach verwendest du offensichtlich auch die IMU von chrobotics (chr6d oder Nachfolger). Ich habe nämlich das selbe Problem mit der in FPGA implementierten RS232. Vielleicht könntest du mir deine Lösung des FPGA-VI zukommen lassen, würde mir viel Arbeit sparen. Danke!

Werner
Im Anhang findet Ihr mein FPGA-File, mit dem es schliesslich funktioniert hat. die PID Regler und die PWM Erzeugung werden nicht benötigt, es werden 2 UART Schnittstellen emuliert

Lv09_img2
Danke für die rasche Hilfe!
Referenz-URLs