|
主要就是接收完最后1个字节之前需要先使能非应答以及停止位;我觉得可能是这里有问题,这个是我读EEPROM时候的代码,帮忙看看。
ErrorStatus I2cRecToBuff( u8* buf,u16 Len )
{
do{
if( 1 == Len )
{
I2C_AcknowledgeConfig(I2C1, DISABLE);
I2C_GenerateSTOP(I2C1, ENABLE);
}
if( I2cWaitEvent(I2C_EVENT_MASTER_BYTE_RECEIVED) == SUCCESS )
{
Len--;
*buf++ = I2C_ReceiveData(I2C1);
}
else
{
I2C_AcknowledgeConfig(I2C1, ENABLE);
I2C_GenerateSTOP(I2C1, ENABLE);
return ERROR;
}
}while(Len);
I2C_AcknowledgeConfig(I2C1, ENABLE);
return SUCCESS;
} |
|