目的:做一个小小的记录器,用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的时间。也许你的写指令可能没有考虑到这个延时。
-----------------------------------------------------------------------
我在Sample_bat()中有考慮,事實上,即使加兩個__delay_ms(60);在後面也沒有用,不解呀! 沒辦法,隻用有兩個 Sample_bat()來了,試了下,好像是沒有問題,便不能保証中間不會出什麼錯,今天沒有時間搞它,昨天把我鬱悶得不行呀,仿真,分析時序都沒有問題,硬件沒有用SCOP看,其他的同事在用,本是想來看看的,現在還是沒有想明白,即便是幹擾也不可能,錯的數據都是一樣的,懷疑是不是指針用得有問題,還是很鬱悶!
一周热门 更多>