Datum: 10.06.2008 15:05
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
Datum: 14.06.2008 14:31
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.
Datum: 16.06.2008 09:28
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.
Datum: 16.06.2008 12:30
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
Datum: 19.06.2008 08:49
@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
Datum: 09.10.2008 15:04
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 Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
- Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
- Aussagekräftigen Betreff wählen
- Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
- Groß- und Kleinschreibung verwenden
- Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
- JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
- Schaltpläne, Screenshots usw. als PNG oder GIF anhängen
Formatierung (mehr Informationen...)
- [c]C-Code[/c]
- [avrasm]AVR-Assembler-Code[/avrasm]
- [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
- [math]Formel in LaTeX-Syntax[/math]
- [[Titel]] - Link zu Artikel
