Forum: Mikrocontroller und Digitale Elektronik Kommunikationsprobleme mit FTDI FT245R


von Womp! (Gast)


Lesenswert?

Hi,

ich habe hier ein USB-Gerät, welches intern einen FTDI FT245R Chip 
verwendet und mit 1 MBit Übertragungsrate läuft. Leider habe ich größte 
Probleme, mit diesem zu kommunizieren, sprich das Gerät sendet auf meine 
Anfragen keine Antwort. Unglücklicherweise kann ich kein Loopback o.ä. 
setzen, ich bin auf die Antworten des Gerätes gemäß dessen Protokoll 
angewiesen.

Mein Code zur seriellen Kommunikation (WinAPI) stammt aus einem anderen 
Projekt, dort läuft er problemlos.

- CreateFile() mit "COM18" ist erfolgreich, der Port kann also geöffnet 
werden
- SetCommState() ist ebenso erfolgreich, die Kommunikationsparameter 
werden also gesetzt

Ich habe DCB.BaudRate schon auf 921600 und 1048576 gesetzt, in keinem 
der beiden Fälle kommt irgend eine Kommunikation zu stande. Das 
Übertragungsformat 8N1/keine Flusskontrolle sollte auch passen.

Was kann also sonst noch falsch sein? Ich bin für jeden Denkanstoß 
dankbar :-)

von Purzel H. (hacky)


Lesenswert?

Ich wuerde annehmen, dass 1MBit, 1 MBit ist und nicht 921600 oder 
1048576. Eigentlich sollte die Baudrate ja egal sein, da die 
Uebertragung ja eh USB ist, und auf der anderen Seite des chips 
parallel. Probier's doch mal mit 19200, oder 115200, ob denn da was 
kommt. Dem Gerate sollte das auch egal sein, es kommuniziert ja parallel 
mit dem Chip. Das Handshake des chips wird bedient? Ich habe keine 
Anhnung was geschieht, wenn der Buffer voll ist, und noch mehr gesandt 
wird.

von Womp! (Gast)


Lesenswert?

Delta Oschi schrieb:
> Ich wuerde annehmen, dass 1MBit, 1 MBit ist und nicht 921600 oder
> 1048576

Also entweder bin ich jetzt völlig auf dem Holzweg...aber 1 MBit sind 
1024 * 1024 = 1048576!?

> Eigentlich sollte die Baudrate ja egal sein, da die
> Uebertragung ja eh USB ist, und auf der anderen Seite des chips
> parallel.

Naja, da es über den VCP-Treiber geht, gibt es noch einen ganz 
gewöhnlichen COM-Port und der will doch immer eine Übertragungsrate 
haben?

> Probier's doch mal mit 19200, oder 115200, ob denn da was
> kommt.

Nö, da tut sich nix - auch bei 9600 nicht.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

1MBit sind 1000000Bit.
Wir sind hier nicht bei Festplatten.
1MiBit wäre deine krumme Zahl.

Ansonsten ersmal mit nem Terminalprogramm probieren um eigene Fehler 
auszuschließen im Programm.

Wenn du schon selber proggst, sollteste nicht über VCP gehen sondern 
gleich den D2XX Treiber nehmen ;)
Ders auch gut erklärt und ne dll gibs bei FTDI zum DL.

von Womp! (Gast)


Lesenswert?

Martin Wende schrieb:
> Ansonsten ersmal mit nem Terminalprogramm probieren um eigene Fehler
> auszuschließen im Programm.

Das habe ich gemacht - da rührt sich auch nix.

> Wenn du schon selber proggst, sollteste nicht über VCP gehen sondern
> gleich den D2XX Treiber nehmen ;)
> Ders auch gut erklärt und ne dll gibs bei FTDI zum DL.

Der hat nur einen Nachteil: Unter Linux muss ich dann eine separate 
Shared Lib mitliefern, die es nur als Binary und für bestimmte 
Plattformen gar nicht gibt. Den /dev/ttyUSBx sehe ich unter jeder 
Plattform.

von Womp! (Gast)


Lesenswert?

Delta Oschi schrieb:
> Eigentlich sollte die Baudrate ja egal sein, da die
> Uebertragung ja eh USB ist, und auf der anderen Seite des chips
> parallel.

Ich habe noch mal ein bissl bei FTDI gegraben, die haben dort ein 
Demoprogramm ,das den gleichen Weg geht wie ich und bei dem auch die 
Baudrate für den COM-Port gesetzt wird. Die scheint also in der Tat 
wichtig zu sein.

von W.S. (Gast)


Lesenswert?

Womp! schrieb:
> Der hat nur einen Nachteil: Unter Linux...

...mußt du ja auch den eigentlichen Low-Level-Treiber von FTDI benutzen, 
egal ob du nun mit direktem Zugriff per D2XX-DLL oder über den Umweg 
eines virtuellen COM-Ports gehst.

Wenn du partout den virtuellen COM18 benutzen willst, dann mußt du 
irgendeine Standard-Baudrate setzen. Welche, ist egal.

Wenn du den D2XX-Weg gehst, kannst du direkt nachfragen, ob denn 
irgendein FTDI-Chip am USB angemeldet ist oder nicht.

Vielleicht ist das ein Hardwareproblem oder eines in der Firmware des 
Gerätes? Mach dir doch einfach mal ne Probierhardware aus einem FT245 
und einem uC deiner Wahl (kleiner PIC o.ä.), der einfach nur alles was 
er empfängt, wieder zurücksendet. Dann kannst du diesen Dummy für das 
Debuggen deiner Low Level-Routinen benutzen.

W.S.

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.