型号
M24C64-RMN6TP SOIC-8 存储器芯片 EEPROM
现象
读取到的数据全是0xff
测试方法
sdk 代码
if((i2c_status = i2c_memory_write(&hi2cx, I2C_MEM_ADDR_WIDIH_16, I2Cx_ADDRESS, 0x10, tx_buf1, BUF_SIZE, I2C_TIMEOUT)) != I2C_OK)
{
error_handler(i2c_status);
}
delay_ms(5);
/* read data from memory device */
if((i2c_status = i2c_memory_read(&hi2cx, I2C_MEM_ADDR_WIDIH_16, I2Cx_ADDRESS, 0x10, rx_buf1, BUF_SIZE, I2C_TIMEOUT)) != I2C_OK)
{
error_handler(i2c_status);
}
/* write data to memory device */
if((i2c_status = i2c_memory_write_int(&hi2cx, I2C_MEM_ADDR_WIDIH_8, I2Cx_ADDRESS, 0x00, tx_buf2, BUF_SIZE, I2C_TIMEOUT)) != I2C_OK)
{
error_handler(i2c_status);
}
问题分析
上示波器,通过I2C解码功能看数据
与24c02的时序完全对上。
但是我使用的是24c64,下面是它的写字节时序
可以看到它的地址是16bit。
解决方法
将 I2C_MEM_ADDR_WIDIH_8 改为 I2C_MEM_ADDR_WIDIH_16
读写数据正常。