USB zu I2C Bus - Interface

achim S.

Mitglied
16. Jan. 2010
704
13
18
Berlin Biesdorf
Sprachen
  1. ANSI C
Hallo
bin wieder auf der suche nach einem Teil. Es gibt von verschiedenen Herstellern kleine Interface mit einem USB Anschluss und einem Anschluss zum I2C Bus. Die Preisspanne liegt bei ca. 20 Euro bîs zu 500 Euro. Ist mir einfach zu viel Euro. Als Software wird sehr oft HTerm angegeben, z.B. bei ELV. Leider ist diese Software (letzte Version) von 2008. Ist in der heutigen Zeit schon sehr alt.
Kennt jemand was neues dazu?
Wie kann ich diese Software benutzen?
Habe leider Ahnung wie das geht. Gibt es was einfaches dazu?
Oder gibt es was mit WLAN? Programm mit Funktion was ich verstehe?
achim
 
Hallo @achim S.
was hast du denn genau vor? Muss es unbedingt USB sein oder reicht auch ein VCP?
 
Was meinst du mit VCP?
Eigentlich ist gedacht, Daten über den PC einzugeben oder anzuzeigen. Bei HTERM geb ich ja nur irgendwelche Zahlen ein. Schöner ist ein Programm das mir verschiedene Flächen anzeigt und ob ein Teil aus oder an ist. Kenn sowas vom Handy, z.B. schalten von Licht durch antippen vom Display. Vielleicht kann man das ganze in Grösse und Form angeben und vielleicht auch den verkehr mitlesen. Einige gibt es dazu schon.
Habe auch ein Teil für WLAN zu liegen, Typ ???, geht über den Router, bloss wie geht das oder wie progrmiert man es?
achim
 
In wie fern kennst du dich denn mit der GUI Programmierung aus? Also hast du schon mal Programme für den PC geschrieben?

VCP = VirtualComPort = VirtuelleSerielleSchnittstelle.
Die erzeugt dir so ziemlich jeder USB - Seriell Wandler. Ich benutze sehr gerne den CP2120 als solchen.

Eigentlich ist dein Vorhaben relativ simpel. Da du ja anscheinend genau weißt was der Controller tun soll nach Befehl "X", kannst du so eine Art "State Mashine" bauen..
 
Ich benutze sehr gerne den CP2120 als solchen.
Das wäre 'n SPI <--> I²C Wandler. Da kann man natürlich ICs vorsetzen, die von USB (ggf über TTL-UART) auf SPI wandeln. Zum Beispiel auch mit einem AVR.

Gesucht ist aber eigentlich ein USB <--> I²C Wandler, oder hab ich das falsch verstnden? Von FTDI gibts da zB den FT260 oder denFT4222H.
(die über die verfügbare API, zB von dotnet aus anzusprechen traue ich hier allerdings am ehesten @TommyB zu (*Herrausforderungshandschuh-ins Gesicht-Klatsch))

Variante drei wäre ein stinknormaler Standard-USB-TTL-UART-Wandler und dahinter ein kleiner AVR, der von UART auf I²C weiterwandelt.
Oder ein AVR mit USB-Schnittstelle.
 
Das wäre 'n SPI <--> I²C Wandler. Da kann man natürlich ICs vorsetzen, die von USB (ggf über TTL-UART) auf SPI wandeln. Zum Beispiel auch mit einem AVR.
Achherje, du hast natürlich Recht! Ich meinte auch eher den CP2102.

Eigentlich habe ich daran gedacht das er das selber machen wollte?! Naja.. Ist doch eigentlich ganz easy..
Man hat eine GUI ( vermutlich möchte er es vom Rechner aus steuern.. ) und mit dieser sendest du die Befehle ( über USB -> TTL Umsetzer ) auf deine CPU.
In deinem "Protokoll" musst du eben I2C Adresse , lesen / schreiben , Register Adresse , Datenbytes.. verankern.
Und im Mikrocontroller kann er das dann eben als I2C umsetzen.
 
Zuletzt bearbeitet:
Mit GUI kenne ich mich garnicht aus. Hatte ein paar Wrfahrungen mit HTERM gemacht und war ziemlich enttäuscht. Für mich ist das recht eigenwillig und kompliziert. Beim HTERM bleibend sehe ich es veraltert an. Die Idee dabei ist für die damalige Zeit passend. Aber für heute ...
Nehmen wir das Beispiel WLAN. Es gibt APPs fürs Handy mit Anzeige von 4 oder 8 Schaltflächen mit Ein und Aus und mehrere Balken zum ziehen. Damit kann man z.B. LEDs Typ WS.. steuern, Entweder ein oder aus oder Helligkeit oder Farbe zu steuern. Das läuft alles unter Terminalprogramme. Nehmen wir ein anderes Beispiel. Von der Firma ELV gibt es kleines Teil mit einem CP (Typ??) drin. Da kann man USB anschliessen und bis zu 3 x I2C. Programmierung geht wieder über HTERM und ist recht eigenwillig. Kann man so ein Teil nicht einfacher anwenden?
Leider passe ich bei der GUI (???) und Handyprogrammierung vollkommen.
Es gibt auch fertige Teile mit Netzwerkanschluss und weiter zum Bus. Da ist wieder das Problem der Programmierung. Von Elektor ist letztes Jahr ein Teil veröffentlicht worden mit dem ESP. Gefällt mir sehr gut, leider wieder das selbe Problem.
Vielleicht könnte mir jemand dabei weiter helfen.
achim
 
HTerm ... Leider ist diese Software (letzte Version) von 2008.
Hterm ist ein bewährtes und beliebtes Terminalprogramm. Es tut genau das, wofür es gemacht ist.
Es sind anscheinend seit zehn Jahren keine Fehler mehr gefunden worden, warum sollte es also eine neuere Version geben?

PuTTY gibt es auch für Windows und Linux. Es gibt sogar eine Version, die man nicht installieren muß.

Aber Du suchst ja wohl kein Terminalprogramm, sondern was ganz anderes...
 
Zuletzt bearbeitet:
Was möchtest du denn jetzt eigentlich genau machen? Das verstehe ich noch nicht so ganz..
Du suchst etwas was dir Daten auf dem I2C Bus ausgibt? Was hast du damit vor? Was willst du steuern? Was soll es können, deine "Hardware" ?
 
Ansonsten..
Wenn du nicht wirklich viel selber machen möchtest, kannst du auch den "ESP32" nehmen. Der hat direkt WLAN und damit kannst du die meisten Sachen erschlagen.
Da gibt es auch eine ziemlich große Community.

Hier mal ein Link..
https://www.elektormagazine.de/news/mein-weg-in-das-iot-21-wlan-netzwerk-mit-dem-esp32-lebenszeichen

Du könntest den ESP32 als Schnittstelle für das WLAN nehmen und dahinter evtl. noch einen ATMEL setzen und damit dann deine anderen Hardware geschichten regeln, falls du es mit dem "ESP32" nicht schaffen solltest..
 
Davon hat er ja bisher noch nichts gesagt. Möglicherweise ist ihm selbst nicht klar, was genau er eigentlich will.
Erstens:
Er sucht nach einem USB zu I²C - Wandler, aber 20..500€ sind ihm zu teuer.
  • Es gibt entsprechende ICs, die genau das tun, ähnlich den populären USB-UART Wandlern.
  • Man kann hinter einen (ggf bereits vorhandenen) USB-UART-Wandler einen AVR klemmen, der den protokollarischen Teil abhandelt, und seinerseits einen irgendwie angebundenen I²C-Wandler ansteuert.
  • Analog dazu kann der AVR dann auch gleich sein eigenes I²C verwenden.
  • PC-seitig kann der AVR natürlich auch selbst mit USB kommunizieren - entweder verfügt er über die nötige Hardware-Schnittstelle, oder die Software muß das erledigen.
Von den Kosten her wäre die letzte Variante wohl am billigsten - allerdings wird mehr als USB 1.? Timingtechnisch nicht machbar sein, und das unterstützen wohl nicht mehr alle aktuellen OS/aktuelle Hardware. Von der Umsetzung her am einfachsten wäre die vorletzte Variante - wenn man die AVR etwas programmieren kann.

Zweitens:
Will er keine übertragenen Bytes sehen, sondern eine graphische Oberfläche, aber er sagt eben nicht, für was konkret. Als ich damals mein STK500Control (-> Ressourcen) angefangen habe, hab ich das Ding auch erstmal via hterm angesteuert, und dann ein entsprechendes VisualBasic-Programm mit GUI implementiert.
Thomas hatte (damals noch arbeitslos, AFAIR) mal für irgendein Digitalmultimeter mit serieller Ausgabe 'ne GUI implementiert, weil ihm die (nicht weiter gepflegte) Originalsoftware aus irgendwelchen Gründen missfiel. (Wobei sich die Hilfe durch das Forum nur auf die Interpretation der Datentelegramme im Reverse Engineering beschränkte).

P.S.: Stand hier nicht schon mal (Forenprojekt oder so) sowas zur Debatte? USB auf serielle Schnittstelle Konverter (SPI/I²C/1wire/whatever, ggf genau so mit einem AVR), dazu ein entsprechendes Protokoll, um beim AVR Tempo usw zu konfigurieren, und das ganze dann PC-seitig in einer entsprechenden GUI verpackt.
Also mich würd's irgendwann mal interessieren - schon allein, um mal etwas mit den OLEDs zu spielen (ohne da jedesmal 'n Controller zu flashen). Wenn die Software ordentlich aufgebaut wird (also die Ansteuerung des Schnittstellen-AVR als Bibliothek oder so), könnte man das auch zum schreiben/lesen von Speicher-ICs, SD-Karten etc verwenden. Oder irgendwelche Sensoren auslesen/loggen...
 
@LotadaC
USB != USB.
Es gibt die VCP, das wäre am einfachsten umsetzbar.
Dann gibt es USB HID. PC-seitig schon komplizierter das umzusetzen, da fast alle Quelltexte die im Netz stehen die einen Zugriff ermöglichen fehlerhaft sind und - wenn überhaupt - nur auf 32 Bit oder 64 Bit Systemen funktionieren. Trotzdem, nahezu unbrauchbar, da pro Datenpaket maximal 8 Bytes (USB 1.1) oder 64 Bytes (USB2). Anzahl der Pakete pro Sekunde war limitiert, ich glaube 2-5 pro Sekunde? Irgendwo in dem Rahmen.
Last but not least: "Normales" USB. Das steht mir noch bevor. PC-seitig befürchte ich ähnliche Probleme wie mit USB HID.
Hin oder her, Controllerseitig sehe ich da für mich den Totpunkt weil USB sehr Komplex ist...

Und ich glaube die Projektidee stammte mal von mir.
Kommunikation jetzt mal weg gelassen wäre die Software beiderseits kein Problem.
 
Hin oder her, Controllerseitig sehe ich da für mich den Totpunkt weil USB sehr Komplex ist...
mehr als kompliziert! So viel Overhead für ein mehr oder weniger "kleines" Projekt..
VCP reicht da voll und ganz.
 
Für I²C auf jeden Fall. SPI wird schon schwieriger. Das COLED befeuer ich mit 2MBit, das schafft ein VCP nicht mehr (auch wenn er vorgibt es zu können). Da muss dann "echtes" USB ran.
Was SD Karten angeht ist aber Vorsicht geboten. Nicht jede SD Karte unterstützt I²C. Bei MMC Karten war das vorgeschrieben, bei SD nur empfohlen. Bin darauf schon reingefallen.
BT wäre im Endeffekt auch nur VCP, nur halt kabellos und in langsam.
WLAN... Die Ersteinrichtung wirklich Kundenfreundlich hin zu bekommen ist so eine Sache für sich...
 
OT:
USB != USB.
Es gibt die VCP, das wäre am einfachsten umsetzbar.
Was bezüglich meinst Du das?
Mir gings erstmal nur um die Datenraten - Soft-USB auf einem AVR kenne ich bisher nur mit USB1.0, zB mein alter AVRisp-Klon auf einem Mega8 - und der wird auf 'nem modernen Rechner (meinetwegen auch wegen dem Betriebssystem) gar nicht erst erkannt (auf dem alten Rechner aber schon).
Mit AVR mit Hardware-USB hab ich mich nicht beschäftigt.

Die meisten USB-(TTL-)UART-Wandler sind VCP, entsprechend einfach ist die Anwendung auf beiden Seiten. Lediglich die Erkennung des jeweiligen Ports...

Wegen USB-I²C (direkt vom PC aus) hatte ich ja auf den FT4222H hingewiesen, und da gibts eben herstellerseitig zumindest für Windows 'ne Library (LibFt4222), und deren erfolgreiche Verwendung würde ich am ehesten Dir, Thomas, zutrauen...

  • This is a middleware library provided to make developing applications for FT4222H easy. The library sits over the D2XX driver and provides a range of APIs that are tuned for SPI and I2C application development. Supports 32 and 64 bit applications.
Natürlich dann mit dem D2XX-Driver...
 
Um die Datenraten hab ich mich nie so gekümmert, USB HID weiß ich nur, da wirds sehr wenig sein.
Und eine lib / dll, ist stark abhängig wie die aufgebaut ist. Ich hatte hier beispielsweise n Chip von TI, da saß ein Entwicklerteam von 3 Leuten ca. 1 Monat dran, nur um den einzubinden. Ich darf mich bald auch mit der libUSB auseinandersetzen. Lange Rede kurz: Da "freue" ich mich schon sehr drauf...
 
Hallo Thomas
schon möglich das es mal von dir angeregt wurde. Falls so sit entschuldige bitte für den Raub. Hatte immer gehofft das es in der heutigen Zeit was passendes gibt. Gerade mit dem Handy wird so viel gemacht. Da wird es einfach Zeit sich mit der Sache zu beschäftigen. Es kann nicht schaden wenn man dem I2C Bus die grosse Welt zeigt. Mit einer Pseudo Anwendung geht es ja. Einfach die Ausgänge von dem oben genannten Board aif einen PCF8574 schalten und man hat 8 Eingänge oder Ausgänge. Ist halt die Sparversion. Was grösseres ist halt komplizierter. Brauchen nur noch einen der sich rantraut.
achim
 
War ja kein Raub, eher eine Wiederbelebung ;)
Ich finde den Thread aber auch nicht mehr, ist schon ewig her.
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)