通过查资料了解到I2C读取EEPROM时候,每读取一个地址的数据,AT24C02就会自动给指向的地址加1。
但是写程序的时候 写了 I2C_Send7bitAddress(EEPROM_I2C, EEPROM_ADDRESS, I2C_Direction_Receiver);后
就开始直接使用库函数读取DR的值了。 *pBuffer = I2C_ReceiveData(EEPROM_I2C); /* Point to the next location where the byte read will be saved */
pBuffer++;
/* Decrement the read bytes counter */
NumByteToRead--;然后回到*pBuffer = I2C_ReceiveData(EEPROM_I2C);
有个新问题请教
{
/* Read a byte from the device */
*pBuffer = I2C_ReceiveData(EEPROM_I2C);
while(!(I2C_ReadRegister(EEPROM_I2C, I2C_Register_SR1)&0x0040)) /*检测RxNE*/
{
}
/* Point to the next location where the byte read will be saved */
pBuffer++;
/* Decrement the read bytes counter */
NumByteToRead--;
}
为了搞清楚RxNE有没有被置0,我加了个检测该位的语句,
while((I2C_ReadRegister(EEPROM_I2C, I2C_Register_SR1)&0x0040)==0) /*检测RxNE*/
{
}
可无论是判断条件是=0还是=1, 都可以正常运行,没有陷入死循环。
这是为什么呀?