SMBus lesen?

rage
Benutzer
Avatar
Geschlecht: keine Angabe
Alter: 66
Homepage: processanalytik.de
Beiträge: 241
Dabei seit: 02 / 2007
Betreff:

SMBus lesen?

 · 
Gepostet: 26.01.2022 - 14:25 Uhr  ·  #1
Guten Tag,

ich muß einen Smart-Akku auslesen, der Chip darin ist ein BQ78pl116. Leider ist das kein I2C sondern ein SMBus und leider ist das im Angebot zum Akku nicht richtig beschrieben worden, das stand halt I2C. Bei dem Chip wird hinter der Adresse noch ein CMD gesendet
Code

Start Write Adresse ACK Write COMMAND ACK REPEATSTART Read DATA LSB ACK Read DATA MSB ACK Stop

Da die Zeit drängt und bevor ich jetzt mir einen Extra-I2C/SMBus Bitschubser programmiere, frage ich mal, ob das schonmal jemand programmiert hat. Oder ob man aus den bestehenden Soft-I2C Treiber sowas umbauen könnte.

LG Ralf
golf
Benutzer
Avatar
Geschlecht:
Herkunft: Donauwörth
Alter: 72
Beiträge: 266
Dabei seit: 11 / 2009
Betreff:

Re: SMBus lesen?

 · 
Gepostet: 26.01.2022 - 17:03 Uhr  ·  #2
Hallo Ralf,
ich hab mit dem Chip bisher nichts zu tun gehabt.
Aber wenn das hilft, ich habe im Beitrag ' Tiny412 Compilerfehler' so eine SoftI2C-Routine stehen.
Diese könntest Du evtl dazu nach Anpassung für sowas verwenden. Die Delay Werte evtl anpassen.
Ich hab die mal gebraucht für eine 2. I2C Schnittstelle.
golf
Avra
Schreiberling
Avatar
Geschlecht:
Herkunft: Belgrade, Serbia
Alter: 54
Homepage: rs.linkedin.com/in…
Beiträge: 653
Dabei seit: 07 / 2002
Betreff:

Re: SMBus lesen?

 · 
Gepostet: 28.01.2022 - 09:21 Uhr  ·  #3
First link is an Arduino instructable which uses soft-i2c to access SMB. Pretty close to what you need, disregarding the fact that you have to convert it to Pascal.

https://duckduckgo.com/?q=SMBus+arduino
rage
Benutzer
Avatar
Geschlecht: keine Angabe
Alter: 66
Homepage: processanalytik.de
Beiträge: 241
Dabei seit: 02 / 2007
Betreff:

Re: SMBus lesen?

 · 
Gepostet: 28.01.2022 - 12:50 Uhr  ·  #4
Guten Tag,

danke Golf und thanks Avra.

Das habe ich mir beides auch schon überlegt und für den MMA8451Q ja auch schon gemacht. Meine Hoffnung war eher, das man mit den ja schon vorhandenen Soft-I2C-Routinen auskommen würde, Also I2C-Start(Adresse) senden, danach CMD senden ohne Stop, dann wieder I2C(Repeat)-Start(DevAdr) und die beiden Bytes einlesen I2C-Stop. Ich habe mir das ASM-File ja schon angeschaut, SYSTEM.I2CSTARTB, I2CSENDBYTE, I2CSENDBYTE, SYSTEM.I2CSTARTB, I2CSENDBYTE, SYSTEM.I2CRECVBYTE, SYSTEM.I2CRECVBYTE, SYSTEM.I2CSTOPB. So in etwa, wenn es dafür Aufrufe gäbe, wäre es schon erledigt und vor allem zig mal getestet.

Einen schönen Tag noch
Ralf
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 15 · Cache Hits: 14   77   91 · Page-Gen-Time: 0.032012s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI