Hallo Zusammen!
Das Folgende bezieht sich auf die API unter Linux mittels /dev/usb/iowarriorX (ohne iowkit).
Via read()/write() müssen immer 2-Byte Häppchen gelesen/geschrieben werden. Das steht auch so in der Dokumentation. Was ich allerdings dort nicht gefunden habe, ist eine Beschreibung der Semantik. Werden denn alle beiden Bytes per i2c gesendet/gelesen? Wenn dem so ist: in welcher Reihenfolge, und was passiert wenn der Slave nur ein Byte erwartet?
Ich habe bei I2C gelesen, dass zuerst die Adresse des Slaves auf den Bus gelegt werden muss (ich rufe also write() mit einem der beiden Bytes als Slave-Adresse gesetzt). Sofern ein Slave sich angesprochen fühlt, muss dieser mit einem ACK antwortet. Wie finde ich heraus, dass ein solches ACK gesendet wurde?
Vielleicht habe ich etwas Grundsätzliches in der Doku übersehen, dann bin ich auf jeden Verweis auf diese sehr dankbar!
I2C Kommunikation via USB Dongle - grundlegende Fragen
Moderator: Guido Körber
-
- Site Admin
- Posts: 2856
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
Re: I2C Kommunikation via USB Dongle - grundlegende Fragen
IO-Warrior Datenblatt.
Zwei Bytes ist das Simple IO Interface des IOW24.
Zwei Bytes ist das Simple IO Interface des IOW24.
- Christoph Jung
- Posts: 670
- Joined: Sun Oct 08, 2006 3:43 pm
- Location: Germany / Berlin
- Contact:
Re: I2C Kommunikation via USB Dongle - grundlegende Fragen
Beim IO-Warrior24 muss im ersten byte die Report-ID stehen, im zweiten dann Start/Stop und die Anzahl und im dritten sollte die Adresse des I2C-Slaves stehen. Danach kommen dann die Daten in der Anzahl, die voher angegeben wurden. Aber nicht vergessen den I2C zu aktivieren.
Das ist alles im Datenblatt zum IO-Warrior zu finden. Aber warum wird denn nicht die API genutzt?
Das ist alles im Datenblatt zum IO-Warrior zu finden. Aber warum wird denn nicht die API genutzt?
Re: I2C Kommunikation via USB Dongle - grundlegende Fragen
Danke für die Antworten!
Kurz zur Historie oder was ich eigentlich erreichen wollte: Ich habe ein Stück Software, welches unter Linux über die normalen I2C-Header (i2c.h, ...) eine Hardware ansteuert.
Für eine Entwicklungsumgebung an einem Notebook, das keinen so einfachen Zugang zum I2C-Bus ermöglicht, habe ich nach einer "I2C-Adapter-Lösung" gesucht.
Die Hoffnung war also, die bestehende Software nicht anpassen oder ggf. nur einen kleinen Zwischenlayer schreiben müssen. Letzteres geht natürlich, doch nur mit erheblichem Aufwand.
Ich habe mittlerweile also verstanden, dass der IOWarrior mehr eine rohe Ansteuerung ermöglicht und weniger das macht, was ich gesucht habe.
Daher: Sorry wegen den möglicherweise etwas ungerichteten Fragen.
Falls Jemand noch einen Tipp hat, gerne auch auch auf andere Hardware-Lösungen, die meinen Anforderungen näher kommt - immer her damit. :)
Kurz zur Historie oder was ich eigentlich erreichen wollte: Ich habe ein Stück Software, welches unter Linux über die normalen I2C-Header (i2c.h, ...) eine Hardware ansteuert.
Für eine Entwicklungsumgebung an einem Notebook, das keinen so einfachen Zugang zum I2C-Bus ermöglicht, habe ich nach einer "I2C-Adapter-Lösung" gesucht.
Die Hoffnung war also, die bestehende Software nicht anpassen oder ggf. nur einen kleinen Zwischenlayer schreiben müssen. Letzteres geht natürlich, doch nur mit erheblichem Aufwand.
Ich habe mittlerweile also verstanden, dass der IOWarrior mehr eine rohe Ansteuerung ermöglicht und weniger das macht, was ich gesucht habe.
Daher: Sorry wegen den möglicherweise etwas ungerichteten Fragen.
Falls Jemand noch einen Tipp hat, gerne auch auch auf andere Hardware-Lösungen, die meinen Anforderungen näher kommt - immer her damit. :)
- Christoph Jung
- Posts: 670
- Joined: Sun Oct 08, 2006 3:43 pm
- Location: Germany / Berlin
- Contact:
Re: I2C Kommunikation via USB Dongle - grundlegende Fragen
Was genau soll den gemacht werden, bzw. wird denn gesucht? Die genannten Anforderungen sind ehrlich gesagt sehr mager ausgeführt.
Und ohne mehr Infos kann man nicht wirklich helfen.
Und ohne mehr Infos kann man nicht wirklich helfen.
Re: I2C Kommunikation via USB Dongle - grundlegende Fragen
Meines Wissens hängen sich I2C-Geräte in Linux unter /dev/i2c ein, man kann die Linux-Header i2c.h und i2c-dev.h verwenden um die I2C-Geräte anzusprechen.
Für einen Rechner, der keinen einfachen Zugang zum I2C-Bus ermöglicht, suche ich nach einem (USB-)Adapter.
In Bezug auf den IOWarrior I2C hatte ich daher gehofft, dass ich den gleichen Code, den ich auf einem Embedded Board verwende, mit möglichst geringem Aufwand wiederverwenden kann.
Für einen Rechner, der keinen einfachen Zugang zum I2C-Bus ermöglicht, suche ich nach einem (USB-)Adapter.
In Bezug auf den IOWarrior I2C hatte ich daher gehofft, dass ich den gleichen Code, den ich auf einem Embedded Board verwende, mit möglichst geringem Aufwand wiederverwenden kann.
- Christoph Jung
- Posts: 670
- Joined: Sun Oct 08, 2006 3:43 pm
- Location: Germany / Berlin
- Contact:
Re: I2C Kommunikation via USB Dongle - grundlegende Fragen
Und wie werden die I2C-Module aktuell angeschlossen? Auch über einen Adapter oder direkt über ein paar IO-Pins vom Board?
Re: I2C Kommunikation via USB Dongle - grundlegende Fragen
Aktuell wird ein proprietäres I2C-Modul direkt an den Extension Port eines Freescale i.MX6 angebunden.
Die mitgelieferte Software (Source ist vorhanden) läuft unter Linux und benutzt die besagten I2C-Header.
Mit Datenblatt ist dieses hier http://www.codemercs.com/uploads/tx_sbd ... eet_01.pdf gemeint?
Danke!
Die mitgelieferte Software (Source ist vorhanden) läuft unter Linux und benutzt die besagten I2C-Header.
Mit Datenblatt ist dieses hier http://www.codemercs.com/uploads/tx_sbd ... eet_01.pdf gemeint?
Danke!
- Christoph Jung
- Posts: 670
- Joined: Sun Oct 08, 2006 3:43 pm
- Location: Germany / Berlin
- Contact:
Re: I2C Kommunikation via USB Dongle - grundlegende Fragen
Ja das ist das Datenblatt zum IO-Warrior24 und IO-Warrior40.
Ist das so etwas wie ein Raspberry PI?
Denn wenn ja, dann wird man um eine Umstellung der Software nicht rumkommen. Denn ich nehme mal an, dass dieser Port direkt auf dem Freescale-Board sitzt (oder welcher Hersteller auch immer).
Der IO-Warrior wird über den USB angesteuert und mit Daten gefüttert. Da ist dann halt eine neue Software auf Linux-Seite nötig. Allerdings haben wir für Linux eine API, die das Ganze vereinfacht.
Ist das so etwas wie ein Raspberry PI?
Denn wenn ja, dann wird man um eine Umstellung der Software nicht rumkommen. Denn ich nehme mal an, dass dieser Port direkt auf dem Freescale-Board sitzt (oder welcher Hersteller auch immer).
Der IO-Warrior wird über den USB angesteuert und mit Daten gefüttert. Da ist dann halt eine neue Software auf Linux-Seite nötig. Allerdings haben wir für Linux eine API, die das Ganze vereinfacht.