www.mikrocontroller.net

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


Autor: F. V. (coors)
Datum:

Bewertung
0 lesenswert
nicht 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_S...

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

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Bernhard Mayer (bernhard84)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Bernhard Mayer (bernhard84)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: F. V. (coors)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.