PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Daten Flash vom BQ3060 über den SMBus beschreiben



KingVita1989
07.07.2013, 14:05
Hallo,

kenn sich einer mit der Struktur die beim schreiben vom Daten Flash
Speicher eingehalten werden muss?

Mein Problem ist das mir das Vorgehen in diesem Beispiel nicht klar ist
(siehe Anhang)

Zunächst die Infos die laut dem Datenblatt in meinem Fall -->
http://www.ti.com/lit/ug/sluu319/sluu319.pdf <-- Seite 90 gebraucht
werden.

- SubClass ID:64
- Number of bytes in the subclass:2
- Variable Offset:0

Jetzt kommt die Reihenfolge wie ich über I2C bzw. SMBus ausgelesen habe:

SlaveAddress Command DataFlashSubClassID LowByte (SubClass ID
64) HighByte
(0x16)W (0x77) (0x40)
(0x00)
Start 0001 0110 ACK 0111 0111 ACK 0100 0000 ACK
0000 0000 Stop

SlaveAdress Command DataFlashSubClassPage1..8
SlaveAdress LowByte HighByte
(0x16) W (0x78) (0x17) R
(0x0A) (0x02)
Start 0001 0110 ACK 0111 1000 ACK Start 0001 0111
ACK 0000 1010 0000 0010 Stop

daraus sehe ich das im Register Cfg A im Low Byte:
TEMP0
ZVCHG1

und im High Byte
CC1 gesetzt sind was auch mit den dafault werten übereinstimmt bis auf
ZVCHG1. (siehe seite 143)


Wie beschreibe ich aber jetzt den Flash Speicher richtig? Da ich z.B die
Zellenanzahl auf 2 reduzieren muss...

KingVita1989
09.07.2013, 08:59
Hat keiner eine Idee?

Kann einer sich bitte das Beispiel auf seite 90 http://www.ti.com/lit/ug/sluu319/sluu319.pdf anschauen ich kann es nicht ganz nachvollziehen.


Vielen Dank!

KingVita1989
09.07.2013, 22:44
Hallo,

hier ist meine Funktion mit der in den daten flash speicher versuche auszulesen:

void ReadBalancer (void)



{

//unsigned int WertHighByteb,WertLowByteb,WertGesamtb ;



smb_start_wait(AdresseSlave_1+SMB_WRITE);

smb_write(0x77);

smb_write(0x40);

smb_write(0x00);

smb_stop();



_delay_us(100);



smb_start_wait(AdresseSlave_1+SMB_WRITE);

smb_write (0x78);

smb_rep_start(AdresseSlave_1+SMB_READ);

smb_readAck(); // number of bytes receiving from slave



smb_readAck();

smb_readAck();

smb_readAck();

smb_readAck();

smb_readAck();

smb_readAck();

smb_readAck();

smb_readAck();

smb_readAck();

smb_readNak();

smb_stop();







}


ich bekomme auch 10 bytes vom slave zurück aber es steht nicht das drinne was ich erwarte.

Ist die Struktur so richtig bzw. wo ist mein Fehler?


Bin für jede Hilfe sehr dankbar!!!