大学生
最后登录1970-1-1
在线时间 小时
注册时间2015-1-21
|
你好,火哥,我依据AT24C02芯片手册自行的编写EEPROM的驱动,最后调试时发现:在对EEPROM连续操作时,第二次操作总会陷入等待某个信号中,后来我看了你的工程,发现你每次对EEPROM操作后都有如下的一段函数:
/**
* @brief Wait for EEPROM Standby state
* @param ÎÞ
* @retval ÎÞ
*/
void I2C_EE_WaitEepromStandbyState(void)
{
vu16 SR1_Tmp = 0;
do
{
/* Send START condition */
I2C_GenerateSTART(macI2Cx, ENABLE);
/* Read I2C1 SR1 register */
SR1_Tmp = I2C_ReadRegister(macI2Cx, I2C_Register_SR1);
/* Send EEPROM address for write */
I2C_Send7bitAddress(macI2Cx, EEPROM_ADDRESS, I2C_Direction_Transmitter);
}while(!(I2C_ReadRegister(macI2Cx, I2C_Register_SR1) & 0x0002));
/* Clear AF flag */
I2C_ClearFlag(macI2Cx, I2C_FLAG_AF);
/* STOP condition */
I2C_GenerateSTOP(macI2Cx, ENABLE);
}
请问这是为什么呢??另外能不能讲一下你是如何发现要添加这段函数的呢(因为我没有在芯片手册中发现相关的介绍的),谢谢,谢谢!
第二个问题:
请问你为什么在对EEPROM操作的时候,无论读或者写操作,你在使用I2C_Send7bitAddress();函数时都是用同一个地址呢??不是地址的最后一位0或者1表示读或者写吗??
谢谢!!!
|
|