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...
Hat niemand eine Idee? Jede sinnvolle Info ist willkommen :-)
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.
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.
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?
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.
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...
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.
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.
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!
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?)
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!
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.