Forum: Mikrocontroller und Digitale Elektronik UART FT232R Problem am PC!


von Tipsy (Gast)


Lesenswert?

Hallo Forum,

ich versuche gerade Daten von meinem Nios über Uart zum PC zu senden.

Die Daten auf dem Uart scheinen zu stimmen. Wenn ich mit nem LA 
draufschau passt es. Und wenn ich mit einem Buspirate und Teraterm den 
Uart Monitor dort anschmeiße sehe ich auch meine Daten.

Wenn ich nun aber versuche über so ein China FT232R Breakout Board die 
Daten zu empfangen seh ich nichts.

Vielleicht mach ich auch etwas falsch.

Ich starte Teraterm und connecte mich mit dem Com Port den mein Breakout 
Board erstellt hat.

Mit den entsprechenden Einstellungen.COM6 9600 8 none 1 none.

Und dann passiert nichts mehr. Es wird nichts angezeigt. Einfach nur der 
Cursor.

Wenn ich es mit Matlab Versuche passiert auch nichts.

Was mache ich denn falsch?
Muss ich noch irgendwas eingeben?


Achja senden tu ich so:
1
void ANT_SEND(float Height_UNN,float Temperature)
2
{
3
  unsigned char i;
4
  unsigned char  txBuffer[32];
5
  unsigned char  txBufferSize=0;
6
  unsigned char BUFFER[32]={0};
7
8
sprintf(BUFFER,"%.1f%.1f",Temperature,Height_UNN);
9
txBufferSize  = strlen(BUFFER)+0;  // message plus sync, size and checksum
10
//txBuffer[0]  = 0xa4;  // sync byte
11
//txBuffer[1]  = (unsigned char) strlen(BUFFER) - 1;  // message size - command size (1)
12
//txBuffer[2] = 0x4e;
13
for(i=0; i<strlen(BUFFER); i++)
14
    txBuffer[0+i] = BUFFER[i];
15
16
// calculate the checksum
17
//for(i=0; i<txBufferSize - 1; ++i)
18
//txBuffer[txBufferSize - 1] = txBuffer[txBufferSize - 1] ^ txBuffer[i];
19
20
21
22
uart = fopen("/dev/UART", "r+");
23
  if(uart)
24
  {
25
    for(i = 0 ; i < txBufferSize ; i++)
26
         {
27
        putc(txBuffer[i],uart);
28
         }
29
    }
30
  fclose(uart);
31
}

Bzw. hat jemand mal einen Matlab Code der mir einfach nur den UART 
einließt?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Tipsy schrieb:
> Wenn ich nun aber versuche über so ein China FT232R Breakout Board die
> Daten zu empfangen seh ich nichts.

Nun, wie hast Du das denn mit Deinem "Nios" verbunden?

von No Y. (noy)


Lesenswert?

So nun angemeldet.

TX und RX über kreuz an die entsprechenden GPIO Pins des DE2 und GND an 
GND.

Die Uart wird ohne CTS/RTS betrieben.

Die RX Led der Breakoutboards leuchtet immer ganz wenig und immer wenn 
was gesendet wird vom DE2 (alle 5s einmal den Buffer) blinkt diese 
einmal Hell auf. Scheint somit bis dahin zu funktionieren.

von holger (Gast)


Lesenswert?

>TX und RX über kreuz an die entsprechenden GPIO Pins des DE2 und GND an

Sicher das die an deinem Board gekreuzt werden müssen?

von No Y. (noy)


Angehängte Dateien:

Lesenswert?

Hier noch ein Bild vom BusPirate in TeraTerm.

Passt soweit. Zuerst die Temperatur mit 1er Nachkommastelle und dann die 
Höhe über NN mit 1er Nachkommastelle. Und dann kommt nach 5s direkt 
dasselbe nomma mit neuen Werten.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Du kannst mit Teraterm Daten empfangen und Du kannst gleichzeitig mit 
Teraterm keine Daten empfangen?

Hä?

von No Y. (noy)


Lesenswert?

Ja mit dem BusPirate geht es ja.

Aber mit dem FT232 Breakoutboard wird nichts angezeigt.

Muss ich da noch irgendwas machen damit ich die Daten sehen kann?
Oder wie gibt denn so ein FTDI die Daten aus?


Bzw. funktioniert der BusPirate wie ein LA und decodiert die Daten noch 
zusätzlich??


Irgendwie raffe ich es nicht. Ich dachte wenn die Daten so am Bus 
auszulesen sind müsste mir das Breakout Board einfach die Daten so in 
TeraTerm auswerfen.



Ahhh hab den Unterschied gefunden:

Live UART monitor

UART>(2)<<<macro 2, UART monitor
Raw UART input. Space to exit.
UART>

The UART monitor macro (2) shows a live display of UART input as raw 
byte values without any type of formatting. Press any key to exit the 
live monitor. This mode works best with a terminal that can display raw 
byte values in a variety of formats.

This macro is like the transparent UART macro (1) but without 
transmission abilities, and it can be exited with a key press. It’s 
useful for monitoring high-speed UART input that causes buffer overrun 
errors in other modes.


Damit geht es. Wenn es ein normaler UART->USB ist (auch mit dem 
BusPirate möglich) geht es nicht.
Was muss ich ändern? Stimmt etwas bei meinen Daten nicht die gesendet 
werden? Bzw. wie diese gesendet werden?



Mein Breakout Board hat leider nur CTS herausgeführt. Aber wenn ich 
Empfangen will mit Flow Control brauche ich ja RTS.. Ich hab so das 
Gefühl das ist eigentlich nur zum Senden an einen Arduino gedacht nicht 
zum Empfangen...

von Bernhard S. (b_spitzer)


Lesenswert?

Arbeiten beide (FTDI-Breakout und Buspirat) dabei mit TTL-Pegeln?
Ist beim FTDI im Gerätemanager Flusskontroller auf "keine" gestellt?

von No Y. (noy)


Angehängte Dateien:

Lesenswert?

Hier die Einstellungen des FTDI.

Beide sind auf 3.3V eingestellt. Beim FTDI sind folgende Pins verfügbar: 
GND CTS VCC TX RX DTR


Was ich ncoh komisch finde, dass sobald ich den FTDI angeschlossen habe 
die RX Led dauerhaft schwach leuchtet.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Die Handshakeleitungen sind uninteressant, solange Du im 
Terminalprogramm das Hardwarehandshake deaktivierst. Nur GND, TX und RX 
müssen verbunden werden.

TX und RX musst Du gegebenenfalls vertauschen.


Bei Screenshots ist es übrigens sinnvoll, nur die Dinge von Relevanz zu 
kopieren. Mit gedrückter Alt-Taste landet nur das gerade aktive Fenster 
in der Zwischenablage.

von No Y. (noy)


Angehängte Dateien:

Lesenswert?

So sieht es auf dem Bus aus bzw am RX Pin des FTDI.

Sende ich vll die Bytes zu schnell hintereinander?

Soll ich im Code eine Delay einbauen?

von No Y. (noy)


Lesenswert?

Hm, kann mir hier keiner helfen? Hat keiner eine Idee?

Ein Buffer overflow am FT232R kann es nicht sein. Laut Datenblatt hat 
der einen Reciver Buffer von irgendwas 2XX Byte...

Könnte mir höchstens vorstellen, dass es zu schnell hintereinander 
gesendet wird. Wobei der Chip ja viel höhere Baud Raten mitmacht.

Also wo liegt mein Fehler?

Oder ist der Chip kaputt?

Wobei ja den BusPirate als direkte Bridge auch nicht funktioniert.

von No Y. (noy)


Lesenswert?

Fehler behoben!

Wurden zu schnell hintereinander gesendet. Hab nen Delay rein und siehe 
da es geht...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.