• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

请教2060读写EEPROM的问题

我在使用单片机通过smbus与2060通信,没有使用ev2200.发现2060无法读取eeprom中的数据,按照手册上说的在发送一条reset命令后,2060会从eeprom更新寄存器的值.但是我没有成功.
手册上写的是
write 0x4f to 0xff5a
write 0x7d to 0x0000
write 0x7d to 0x0080
这个怎么理解呢,是不是0x4f是命令,而0xff5a是命令参数呢,否则2060哪有16位的地址阿,请大家指点一下,谢谢
全部回复(9)
正序查看
倒序查看
dvcom
LV.1
2
2007-01-04 01:23
对,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.
0
回复
cmheaven
LV.2
3
2007-01-04 10:10
@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
请指点下问题出在哪里,谢谢啦
0
回复
dvcom
LV.1
4
2007-01-05 01:26
@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.否则复位指令自动失效.
0
回复
cmheaven
LV.2
5
2007-01-05 12:52
@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之间通信问题了.电路是按照手册上的做的,应该没有问题.
0
回复
dvcom
LV.1
6
2007-01-05 22:40
@cmheaven
我现在要是实现的是通过单片机来读取2060的寄存器的数据,我已经通过I2C对24C01进行了配置,unseal位设置了.然后我通过smbus(用avr的硬件I2C)读取2060中的寄存器.我要实现的功能是读取电池当前的电压和剩余电量.但是我发下去命令查询返回值都是错的,然后我试着读取在eeprom中已经设置好的值,如RemainingTimeAlarm.这个值在eeprom中的0x02和0x03已经被我配置好了,我通过2060的RemainingTimeAlarm命令(0x02)来读取这个值,总是错的.现在就不知道是哪里出的问题,手册上说在一次FullReset后2060会更新自己寄存器的值,可是我读回来的数据仍然不对.不清楚是不是复位命令没有被响应.不知道说的是否清楚了,现在我看下来就是2060与eeprom之间通信问题了.电路是按照手册上的做的,应该没有问题.
其实只要电路断电后再供电,效果就有如Full Reset.
建议用成品测试你的SMBUS硬件和软件.如无问题,应该是你的电路安置不理想或有问题.
0
回复
cmheaven
LV.2
7
2007-01-08 15:32
谢谢大家关注,问题已经解决,原因是自己犯了个小错误.再次谢谢大家啦
0
回复
cmheaven
LV.2
8
2007-01-08 15:53
谢谢大家的关注和帮助,这个问题已经解决啦.谢谢
0
回复
sunnile
LV.5
9
2007-01-08 22:44
@cmheaven
谢谢大家的关注和帮助,这个问题已经解决啦.谢谢
你用的是51的吗?可否把程序发上来?
0
回复
cmheaven
LV.2
10
2007-01-10 12:57
@sunnile
你用的是51的吗?可否把程序发上来?
我是用avr的单片机写的,要是在做开发的话我们可以交流下,我的msn:cmheaven#hotmail.com 把#换成@就行了
0
回复