注意写数据的时候,加延时,单个字节读取
#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