当前位置: 代码迷 >> 单片机 >> 关于EEPROM(I2C mini2440)的随机读取数据有关问题
  详细解决方案

关于EEPROM(I2C mini2440)的随机读取数据有关问题

热度:226   发布时间:2016-04-28 15:23:17.0
关于EEPROM(I2C mini2440)的随机读取数据问题
本帖最后由 SLZ2011 于 2013-05-11 00:25:37 编辑
前几天按照手册写的随机读取AT24C08的程序一直无法成功,今天写了一个类似的简单程序拿来调试,结果错误依旧,百思不得其解!不知道为什么伪写总是无法得到ACK(应该也没有写成功,因为运行程序的结果和Sequential Read方式的结果想相同。)。
思考了挺久(当然也搜索了挺久),无解。。。望大神伸出援手。代码简单,过目。。。
   
     flag=2;buf=0x0;locate=0x10;
        rIICDS=0xa0;//伪写第一阶段,写从机地址
        delay(1000);
        rIICCON=0xe1;
        rIICSTAT=0xf0;
        return 0;
}
void irq_process()
{
        int puts(unsigned char*);
        int printx(unsigned long);
        int i;
        rSRCPND=~0;
        rINTPND=~0;
        if(flag==1)//NO ACK
        {
                puts("flag 1\r\n");
                buf=rIICDS;
                printx(rIICDS); puts("  ");printx(rIICCON);puts("  ");printx(rIICSTAT);
                rIICCON=0x61;//no ACK
                flag=0;
        }
        else if(flag==2)//伪写的第二个阶段,发送数据起始地址
        {
                puts("flag 2\r\n");
                printx(rIICDS); puts("  ");printx(rIICCON);puts("  ");printx(rIICSTAT);
                puts("\r\n");
                rIICDS=locate;//想读的数据起的始地址
                delay(1000);
                printx(rIICDS); puts("  ");printx(rIICCON);puts("  ");printx(rIICSTAT);
                rIICCON=0xe1;
                flag=3;
        } 
        else if(flag==3)//M_R restart
        {
                puts("flag 3\r\n");
                printx(rIICDS); puts("  ");printx(rIICCON);puts("  ");printx(rIICSTAT);
                puts("\r\n");
                rIICDS=0xa0;//以主读方式再次发送开始信号
  相关解决方案