Forum: Mikrocontroller und Digitale Elektronik I2C direkt an FT232 ansteuerbar?


von F. V. (coors)


Lesenswert?

Hi,

Meine Frage ist, ob schonmal jemand versucht hat ein I2C / TWI IC direkt 
an einem FT232 zu betreiben.

Wenn ja, wie habt ihr das Problem mit dem Timing geloest?

Ich wuerde gerne 2 von diesen ICs als Digitalpotis verwenden: 
http://www.analog.com/static/imported-files/Data_Sheets/AD5241_5242.pdf

Laesst sich das programmiertechnisch von der PC Seite aus schon soweit 
loesen, dass einfach die I/O Pins des FT232 entsprechend hochgezogen 
werden, oder ist das erreichbare Timing nicht genau genug, so dass ich 
da besser doch nen Tiny zwischenhaenge?

Gruesse,
Felix

von Ralf (Gast)


Lesenswert?

Ich würde sagen, über BitBang-Modus lässt sich das lösen. Timing sollte 
nicht so kritisch sein, da im BitBang die Daten mit der eingestellten 
Clockrate ausgegeben werden.
Du musst eben drauf achten, dass deine Hardware dann auch passt bzgl. 
OpenCollector/OpenDrain-Ausgängen.
Das heisst, das SDA-Signal darf nicht über einen Pin gemacht werden, 
sondern muss über zwei gemacht werden, sonst raschelt es auf der 
Leitung.
Also, ein Pin ist Eingang, einer ist Ausgang mit einem Transistor. Die 
Daten, die du sendest, musst du entsprechend invertieren, oder du hängst 
einen zweiten Transistor hinten dran. Der Eingangspin wird dann an den 
Collector angeschlossen. Da du in diesem Fall immer der Master bist, 
musst du das nicht für den SCL machen.
Alternativ kannst du den FT2232D nehmen, der kann auf dem Kanal A auch 
I2C/SPI/JTAG, entsprechende DLLs sind auf FTDI verfügbar. Deren 
Dokumentation ist zwar grausig, aber es sollte gehen...

Ralf

von Michael U. (amiga)


Lesenswert?

Hallo,

Ralf wrote:
> Also, ein Pin ist Eingang, einer ist Ausgang mit einem Transistor. Die
> Daten, die du sendest, musst du entsprechend invertieren, oder du hängst
> einen zweiten Transistor hinten dran. Der Eingangspin wird dann an den
> Collector angeschlossen. Da du in diesem Fall immer der Master bist,
> musst du das nicht für den SCL machen.

Das mit SCL ist mit großer Vorsicht zu genießen...
Ein Slave darf jederzeit SCL auf Low halten, wenn er mit der 
Geschwindigkeit nicht klarkommt. Der Master muß also SCL nach dem High 
setzen abfragen und wenn der Slave es auf Low hält, warten, bis der es 
wieder frei gibr.

Wird wohl nur von wenigen ICs benutzt, hat mich aber mal viel Zeit mit 
dem MAS3507 gekostet, weil selbst Atmels damalige AppNote das nicht 
berücksichtigt hat...

Gruß aus Berlin
Michael

von Bernhard M. (bernhard84)


Lesenswert?

Hi!

Ja, geht auch direkt. hab ich schon gemacht und hier beschrieben:
Beitrag "I2C-Master mit FTDI FT232R im Bit-Bang-Modus"

so wie ich des gemacht habe, ist die Taktrate allerdings nur etwa 100 
Hz. Auf das Clock-Stretching, also SCL wird vom Slave auf Masse 
gehalten, wird keine Rücksicht genommen, dürfte aber bei 100 Hz eher 
kein Problem sein.
Die Pull Ups sind auch nicht 100 % korrekt implementiert, aber mit einem 
LM75 hats bei mir einwandfrei funktioniert und es werden halt keine 
zusätzlichen Bauteile benötigt und der RS232-Port vom FT232RL bleibt 
auch frei.

Bernhard

von Falk B. (falk)


Lesenswert?

@Bernhard Mayer (bernhard84)

>so wie ich des gemacht habe, ist die Taktrate allerdings nur etwa 100
>Hz.

Das ist ja nicht berauschend. Sinnvoller wäre es, den I2C Master mit 
einem kleinen uC zu realisieren, der per FTDI und UART mit 250kBaud++ 
seine Befehle bekommt und dann direkt den I2C steuert. ISt hundertmal 
schneller und kann problemlos auf Clock Stretching reagieren. Kostet 
aber ein wenig Entwicklungsaufwand. Ein 8 Piner als uC sollte reichen 
(2xUART, 2xI2C, Takteingang).

MFG
Falk

von Bernhard M. (bernhard84)


Lesenswert?

ist klar, dass es mit dem FT232 direkt nicht so toll ist.
Dafür ist der Entwicklungs- und Bauteilaufwand geringer.
Es stellt sich halt die Frage, was einem wichtiger ist.
Ich persönlich würds auch mit einem Mikrocontroller machen, da auch der 
Recheneaufwand im PC geringer ist.

Bernhard

von F. V. (coors)


Lesenswert?

Danke fuer die Info. Bit Bang hab ich irgendwie erst nicht gesehen.

Da mir nen paar Hz zum stellen der Pots reichen werde ich wohl Bernhards 
Variante in Angriff nehmen.

Falls du es noch rumfliegen hast, koenntest du ja mal die Verbindung zum 
I2C Slave posten. Wozu genau die 2k Ohm sind ist mir momentan nicht ganz 
klar.

Falls das dann doch nix wird nehme ich halt doch nen Tiny2313 und mache 
das per UART. Wollte halt einfach Platz / Programmieraufwand sparen :)


Felix

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.