今天做毕业设计的时候,在I2C存储器CAT1025应用方面遇到了一个问题<br />while((IO0PIN&KEY4)==0)<br /> {<br /> for(i=0;i<50000;i++);<br /> if((IO0PIN&KEY4)!=0)<br /> {<br /> SendTimeRtc();<br /> <br /> I2C_WriteNByte(CAT1025, ONE_BYTE_SUBA, 0x64+d1*8,DATA_BUF, 8);<br /> DelayNS(10);<br /> <br /> d1=d1+1;<br /> <br /> I2C_WriteNByte(CAT1025, ONE_BYTE_SUBA, 0x64+0x30,&d1, 1);<br /> DelayNS(10);<br /> <br /> // 清零数据缓冲区,防止出错 <br /> for (i=0; i<8; i++)<br /> DATA_BUF = 0;<br /> d2=0;<br /> <br /> // 读回刚才写入的数据 <br /> I2C_ReadNByte(CAT1025, ONE_BYTE_SUBA, 0x64+(d1-1)*8, TMP_BUF, 8);<br /> <br /> I2C_ReadNByte(CAT1025, ONE_BYTE_SUBA, 0x64+0x30, &d2, 1);<br /> <br /> for(i=0;i<8;i++)<br /> {<br /> UART0_SendByte(TMP_BUF);<br /> }<br /> <br /> if(d2<10) UART0_SendByte(d2+0x30);<br /> else<br /> {<br /> UART0_SendByte(d2/10+0x30);<br /> UART0_SendByte(d2%10+0x30);<br /> }<br /> }}<br /><br />这是部分程序<br /><br />在串口接收窗口EASY.EXE中接收时钟数据时<br />第1、3、5、7、9..正常<br />但是在第2、4、6、8、10...时接收数据出错<br /><br />若将I2C_WriteNByte、I2C_ReadNByte中的偏移参数0X64改为0XC8,则接收数据正常。<br /><br />不知这是何缘故?<br />应该这样解决问题?<br />敬请解答!<br />谢谢! |
|