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!
>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.
>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.
Schmitti schrieb: > RESTART - DEV_ADR+R - ACK - DATA [15:] - ACK - DATA[7:0] - ACK - STOP bist Du Dir da mit dem "DATA [15:]" sicher? Ich vermute eher daß das "DATA [15:8]" heißen sollte.
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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.