高中生
最后登录1970-1-1
在线时间 小时
注册时间2014-12-8
|
这两天学习到了I2C这一章节,感觉难度骤增啊,例程里面有几处疑惑的地方,百度了半天也没搞明白,特来发帖求教。while(NumByteToRead)
{
if(NumByteToRead == 1)
{
I2C_AcknowledgeConfig(I2C1, DISABLE);
I2C_GenerateSTOP(I2C1, ENABLE);
}
if(I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_RECEIVED))
{
*pBuffer = I2C_ReceiveData(I2C1);
pBuffer++;
NumByteToRead--;
}
}
I2C_AcknowledgeConfig(I2C1, ENABLE);
}
这段代码中关于*pBuffer = I2C_ReceiveData(I2C1);这句话解释是“返回通过I2C最近接收的数据”,我想问的第一个问题:pBuffer[0]中是I2C中的第一个数据还是最后一个数据,比如我向I2C中输入了1,2,3,4,5.那么是1还是5?第二个问题:在循环一次后,再次到了*pBuffer = I2C_ReceiveData(I2C1)这句话时候,库函数I2C_ReceiveData(I2C1)会自动移了一个数据吗?pBuffer[1]直接就等于2(或者4)?
还有就是下面这段等待函数中:
void I2C_EE_WaitEepromStandbyState(void)
{
vu16 SR1_Tmp = 0;
do
{
I2C_GenerateSTART(I2C1, ENABLE);
SR1_Tmp = I2C_ReadRegister(I2C1, I2C_Register_SR1);
I2C_Send7bitAddress(I2C1, EEPROM_ADDRESS, I2C_Direction_Transmitter);
}while(!(I2C_ReadRegister(I2C1, I2C_Register_SR1) & 0x0002));
I2C_ClearFlag(I2C1, I2C_FLAG_AF);
I2C_GenerateSTOP(I2C1, ENABLE);
}
SR1_Tmp = I2C_ReadRegister(I2C1, I2C_Register_SR1);这句话有什么作用?
|
|