SMBus lesen?

rage
Benutzer
Avatar
Gender: n/a
Age: 64
Homepage: processanalytik.de
Posts: 235
Registered: 02 / 2007
Subject:

SMBus lesen?

 · 
Posted: 26.01.2022 - 14:25  ·  #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
Gender:
Location: Donauwörth
Age: 70
Posts: 250
Registered: 11 / 2009
Subject:

Re: SMBus lesen?

 · 
Posted: 26.01.2022 - 17:03  ·  #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
Gender:
Location: Belgrade, Serbia
Age: 53
Homepage: rs.linkedin.com/in…
Posts: 653
Registered: 07 / 2002
Subject:

Re: SMBus lesen?

 · 
Posted: 28.01.2022 - 09:21  ·  #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
Gender: n/a
Age: 64
Homepage: processanalytik.de
Posts: 235
Registered: 02 / 2007
Subject:

Re: SMBus lesen?

 · 
Posted: 28.01.2022 - 12:50  ·  #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
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 10 · Cache Hits: 14   78   92 · Page-Gen-Time: 0.016092s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI