www.mikrocontroller.net

Forum: Projekte & Code I2C-Master mit FTDI FT232R im Bit-Bang-Modus


Autor: Bernhard Mayer (bernhard84)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen!

Ich habe einen I2C-Master mit einem FTDI FT232R im CBUS Bit-Bang-Modus 
gemacht.
Als Anhang habe ich ein kleines Programm angefügt, das einen LM75 
ausliest.

Die Schaltung ist minimal, es muss nur an den FT232R die Beschaltung für 
die USB Schnittstelle angeschlossen werden. Die CBUS-Pins 0 und 1 dienen 
als SCL und SDA (SDA=CBUS0; SCL=CBUS1). Beide Pins müssen jeweils mit 
ca. 2 kOhm nach VCC gezogen werden. Schaltbild reiche ich bei 
Gelegenheit noch nach.

Die I2C-Software ist sehr rudimentär. Die I2C-Zyklen müssen aus Start- 
und Stopbedingungen und den zu übertragenen Bytes zusammengesetzt 
werden. Aber es funktioniert. Allerdings ist der Bus erwartungsgemäß 
sehr langsam. Ich komme auf ca. 100 Hz. Das Auslesen eines 
Temperaturwertes vom LM75 dauert damit ca. 300 ms. Das wird auch vom 
Programmbeispiel gemessen. Diese Zeit ist auch relativ konstant, wie man 
durch die 5 Wiederholungen im Programm sehen kann.

Den Code könnte man beim Errorhandling noch verbessern. Ebenso den 
I2C-Code. Wenn ich dazu Zeit habe, werde ich den nochmal überarbeiten.

Über Rückmeldungen würde ich mich freuen.

Bernhard

Autor: Maxx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Interessanter Ansatz, Dein Programm...

Der CBUS-Bitbang ist nicht besoners schnell, was wohl ehr an Windows 
bzw. der ftd2xx.dll von FTDI liegt.

Mit "Mprog" muß vorher noch der CBUS0 und CBUS1 Pin in den I/O-Mode 
programmiert werden, sonst gehts nicht.

Autor: Bernhard84 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oh ja, danke. Die Pins müssen natürlich noch in den IO-Mode gesetzt 
werden.

Das Problem mit der Geschwindigkeit kommt vom USB. USB hat nämlich eine 
"Turnaround"-Zeit von 1 ms und es kann maximal in jedem durchgang ein 
Befehl übertragen werden. Ich brauche pro I2C-Takt 3 Befehle (Datenbit 
setzen, clock high, clock low).
Somit kommt man hiermit maximal auf einen Takt von 333 Hz. Das ganze 
kann dann durch das Betriebsystem und den Treiber usw. noch beliebig 
ausgebremst werden. und deshalb ist es so langsam.

Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Bernhard,

schau Dir mal den Thread Beitrag "mehr Speed in FT245 BitBang" an; 
gleiche Problemstellung, geringe Speed am Bus.
Schneller wurde es, als ich alle Sende-Befehle in einem Rutsch gesendet 
hatte. Mit meiner Ansteuerung über VB6 könnte ich damit einen ADS7828 
(12Bit ADC) komplett initialisieren und auslesen in ca. 100msek. Zwar 
noch immer nicht das Geschwindigkeitswunder, aber deutlich schneller...



Gerd

Autor: Bernhard Mayer (bernhard84)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Gerd

Das funktioniert bei mir nicht, da ich den CBUS-Bit-Bang-Mode verwende. 
Dabei behalten die UART-Pins ihre eigentliche funktion, d.h. 
gleichzeitig ist das senden über den UART auch noch möglich. Dafür 
erlauben die verbliebenen 4 IO-Pins nur sehr einfache IO-Aufgaben ohne 
eigenen Takt.

Deshalb kann deine Methode bei mir nicht funktionieren.

Bernhard

Autor: Bernhard Mayer (bernhard84)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe jetzt noch ein kleines Blockschaltbild nachgereicht. Daraus 
dürfte eigentlich klar werden, was wo wie angeschlossen werden muss.

Der FT232R benötigt natürlich noch die weitere zusätzliche Beschaltung, 
die zu seiner Funktion notwendig ist. Diese kann aus seinem Datenblatt 
entnommen werden.

Bernhard

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.