PIC I2C&SPI 读数交替对错,大侠解惑!

2020-02-09 09:36发布

目的:做一个小小的记录器,用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);

}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
longzixin168
2020-02-09 14:17
回复【1楼】portx 腾飞
-----------------------------------------------------------------------

我在Sample_bat()中有考慮,事實上,即使加兩個__delay_ms(60);在後面也沒有用,不解呀! 沒辦法,隻用有兩個 Sample_bat()來了,試了下,好像是沒有問題,便不能保証中間不會出什麼錯,今天沒有時間搞它,昨天把我鬱悶得不行呀,仿真,分析時序都沒有問題,硬件沒有用SCOP看,其他的同事在用,本是想來看看的,現在還是沒有想明白,即便是幹擾也不可能,錯的數據都是一樣的,懷疑是不是指針用得有問題,還是很鬱悶!

一周热门 更多>