打印

敬请高手解答I2C存储器应用方面的问题

[复制链接]
1283|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
天上的鸟|  楼主 | 2007-6-13 02:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天做毕业设计的时候,在I2C存储器CAT1025应用方面遇到了一个问题
while((IO0PIN&KEY4)==0)
        {
        for(i=0;i<50000;i++);
        if((IO0PIN&KEY4)!=0)
        {
        SendTimeRtc();
        
        I2C_WriteNByte(CAT1025, ONE_BYTE_SUBA, 0x64+d1*8,DATA_BUF, 8);
        DelayNS(10);
        
         d1=d1+1;
        
        I2C_WriteNByte(CAT1025, ONE_BYTE_SUBA, 0x64+0x30,&d1, 1);
        DelayNS(10);
        
        // 清零数据缓冲区,防止出错    
        for (i=0; i<8; i++)
            DATA_BUF = 0;
        d2=0;
        
        // 读回刚才写入的数据 
        I2C_ReadNByte(CAT1025, ONE_BYTE_SUBA, 0x64+(d1-1)*8, TMP_BUF, 8);
        
        I2C_ReadNByte(CAT1025, ONE_BYTE_SUBA, 0x64+0x30, &d2, 1);
     
     for(i=0;i<8;i++)
       {
        UART0_SendByte(TMP_BUF);
       }
       
       if(d2<10) UART0_SendByte(d2+0x30);
       else
       {
       UART0_SendByte(d2/10+0x30);
       UART0_SendByte(d2%10+0x30);
       }
        }}

这是部分程序

在串口接收窗口EASY.EXE中接收时钟数据时
第1、3、5、7、9..正常
但是在第2、4、6、8、10...时接收数据出错

若将I2C_WriteNByte、I2C_ReadNByte中的偏移参数0X64改为0XC8,则接收数据正常。

不知这是何缘故?
应该这样解决问题?
敬请解答!
谢谢!

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

0

粉丝