研究生
最后登录1970-1-1
在线时间 小时
注册时间2015-6-23
|
while(NumByteToRead)
{
if(NumByteToRead == 1)
{
/* Disable Acknowledgement */
I2C_AcknowledgeConfig(I2C1, DISABLE);
/* Send STOP Condition */
I2C_GenerateSTOP(I2C1, ENABLE);
} //这红色字体表示如果是到了最后一个字节了,就先发送NACK和STOP信号,如果这样的话,已经停止了传输,
//后面的*pBuffer = I2C_ReceiveData(I2C1);这个最后一个字节还能收到吗?
//还是因为,尽管是先发送了NACK和STOP信号,但是数据早就已经保存到了数据寄器中DR中了,所以后面不管什么时候*pBuffer = I2C_ReceiveData(I2C1);
//都可以将数据取出来,而不会漏掉最后一字节。
/* Test on EV7 and clear it */
if(I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_RECEIVED))
{
/* Read a byte from the EEPROM */
*pBuffer = I2C_ReceiveData(I2C1);
/* Point to the next location where the byte read will be saved */
pBuffer++;
/* Decrement the read bytes counter */
NumByteToRead--;
}
}
|
|