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