目的:做一个小小的记录器,用I2C读取IC的资料(Sample_bat();)放到0x40~0x5F中,然后通过SPI放到M25P128中(Record_bat();)。
现象: I2C读取IC的资料总是出现一个对,一个错,交替重复出现(SPI写没有问题) 。但如果用I2C只读取,不写FLASH的话,那么I2C读取就没有问题
如下,第一次Sample_bat();正确,经过Record_bat();不正常 ,然后又正常,再又不正常,很郁闷,用PROTEUS仿真没有问题。
void Scan_battery(void)
{
//clear the status flag
Bat_Flag=0;
//sample the parameters
Sample_bat();
//recorde the parameters( write the parameter to flash)
curaddress=GetFlashAddress();
Record_bat(); //record 16 bytes
StoreFlashAddress(curaddress+16);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
-----------------------------------------------------------------------
注意一下I2C的存储器一般是要求写指令后需要等待一段时间的,大约写一个字节需要延时5mS的时间。也许你的写指令可能没有考虑到这个延时。
一周热门 更多>