Forum: PC-Programmierung I2C-Behle für den Raspberry


von RPi-Bastler (Gast)


Lesenswert?

Hallo,
ich möchte mit dem RPi (Raspbian) einen I2C-Chip ansteuern.

Es existiert ein Arduino-Code für diesen Chip.
1
    Wire.beginTransmission(SlaveAddr);
2
    Wire.write(Op_Code);
3
  
4
    Wire.write(RegisterAddr);
5
    Wire.write((unsigned char)(Data_Low));
6
    Wire.write((unsigned char)(Data_High));
7
8
    Wire.endTransmission();

Dabei wird zwischen Slave-Adresse und Register noch ein "Op-Code" 
reingeschoben.
Die bekannten IO-Libs vom Raspberry (pigpiod, wiringPI) können nur 
komplette Standard-I2C-Messages absetzen.

Was kann man da machen?

von Gutty (Gast)


Lesenswert?

Das Rateteam des µCNets steht Ihnen gleich zur Verfügung.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Sourcen von wiringPi ansehen und anpassen ist keine Option?

von RPi-Bastler (Gast)


Lesenswert?

Ich probierte aus, mit einem Standard-I2C-Sendebefehl den Op-Code als 
Register-Adresse zu verwenden, und die Register-Adresse als 1. Daten 
byte.

Wenn man den Arduino-Code anschaut,
Wire.write(Op_Code);
Wire.write(RegisterAddr);
Wire.write((unsigned char)(Data_Low));

dann müsste man mit obigen Setting die gleiche Byte-Reihenfolge erzeugen 
können. Es hat aber nicht funktioniert.


>Sourcen von wiringPi ansehen und anpassen ist keine Option?

Das ist definitiv eine (arbeitsintensive) Option, wenn sonst keine 
anderen Möglichkeiten mehr greifen.
Ein einfacher Hack ist mir meistens lieber.

von Wolfgang (Gast)


Lesenswert?

RPi-Bastler schrieb:
> Es hat aber nicht funktioniert.

"Hat aber nicht funktioniert" ist als Fehlerbeschreibung nur sehr 
bedingt hilfreich?

Hat der Raspberry Pi nicht die richtigen Signale auf dem Bus generiert, 
hat der Slave sich nicht angesprochen gefühlt (Ack fehlt) oder hat der 
Slave nicht wie erwartet reagiert?

von RPi-Bastler (Gast)


Lesenswert?

> hat der Slave nicht wie erwartet reagiert?

Jep.

Gerade schaue im mir den wiringPI-Source Code an:
https://github.com/WiringPi/WiringPi/blob/master/wiringPi/wiringPiI2C.c

Die machen das mit der ioctl()-Routine.
Das erscheint mir ein gangbarer Weg.
Andere Vorschläge sind immer willkommen.

von RPi-Bastler (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe die I2C-Ansteuerung vom Datenblatt angehängt.
"Op-Code" im Zusammenhang mit I2C sagt mir nichts und finde im Internet 
(Google) nichts.
Kennt sich jemand (I2C-Profi) damit aus?

von MWS (Gast)


Lesenswert?

Ich plädiere dafür Threads zu sperren, in denen der TE es aus welchen 
Motiven auch immer, sei es Dummheit oder Arroganz, nach dem eigenen 
dritten Post immer noch nicht geschafft hat, so ausführlich zu 
informieren, dass potentielle Helfer auch helfen können.

Einfach weg mit dem Mist, das kann nicht so wichtig sein, wenn's schon 
der TE erkennbar nicht für ausreichend wichtig betrachtet.

Beitrag #5850699 wurde vom Autor gelöscht.
von Joachim B. (jar)


Lesenswert?

RPi-Bastler schrieb:
> Ich habe die I2C-Ansteuerung vom Datenblatt angehängt.
> "Op-Code" im Zusammenhang mit I2C sagt mir nichts und finde im Internet
> (Google) nichts.
> Kennt sich jemand (I2C-Profi) damit aus?

echt witzig, was hat I2C-Profi damit zu tun?

Der kann auch nicht deinen immer noch unbekannten Chip raten der den 
Op-Code hat.
Man könnte ja im Datenblatt nachsehen wenn es lesbar wäre und nicht nur 
eine unbedeutene Seite!

MWS schrieb:
> Ich plädiere dafür Threads zu sperren, in denen der TE es aus welchen
> Motiven auch immer, sei es Dummheit oder Arroganz, nach dem eigenen
> dritten Post immer noch nicht geschafft hat, so ausführlich zu
> informieren, dass potentielle Helfer auch helfen können.

dafür

von Gutty (Gast)


Lesenswert?

Muss mich bei Ihnen für die magere Performance des Rateteams 
entschuldigen. Schauen Sie doch morgen wieder rein. Da haben Sie 
bestimmt mehr Glückt. Und immer daran denken: so wenig wie nur irgend 
möglich preisgeben. Die Rater des µCNets mögen das.

Beitrag #5851837 wurde von einem Moderator gelöscht.
von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Nickwechsel innerhalb eines Threads sind nicht erlaubt, siehe 
Hilfe:Forum Nutzungsbedingungen.

Zum anderen: Warum weißt Du als TO nicht, was das für ein I2C-IC ist, 
hast aber eine Arduino-Lib dafür?

: Bearbeitet durch Moderator
von PittyJ (Gast)


Lesenswert?

Damit habe ich gerade heute auf dem Raspi einen I2C Sensor angesprochen.

https://www.kernel.org/doc/Documentation/i2c/dev-interface

Und das geht auf jedem anderen Linuxgerät auch.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Interessante Quizfrage
Demnach hat das IC die Adresse 0111_011x, das x bestimmt read/write.
Also 0x76/0x77 in Hexdarstellung

https://i2cdevices.org/addresses/0x76

Die Datenblätter sehen alle anders aus als der obige Auszug, aber der 
Schwerpunkt liegt bei Drucksensoren.

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
Noch kein Account? Hier anmelden.