我在使用单片机通过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
回复
提示