我在使用單片機(jī)通過smbus與2060通信,沒有使用ev2200.發(fā)現(xiàn)2060無法讀取eeprom中的數(shù)據(jù),按照手冊上說的在發(fā)送一條reset命令后,2060會從eeprom更新寄存器的值.但是我沒有成功.
手冊上寫的是
write 0x4f to 0xff5a
write 0x7d to 0x0000
write 0x7d to 0x0080
這個怎么理解呢,是不是0x4f是命令,而0xff5a是命令參數(shù)呢,否則2060哪有16位的地址阿,請大家指點(diǎn)一下,謝謝
請教2060讀寫EEPROM的問題
全部回復(fù)(9)
正序查看
倒序查看
對,0x4F是命令,而0xff5a是命令參數(shù).
Full Reset讓微控制器重啟,并導(dǎo)入EEPROM 內(nèi)的 Data. 要讀取/寫入,BQ2060 必須是UNSEAL的.
Set EEPROM (no SMBUS) address 0x3F bit6 to 0 to unseal the bq2060.
Then instruct 0x0606 to SMBUS address 0x00(Manufacturer Access) to connect EEPROM bus to SMBUS.
Use a Full Reset to reload the data in EEPROM after writing to EEPROM, to reconfigurate bq2060.
After finish calibration, instruct 0x062B to SMBUS address 0x00(Manufacturer Access) seal bq2060.
Full Reset讓微控制器重啟,并導(dǎo)入EEPROM 內(nèi)的 Data. 要讀取/寫入,BQ2060 必須是UNSEAL的.
Set EEPROM (no SMBUS) address 0x3F bit6 to 0 to unseal the bq2060.
Then instruct 0x0606 to SMBUS address 0x00(Manufacturer Access) to connect EEPROM bus to SMBUS.
Use a Full Reset to reload the data in EEPROM after writing to EEPROM, to reconfigurate bq2060.
After finish calibration, instruct 0x062B to SMBUS address 0x00(Manufacturer Access) seal bq2060.
0
回復(fù)
@dvcom
對,0x4F是命令,而0xff5a是命令參數(shù).FullReset讓微控制器重啟,并導(dǎo)入EEPROM內(nèi)的Data.要讀取/寫入,BQ2060必須是UNSEAL的.SetEEPROM(noSMBUS)address0x3Fbit6to0tounsealthebq2060.Theninstruct0x0606toSMBUSaddress0x00(ManufacturerAccess)toconnectEEPROMbustoSMBUS.UseaFullResettoreloadthedatainEEPROMafterwritingtoEEPROM,toreconfiguratebq2060.Afterfinishcalibration,instruct0x062BtoSMBUSaddress0x00(ManufacturerAccess)sealbq2060.
謝謝dvcom的回復(fù).我現(xiàn)在的問題是發(fā)了0606后,2060對eeprom供電,然后接著發(fā)復(fù)位命令.我再讀取2060寄存器的值發(fā)現(xiàn)沒用從eeprom更新,讀取的數(shù)據(jù)是一個隨機(jī)值,是不是我的復(fù)位命令有錯誤呢?
我發(fā)送的命令格式是
start-0x16-A-0x00-A-0x06-A-0x06-A-stop
start-0x16-A-0x4f-A-0x5a-A-0xff-A-stop
start-0x16-A-0x7d-A-0x00-A-0x00-A-stop
start-0x16-A-0x7d-A-0x80-A-0x00-A-stop
請指點(diǎn)下問題出在哪里,謝謝啦
我發(fā)送的命令格式是
start-0x16-A-0x00-A-0x06-A-0x06-A-stop
start-0x16-A-0x4f-A-0x5a-A-0xff-A-stop
start-0x16-A-0x7d-A-0x00-A-0x00-A-stop
start-0x16-A-0x7d-A-0x80-A-0x00-A-stop
請指點(diǎn)下問題出在哪里,謝謝啦
0
回復(fù)
@cmheaven
謝謝dvcom的回復(fù).我現(xiàn)在的問題是發(fā)了0606后,2060對eeprom供電,然后接著發(fā)復(fù)位命令.我再讀取2060寄存器的值發(fā)現(xiàn)沒用從eeprom更新,讀取的數(shù)據(jù)是一個隨機(jī)值,是不是我的復(fù)位命令有錯誤呢?我發(fā)送的命令格式是start-0x16-A-0x00-A-0x06-A-0x06-A-stopstart-0x16-A-0x4f-A-0x5a-A-0xff-A-stopstart-0x16-A-0x7d-A-0x00-A-0x00-A-stopstart-0x16-A-0x7d-A-0x80-A-0x00-A-stop請指點(diǎn)下問題出在哪里,謝謝啦
能不能更具體的形容你的問題?
你所說的“讀取的數(shù)據(jù)”是什么?
使用"FULL RESET"時,bq2060 必須處于UNSEAL狀.即bq2060重新供電后EEPROM地址0x3F的第六位元等于0.否則復(fù)位指令自動失效.
你所說的“讀取的數(shù)據(jù)”是什么?
使用"FULL RESET"時,bq2060 必須處于UNSEAL狀.即bq2060重新供電后EEPROM地址0x3F的第六位元等于0.否則復(fù)位指令自動失效.
0
回復(fù)
@dvcom
能不能更具體的形容你的問題?你所說的“讀取的數(shù)據(jù)”是什么?使用"FULLRESET"時,bq2060必須處于UNSEAL狀.即bq2060重新供電后EEPROM地址0x3F的第六位元等于0.否則復(fù)位指令自動失效.
我現(xiàn)在要是實(shí)現(xiàn)的是通過單片機(jī)來讀取2060的寄存器的數(shù)據(jù),我已經(jīng)通過I2C對24C01進(jìn)行了配置,unseal位設(shè)置了.然后我通過smbus(用avr的硬件I2C)讀取2060中的寄存器.
我要實(shí)現(xiàn)的功能是讀取電池當(dāng)前的電壓和剩余電量.但是我發(fā)下去命令查詢返回值都是錯的,然后我試著讀取在eeprom中已經(jīng)設(shè)置好的值,如Remaining TimeAlarm. 這個值在eeprom中的0x02和0x03已經(jīng)被我配置好了,我通過2060的Remaining TimeAlarm命令(0x02)來讀取這個值,總是錯的.
現(xiàn)在就不知道是哪里出的問題,手冊上說在一次Full Reset后2060會更新自己寄存器的值,可是我讀回來的數(shù)據(jù)仍然不對.
不清楚是不是復(fù)位命令沒有被響應(yīng).
不知道說的是否清楚了,現(xiàn)在我看下來就是2060與eeprom之間通信問題了.電路是按照手冊上的做的,應(yīng)該沒有問題.
我要實(shí)現(xiàn)的功能是讀取電池當(dāng)前的電壓和剩余電量.但是我發(fā)下去命令查詢返回值都是錯的,然后我試著讀取在eeprom中已經(jīng)設(shè)置好的值,如Remaining TimeAlarm. 這個值在eeprom中的0x02和0x03已經(jīng)被我配置好了,我通過2060的Remaining TimeAlarm命令(0x02)來讀取這個值,總是錯的.
現(xiàn)在就不知道是哪里出的問題,手冊上說在一次Full Reset后2060會更新自己寄存器的值,可是我讀回來的數(shù)據(jù)仍然不對.
不清楚是不是復(fù)位命令沒有被響應(yīng).
不知道說的是否清楚了,現(xiàn)在我看下來就是2060與eeprom之間通信問題了.電路是按照手冊上的做的,應(yīng)該沒有問題.
0
回復(fù)
@cmheaven
我現(xiàn)在要是實(shí)現(xiàn)的是通過單片機(jī)來讀取2060的寄存器的數(shù)據(jù),我已經(jīng)通過I2C對24C01進(jìn)行了配置,unseal位設(shè)置了.然后我通過smbus(用avr的硬件I2C)讀取2060中的寄存器.我要實(shí)現(xiàn)的功能是讀取電池當(dāng)前的電壓和剩余電量.但是我發(fā)下去命令查詢返回值都是錯的,然后我試著讀取在eeprom中已經(jīng)設(shè)置好的值,如RemainingTimeAlarm.這個值在eeprom中的0x02和0x03已經(jīng)被我配置好了,我通過2060的RemainingTimeAlarm命令(0x02)來讀取這個值,總是錯的.現(xiàn)在就不知道是哪里出的問題,手冊上說在一次FullReset后2060會更新自己寄存器的值,可是我讀回來的數(shù)據(jù)仍然不對.不清楚是不是復(fù)位命令沒有被響應(yīng).不知道說的是否清楚了,現(xiàn)在我看下來就是2060與eeprom之間通信問題了.電路是按照手冊上的做的,應(yīng)該沒有問題.
其實(shí)只要電路斷電后再供電,效果就有如Full Reset.
建議用成品測試你的SMBUS硬件和軟件.如無問題,應(yīng)該是你的電路安置不理想或有問題.
建議用成品測試你的SMBUS硬件和軟件.如無問題,應(yīng)該是你的電路安置不理想或有問題.
0
回復(fù)