I2C - 16bit Adresse in Python LESEN

Gast #6010373
Hallo,

ich habe einen Chip, der das folgende I2C Lese Regime braucht 
(Standard).

START -   DEV_ADR+W - ACK - REG_ADR[15:8] - ACK REG_ADR[7:0] - ACK -
RESTART - DEV_ADR+R - ACK - DATA [15:] - ACK - DATA[7:0] - ACK - STOP

Ich habe es in Python versucht und bekomme es nicht hin, die 16bit I2C 
Register Adresse LESEND zu verwenden.

Schreiben geht
sh:
i2cset -y -f 0 0x12 0x12 0x34 0xAB 0xCD i
Python:
bus.write_i2c_block_data(0x12, 0x12, [0x34, 0xAB, 0xCD])

Das Nimmt der Chip auch an.

Aber das LESEN bekomme ich nicht implementiert.

Hat jemand von euch einen solchen Fall schon mal getestet?
Google gibt ein paar Bsp, aber immer ist nach 8bit Register Ende.

Hat jemand einen Hinweis, wie man das umsetzen kann?
Ich arbeite auf einem Raspberry...

Vielen Dank!
Gast
>RESTART - DEV_ADR+R - ACK - DATA [15:] - ACK - DATA[7:0] - ACK - STOP

Das letzte zu lesende Bte muss mit einem NACK gesendet werden:

RESTART - DEV_ADR+R - ACK - DATA [15:] - ACK - DATA[7:0] - NACK - STOP

sonst erwartet der Chip dass du noch mehr Bytes lesen willst.
Gast
>Das letzte zu lesende Bte muss mit einem NACK gesendet werden:

'y' Taste kaputt;) Und das Byte muss natürlich "gelesen" und mit NACK 
quittiert werden.
Gast
Hallo,

auf der gefühlten Seite 36 in Google in irgendeinem git im 10. 
Unterornder habe ich einen Hinweis gefunden und konnte nun zumindest in 
der Konsole lesen:

i2cset -y -f 0 0x12 0x12 0x34 b
i2cget -y -f 0 0x12 0x12 w

Ich schreibe also erstmal nur die Adresse und lese dann von 
Reg_addr[15:8].
Da bekomme ich zwar folgende Ausgabe:
0x[7:0][15:8]

Die beiden Byte sind zwar vertauscht, aber immerhin komme ich erstmal so 
an die Daten.

Fühlt sich ein wenig komisch an, es so zu machen, aber solange es zum 
Ziel führt...

Danke an Alle!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.