STM32cubeMX硬件IIC問題

注意寫數據的時候,加延時,單個字節讀取

#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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章