while(!(I2C_CheckEvent(I2Cx, I2C_EVENT_MASTER_BYTE_TRANSMITTED)));//等待主机发送过程完成
I2C_GenerateSTART(I2Cx, ENABLE); //I2C开始发送
while(!(I2C_CheckEvent(I2Cx, I2C_EVENT_MASTER_MODE_SELECT)));//设置主机模式
I2C_Send7bitAddress(I2Cx,EE24cBlockSelect,I2C_Direction_Receiver);//设置从机地址,并设置主机为接收模式
while(!(I2C_CheckEvent(I2Cx, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED))); //确认该过程完成
while(NumToRead)
{
if(NumToRead==1)
{
I2C_AcknowledgeConfig(I2Cx, DISABLE);//关闭I2C的应答功能
I2C_GenerateSTOP(I2Cx, ENABLE); //发送结束信息
}
if((I2C_CheckEvent(I2Cx, I2C_EVENT_MASTER_BYTE_RECEIVED)))//如果接收到信息了
{
*pBuffer = I2C_ReceiveData(I2Cx);//把接收到的数据 填进缓冲区当中
pBuffer++;
NumToRead--;
}
}
I2C_AcknowledgeConfig(I2Cx, ENABLE);//开启主机I2C的应答功能
}
在写i2C和读i2C之间要插入下面函数等待,否则会有问题
I2C_EE_WaitEepromStandbyState();