通过STM32F103的I2C读写24LC024,现在问题是一次读写16个及以内的数据完全正常 ,超过16个以后读回来的地址上的数不对,想问问读写这种芯片是不是超过16个字节需要分页操作之类的问题? #define ADDR_24LC02_Write 0xA0 #define ADDR_24LC02_Read 0xA1 #define BufferSize 20 if(HAL_I2C_Mem_Write(&hi2c2, ADDR_24LC02_Write, 0, I2C_MEMADD_SIZE_8BIT, WriteBuffer, BufferSize, 0x10) == HAL_OK) { HAL_Delay(5); memcpy(&D_I2c_pre, &D_I2c, BufferSize); } |
意思是写的时候写16个数据后跳16个地址再写下16个数据,读的时候一次性读32个数据就可以了?
我试了一下,现在写16个数据以后换页再写不会出现覆盖数据现象。但是一次读取32个数据好像只读出了前16个,后16个没有读到!
HAL_I2C_Mem_Read(&hi2c2, ADDR_24LC02_Read, 0, I2C_MEMADD_SIZE_8BIT, ReadBuffer, 32, 0x10);
现在是写没有问题了(不会将后面的数据写到前面地址上),但是读出现了问题!