PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : USB -> RS232 & I2C mit FT2232 von FTDI



Paritybit
05.08.2007, 00:15
Moin Gemeinde,

mein Ziel ist es den Chip von FTDI den FT2232D zuverwenden, um auf dem ersten Port (A) eine I2C-Schnittstelle und auf dem anderen Port (B) eine RS232-Schnittstell zu haben.

Mein Frage:
- hat jemand von euch schon einmal mit diesem Chip gearbeitet?
- Wie sieht ein guter Schaltplan mit diesem Chip aus?

Habe mir das Datenblatt zwar durchgelesen, jedoch nix verstanden?!?
Zum Beispiel wird im Datenblatt erwähnt das man für den D2xx-Treiber einen EEPROM anschließen und die Einstellung des Wandlers einprogrammieren muss.
In einem Beispiel Schaltplan für I2C wurde der EEPROM am Wandler weggelassen und dafür einen mit I2C-Schnittstelle verwendet. Ist der EEPROM mit I2C nur ein Beispiel für die Verbindung am I2C oder muss dieser für die Einstellung programmiert werden???

Also, wenn jemand mit diesem Bauelement schon einmal gearbeitet hat, wäre nett wenn Ihr mir eine Antwort drauf schreiben könntet, Danke.

see you
Paritybit

KlaRaw
05.08.2007, 21:14
Hallo,
ich bin vom FT2232 schwer entäuscht. Es gibt da ein I2C-Projekt bei FTDI und das mag auch so funtionieren. Die haben da einen seriellen I2C-Speicherbaustein als Referenzprojekt verwendet. Ich vermute mal, so etwas hatte FTDI sowie so in der Schublade. Jetzt hatte ich versucht einen simplem PCF8574 zu Laufen zubringen. Ich arbeite seit ca. 7 Jahren mit I2C-Bausteinen. Es hat nicht funktioniert. FTDI hat da im Treiber einen Fehler drin. Als ich FTDI anschrieb, hat man dies wohl nicht verstanden.
Ich habe letztlich den FT232RL verwendet. Mit einigen Mühen habe ich jetzt im Bit Bang Mode eine I2C-Schnittstelle entwickeln können. Vormals per serieller Schnittstelle brauchte ich 300ms für ein 8-Bit Befehl, jetzt weniger als 20ms.
Der Bit Bang Mode ist leider auch nicht das Allheilmittel. Leider ist die Latenzzeit von 2ms nicht zuvermeiden. Du kannst also x-Byte mit Hyperspace senden, danach wartetst Du Deine 2ms. Bei 8 Bit ist das ätzend. Allerdings kann man wie beim DS1631 möglich alle Bytes auf einmal senden und analysiert danach in Ruhe die eingegangen Bytes.

Gruss Klaus.

Amiwerewolf
06.08.2007, 19:10
Hallo,
also ich kenne es vom FT232 so das die daten direkt auf dem Chip gespeichert werden und FT232 benötigt kein externes eeprom!
weiß aber nicht ob das beim FT2232 genauso ist, könnt ich mir aber gut vorstellen!

KlaRaw
06.08.2007, 21:01
Hallo,
ich habe be FTDI unter "MPSSE Example Projects" das Projekt "FTCI2C DLL" getestet. Das "USB to I2C Inteface". Es wird dort ein 24L02 angesteuert.
----------------Meine Erfahrungen-----------
Meine PC - I2C Schnittstellen hatte ich bisher über RS232 realisiert. Die Geschwindigkeit ist für die meisten Sachen auch ausreichend.
Jetzt habe ich das Modul DLP2232 mit einem PCF8574 getestet.
In einer Schleife werden die Ports von 0 bis 255 versorgt.
Tolle Geschwindigkeit. Trotz 40m Leitung sind 130 kHz möglich!
Jetzt wollte ich im zweiten Schritt den Port mit einem Wert setzen und danach wieder auslesen. Das hatte bislang immer zuverlässig funktioniert und war ein Test für die Güte der Übertragung.
Wenn ich mit einem FT_WRITE den Wert setze werden die Ports wie erwartet gesetzt. Sobald ich ein FT_READ absetze werden die Ports alle auf HIGH gesetzt!
Das FT_READ liefert dann ordnungsgemäss 255.
Auch wenn ich Ports zwangsweise, elektrisch auf LOW setze, ein FT_READ liefert immer 255!
Ich habe einige Erfahrung mit verschiedenen I2C-Bausteinen. Der PCF8574 ist ja auch mit einer der simpelsten Bausteine. Da kann man nicht viel falsch machen. An meinem Code kann es nicht liegen.
------------------------------
Und das war es! Schade es sah so gut aus.
Der FT232RL ist dagegen super. Im Bit Bang Mode ist er für mich schnell genug. Auf jeden Fall 10 mal schneller als eine RS232-I2C-Schnittstelle.
Gruss Klaus.

Vinter
06.08.2007, 21:55
Was hast du denn fuer ein Problem mit RS232 -> I2C? O.o
Bis 50 kHz laeuft das bei mir mit den verwendeten Bausteinen (nur 1 Projekt) einwandfrei, und ich bin mir dank Oszi recht sicher, dass die Uebertragungsquali 1a ist... Noch nicht mit USB -> RS232 -> I2C probiert, steht noch an, aber ich seh da kein Problem.

KlaRaw
08.08.2007, 23:44
Hallo Vinter,
da bin ich aber am Staunen. Bei meinen RS232->I2C Schaltungen wurden jeweils die Steuerleitungen genutzt. Z.B.: RTS für SCL, DTR für SDA (out) und CTS für SDA (in). Diese Steuerleitungen lassen sich zwar beliebig schalten, sind aber recht lahm. Die Geschwindigkeit der Steuerleitungen hat nichts mit der mit der RS232 - Initialisierung zu tun, leider.
Der Bausatz "PC nach I2C-Bus Adapter" von robotikhardware arbeitet meines wissens genauso. Ein Bekannter bat mich mal um Hilfe um das Teil zum Laufen zu bringen. Ich habe nicht gemerkt das diese Schaltung schneller als meine wäre.
Wir schaffst Du da 50 KHz?
Gruss Klaus.

Vinter
09.08.2007, 23:39
Arbeite unter Linux mit ioctl(), evtl macht das was aus, besserer Treiber o. ae. Setup ist wirklich egal.

Denke aber, ich wuerde mit ein bisschen Tuning noch um einiges schneller werden, die Stabilphase des Signals besteht so gut wie nur aus Warteschleife (Low-Zeit muesste man stark senken koennen zB), brauch das aber fuer mein Projekt nicht.

Evtl solltest du dir also mal ne kleine Linux-Box fuer solche Projekte aufsetzen :) In Kombination mit nem Webserver und paar Netzwerkkenntnissen lassen sich da sicher lustige Dinge fabrizieren in Pucto Haussteuerung etc.

KlaRaw
10.08.2007, 07:01
Hallo Vinter,
unter Windows kommt man ja schon lange nicht mehr direkt an das Device, so dass sich daher ähnlich wie bei der USB-Schnittstelle Latenzzeiten von 2 ms ergeben, was die Steuerports der RS232 betrifft.
Gruss KLaus.

Vinter
10.08.2007, 19:58
Bei Linux afaik auch nicht, geht glaub nur am Parport, nichtmal sicher ob da. Muss immer den Umweg ueber den Kernel gehen, wundert mich also, dass das so viel schneller ist. Aber gut mit den 2ms ists dann geklaert, hier dauerts hoechstens 2 usec :D

Naja, Umstieg kann man eh nur empfehlen, steig grad mit C in ein paar Unixspezifische Dinge ein, faellt wirklich ueberraschend leicht - in 1 Tag meine erste sinnvolle Client/Server-Applikation gebastelt :)

ntmario
20.08.2007, 22:19
Hallo zusammen,

ich verwende den Warrior24 und brauche für einen Befehl 10ms. Vielleicht ist das ja auch was für Euch...
http://www.codemercs.com/IOW24KIT_D.html

mfg Mario