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
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.
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.
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
@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
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
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.