AT24C256 I2C EEPROM에 쓰거나 읽으려고 힘듭니다. 나는 STM32F0 발견 보드를 사용하여 EEPROM을 읽거나 쓰려고한다.I2C EEPROM + STM32F0 쓰기/읽기 오류
기본 구조는 HAL 라이브러리와 CUBEMX를 사용하고 있습니다. 필자는 읽기 및 쓰기 기능을 테스트하기 위해 작은 코드를 작성했습니다. 디버깅에서 Test의 값은 항상 '2'이며, 메모리에 쓰기가 성공하면 '1'이어야합니다. 여기있다 : -
#define ADDR_24LCxx_Write 0x50
#define ADDR_24LCxx_Read 0x50
#define BufferSize 5
uint8_t WriteBuffer[BufferSize],ReadBuffer[BufferSize],Test;
uint16_t i;
I2C_HandleTypeDef hi2c1;
int main(void)
{
HAL_Init();
/* Configure the system clock */
SystemClock_Config();
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_I2C1_Init();
for(i=0; i<5; i++)
{
WriteBuffer[i]=i;
}
if(HAL_I2C_Mem_Write(&hi2c1, ADDR_24LCxx_Write, 0, I2C_MEMADD_SIZE_8BIT,WriteBuffer,BufferSize, 0x10) == HAL_OK)
{
Test = 1;
}
else
{
Test = 2;
}
HAL_I2C_Mem_Read(&hi2c1, ADDR_24LCxx_Read, 0, I2C_MEMADD_SIZE_8BIT,ReadBuffer,BufferSize, 0x10);
if(memcmp(WriteBuffer,ReadBuffer,BufferSize) == 0) /* check date */
{
Test = 3;
}
else
{
Test = 4;
}
}