注意寫數據的時候,加延時,單個字節讀取
#if 1
printf("\r\n***************I2C Example*******************************\r\n");
printf("WriteBuffer\r\n");
for(i=0; i<256; i++)
{
WriteBuffer[i]=i; /* WriteBuffer init */
printf("0x%02X ",WriteBuffer[i]);
}
/* wrinte date to EEPROM */
for(i=0;i<BufferSize;i++)
{
HAL_I2C_Mem_Write(&hi2c2, ADDR_24LCxx_Write, i, I2C_MEMADD_SIZE_8BIT,&WriteBuffer[i],1,0xff);//使用I2C塊讀,出錯。因此採用此種方式,逐個單字節寫入
HAL_Delay(5);//此處延時必加,與AT24C02寫時序有關
}
printf("\r\n EEPROM 24C02 Write Test OK \r\n");
HAL_I2C_Mem_Read(&hi2c2, ADDR_24LCxx_Read, 0, I2C_MEMADD_SIZE_8BIT,ReadBuffer,BufferSize,0xff);
for(i=0; i<256; i++)
printf("0x%02X ",ReadBuffer[i]);
if(memcmp(WriteBuffer,ReadBuffer,BufferSize) == 0 ) /* check date */
printf("\r\n EEPROM 24C02 Read Test OK\r\n");
else
printf("\r\n EEPROM 24C02 Read Test False\r\n");
#endif