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
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
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
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
@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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.