Forum: Mikrocontroller und Digitale Elektronik Hilfe! Lademanagement IC will nicht Laden


von AOYUE (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Mikrocontroller.net Community,

ich habe in Problem mit einem Charger IC BQ24745 und zwar versuche ich 
dem IC über den SMBus den Ladestrom,Ladespannung und den max. 
Eingangsstrom zu übergeben damit die Ladung starten kann.


Jetzt ist es so das ich ACK vom Slave bekomme aber es fängt einfach 
nicht an zuladen welches ich über die MOSFETs (Q3 & Q4 keine Spannung am 
Gate ) überprüfe die schaltet er einfach nicht durch (habe die standard 
Schaltung aus dem Datenblatt genommen jedoch ist
bei mir VDDSMB auf 3,3V) --> 
http://www.ti.com/lit/ds/symlink/bq24745.pdf.


Habe mal die Messung vom Oszi angehangen darauf sieht man,dass kurz vor 
dem ACK immer eine komische Flanke auftaucht. Was kann das sein? 
Ansonsten sieht es gut aus mit dem SMBus(ist ja fast I2C) Protokoll oder 
könnt Ihr da einen Fehler entdecken.

Komme einfach nicht weiter bin mir aber sicher das die Software soweit 
passen sollte. Vllt doch ein Hardwarefehler...

von Chris (Gast)


Lesenswert?

Hat niemand eine Idee?

Jede sinnvolle Info ist willkommen :-)

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Kann dein Scope keine besseren Bilder bringen? Daß vor ACK eine 
Ladekurve auftaucht, ist normal! Der Slave brauch ja eine bestimmte Zeit 
bis er den Bus low-zieht.
Ist das dein erstes i2c-Projekt? Dann hänge mal einen einfacheren 
Baustein an und teste erstmal den, z.B. EEPROM.
smBus hat auch einen time-out, der eventuell zuschlägt.

von Chris (Gast)


Lesenswert?

Abdul K. schrieb:
> Kann dein Scope keine besseren Bilder bringen? Daß vor ACK eine
> Ladekurve auftaucht, ist normal! Der Slave brauch ja eine bestimmte Zeit
> bis er den Bus low-zieht.
> Ist das dein erstes i2c-Projekt? Dann hänge mal einen einfacheren
> Baustein an und teste erstmal den, z.B. EEPROM.
> smBus hat auch einen time-out, der eventuell zuschlägt.

okay hab ich mir schon fast gedacht das es normal ist vor dem ACK.


laut Datenblatt kommt ein Time-out erst nach min 22ms zustande, davon 
bin ich weit entfernt.


Komisch ist doch irgendwie das der Slave alles bestätigt aber das IC 
will einfach nicht arbeiten.

ein EEPROM mit I2C habe ich leider nicht zur Hand.

von Chris (Gast)



Lesenswert?

hier sind noch mal die Oszi Bilder ich bin der Meinung das es mit dem 
Schreiben klappen sollte.

Schema ist genau wie im Datenblatte Seite 21 
-->http://www.ti.com/lit/ds/symlink/bq24745.pdf


Sieht einer einen Fehler oder hat einer eine Idee Warum der Charger 
nicht "anspringt" ?



Eine Frage stell sich mir noch bei der Hardware ist der uC also der 
Master mit 5 V versorgt das Charger IC hat aber 3,3V als 
Spannungsversorgung. Ist das problematisch?

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Chris schrieb:
> hier sind noch mal die Oszi Bilder ich bin der Meinung das es mit dem
> Schreiben klappen sollte.
>
> Schema ist genau wie im Datenblatte Seite 21
> -->http://www.ti.com/lit/ds/symlink/bq24745.pdf
>
>
> Sieht einer einen Fehler oder hat einer eine Idee Warum der Charger
> nicht "anspringt" ?
>

Hast du Register zurückgelesen und der Inhalt entspricht dem DB bzw. was 
du reinschriebest?


>
>
> Eine Frage stell sich mir noch bei der Hardware ist der uC also der
> Master mit 5 V versorgt das Charger IC hat aber 3,3V als
> Spannungsversorgung. Ist das problematisch?

Eigentlich bei diesem Bus nicht, aber ich kenne das IC nicht.

von Chris (Gast)


Lesenswert?

Abdul K. schrieb:
> Chris schrieb:
>> hier sind noch mal die Oszi Bilder ich bin der Meinung das es mit dem
>> Schreiben klappen sollte.
>>
>> Schema ist genau wie im Datenblatte Seite 21
>> -->http://www.ti.com/lit/ds/symlink/bq24745.pdf
>>
>>
>> Sieht einer einen Fehler oder hat einer eine Idee Warum der Charger
>> nicht "anspringt" ?
>>
>
> Hast du Register zurückgelesen und der Inhalt entspricht dem DB bzw. was
> du reinschriebest?
>
>>
>>
>> Eine Frage stell sich mir noch bei der Hardware ist der uC also der
>> Master mit 5 V versorgt das Charger IC hat aber 3,3V als
>> Spannungsversorgung. Ist das problematisch?
>
> Eigentlich bei diesem Bus nicht, aber ich kenne das IC nicht.

das Auslesen könnte ich machen aber ich habe keine Ausgabe wie z.b ein 
Display nur eine Duo LED.





Wie ist es denn bei I2C-Bus ist es dem Egal das der Master mit 5V 
betrieben wird und der Slave mit 3,3V? Meiner Meinung nach ja da es ja 
low aktiv ist ...




Kann sich bitte einer mal das Oszillogramm anschauen wenn ich mir schon 
so viel Mühe mache ;-)

ich bin es mehrmals durchgegangen und kann keinen Fehler entdecken...

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Das ist einfach die falsche Methodik! Mach dir eine Debug-Schnittstelle 
in Form einer seriellen Ausgabe. Dann les die Register aus, nachdem du 
was reinschriebst. Sorge dafür, daß nur dieses eine IC am Bus hängt 
neben dem Master.

Was die Buslevel angeht: Schau in beide Datenblätter. Da findest du 
irgendwo die Threshold der Eingänge. Wird wohl so bei echtem i2c bei 
1,2V liegen.
Vielleicht hat dein Master gar keine echten i2c-Level und seine 
Threshold ist bei 2,5V wie bei CMOS üblich für 5V? Selbst dann ginge es.

Die Diagramme sehen ok aus, aber ich kontrolliere nicht jedes Bit. Im 
Allgemeinen rufe ich einfach meine uralte i2c-Routine auf und der Bus 
läuft.

Vielleicht will der Ladecontroller auch noch irgendeine Freigabe?? Also 
DB durchforsten.

von Chris (Gast)


Angehängte Dateien:

Lesenswert?

Abdul K. schrieb:
> Das ist einfach die falsche Methodik! Mach dir eine
> Debug-Schnittstelle
> in Form einer seriellen Ausgabe. Dann les die Register aus, nachdem du
> was reinschriebst. Sorge dafür, daß nur dieses eine IC am Bus hängt
> neben dem Master.
>
> Was die Buslevel angeht: Schau in beide Datenblätter. Da findest du
> irgendwo die Threshold der Eingänge. Wird wohl so bei echtem i2c bei
> 1,2V liegen.
> Vielleicht hat dein Master gar keine echten i2c-Level und seine
> Threshold ist bei 2,5V wie bei CMOS üblich für 5V? Selbst dann ginge es.
>
> Die Diagramme sehen ok aus, aber ich kontrolliere nicht jedes Bit. Im
> Allgemeinen rufe ich einfach meine uralte i2c-Routine auf und der Bus
> läuft.
>
Das würde ich mir auch wünschen aber irgendwo ist noch ein bock drinne 
und wie immer ist es die Frage Hardware oder Software.

> Vielleicht will der Ladecontroller auch noch irgendeine Freigabe?? Also
> DB durchforsten.
Folgende Bedingungen müssen erfüllt sein damit der BQ24745 anfängt zu 
Laden:

1.DCIN > 4,5 V & VDDSMB >2,5 V (erfüllt gemessen)
2. ACIN > 2,4V (erfüllt gemessen)
3. Akkuspannung > VDCIN - VFB (da bin ich mir nicht sicher da ich nicht 
weiß was mit VFB gemeint ist??)
4.200 us delay ist abgelaufen nachdem ACIN>2,4 V ist (erfüllt)
5.SMBus ChargeVoltage,ChargeCurrent und InputCurrent DAC Register sind 
richtig gesetzt ( weiß ich nicht genau aber das was ich mit dem Oszi 
messe Siehe Anhänge oben müsste passen)
6. CE ist High (erfüllt gemessen)
7. 2 ms sind vergangen nach dem CE High geworden ist (erfüllt)
8. VDDP & VREF sind passend (erfüllt gemessen)
9. kein Thermische Abschaltung (erfüllt da die Temperatur nicht zu hoch 
ist)

Habe jetzt mal versucht den wert den ich in das Charger IC rein schreibe 
zu lesen dann zu vergleichen und wenn der Wert passt eine LED 
einschalten.

Es sieht aber nicht gut aus nachdem senden der Slave Adresse zum zweiten 
Mal bekomme ich keinen ACK (Was mir noch aufgefallen ist warum ändert 
sich die Slave-Adresse im Datenblatt auf 0x14 davor war sie noch 0x12 
ist das ein Fehler im Datenblatt?)



Bin für jeden Rat dankbar sitze schon seit 3 Tagen bei der Sache und 
komme nicht weiter.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Wieso hast du denn nur eine LED und willst das auch nicht ändern?
VFB wird wohl Voltage Feedback meinen. Ich tippe auf Akkuspannung. 
Stimmt der Spannungsteiler?
Ich kann dir da nicht weiterhelfen, denn ich kenne das IC nicht, müßte 
also das DB selber durchackern. Und das willst du ja sicher nicht 
bezahlen.
Was hast du für einen Controller/-board?
Wo wohnst du? Dann findest du vielleicht jemanden aus der Nähe, der sich 
neben dich setzt. Hilft manchmal ungemein, vor allem bei zunehmender 
Betriebsblindheit/Verzweifelung.
In jedem alten SAT-Receiver ist ein EEPROM. Oft auch i2c. Einfach 
parallel ranklemmen und damit deinen i2c-Code testen. Und dann erst an 
den dicken ärgerlichen Brocken!

Slave-Adresse:
Hm. Häng das IC ab, dann muß ein time-out kommen. Zweimal Slave-Adresse 
hintereinander ist unzulässig bei i2c! Normal ist: Start, Slave-Adresse, 
Registeradresse, Werte, Stop. Beachte auch, daß die Streams für Lesen 
und Schreiben unterschiedlich bei i2c aussehen!

von Chris (Gast)


Angehängte Dateien:

Lesenswert?

Abdul K. schrieb:
> Wieso hast du denn nur eine LED und willst das auch nicht ändern?

weil die Hardware schon fertig ist und ich da relativ wenig ändern kann 
und als ausgabe habe ich nur eine Duo LED zur verfügung.

> VFB wird wohl Voltage Feedback meinen. Ich tippe auf Akkuspannung.
> Stimmt der Spannungsteiler?

welche Spannungsteiler meinst du ? da wird einfach die Spannung am Akku 
abgegriffen.

> Ich kann dir da nicht weiterhelfen, denn ich kenne das IC nicht, müßte
> also das DB selber durchackern. Und das willst du ja sicher nicht
> bezahlen.
aber ein Blick kostet doch nichts würdest mir sehr weiter helfen ;-)

> Was hast du für einen Controller/-board?

Controller ist ein AVR Mega 88
> Wo wohnst du? Dann findest du vielleicht jemanden aus der Nähe, der sich
> neben dich setzt. Hilft manchmal ungemein, vor allem bei zunehmender
> Betriebsblindheit/Verzweifelung.
> In jedem alten SAT-Receiver ist ein EEPROM. Oft auch i2c. Einfach
> parallel ranklemmen und damit deinen i2c-Code testen. Und dann erst an
> den dicken ärgerlichen Brocken!

auch wenn ich ein EEProm finden sollte müsste ich mich wieder mit dem DB 
beschäftigen sprich Slave Adresse raus suchen etc. etc.

> Slave-Adresse:
> Hm. Häng das IC ab, dann muß ein time-out kommen. Zweimal Slave-Adresse
> hintereinander ist unzulässig bei i2c! Normal ist: Start, Slave-Adresse,
> Registeradresse, Werte, Stop. Beachte auch, daß die Streams für Lesen
> und Schreiben unterschiedlich bei i2c aussehen!

guck dir bitte mal die zwei Zustandsdiagramme an da habe ich es markiert 
was ich meine mit der Änderung dr Slave- Adresse beim lesen ( aber 
eigentlich muss ich dem IC nur die Werte für ChargeCurrent, 
ChargeSpannung und InputCurrent übergeben dann sollte das "Ding schon 
laden oder habe ich mich da beim low byte bzw. high byte vertan?)

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Na wenn dir das Raussuchen der Adresse eines EEPROMs schon zuviel ist, 
dann .... du verstehst. Und wieso Suchen? Man macht einen Bus-Scan und 
der erste ACK ist dann richtig. Bliebe bei einem EEPROM nur noch die 
Frage, ob 1-Byte oder 2-Byte Adressierung der Speicherzellen. So schwer?


Bei der Adressierung stimmt irgendwas nicht. Die Slave-Adresse besteht 
aus konstant 7Bit (die virtuell nach links geshiftet werden) und das 
dann übrigbleibende niedrigste (freie also) Bit dient dazu, dem Slave 
den Status Schreiben oder Lesen mitzuteilen. Aus deinen Schreiben 0x12 
muß dann also Lesen 0x13 werden. Prüfen!

von Chris (Gast)


Lesenswert?

Abdul K. schrieb:
> Na wenn dir das Raussuchen der Adresse eines EEPROMs schon zuviel
> ist,
> dann .... du verstehst. Und wieso Suchen? Man macht einen Bus-Scan und
> der erste ACK ist dann richtig. Bliebe bei einem EEPROM nur noch die
> Frage, ob 1-Byte oder 2-Byte Adressierung der Speicherzellen. So schwer?
>
> Bei der Adressierung stimmt irgendwas nicht. Die Slave-Adresse besteht
> aus konstant 7Bit (die virtuell nach links geshiftet werden) und das
> dann übrigbleibende niedrigste (freie also) Bit dient dazu, dem Slave
> den Status Schreiben oder Lesen mitzuteilen. Aus deinen Schreiben 0x12
> muß dann also Lesen 0x13 werden. Prüfen!

das ist mir klar LSB bit 8 = 0 schreiben als 0x12  und LSB bit 8 = 1 
lesen.


Aber ich möchte ja nur schreiben und ich gehe jetzt mal davon aus das 
meine Programmierung stimmt da ich immer ein ACK bekomme und mich an das 
Write Word Format gehalten habe.


ich gehe jetzt mal von einem Hardwarefehler aus. Kann mir jemand sagen 
ob es ein Problem gibt wenn der Master also uC mit 5V vesorgt wird und 
der Slave also das Lademanagement IC mit 3,3v ? Pull ups nach 3,3 V wert 
jeweils 10 K.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Die Antwort gab ich dir! Laß diese Fragerei und schaue an der richtigen 
Stelle ins DB.

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.