at24cxx_write_page写不进去EEPROM,at24cxx_read_page读取是正常的
rt_err_t at24cxx_write_page(at24cxx_device_t dev, uint32_t wirteAddr, uint8_t *pBuffer, uint16_t numToWrite, rt_int8_t Addr)
{
struct rt_i2c_msg msgs[2];
uint8_t AddrBuf[2];
msgs[0].addr = Addr | dev->AddrInput;
msgs[0].flags = RT_I2C_WR ;
#if 0
AddrBuf[0] = wirteAddr >> 8;
AddrBuf[1] = wirteAddr;
msgs[0].buf = AddrBuf;
msgs[0].len = 2;
#else
AddrBuf[0] = wirteAddr;
msgs[0].buf = AddrBuf;
msgs[0].len = 1;
#endif
msgs[1].addr = Addr | dev->AddrInput;
msgs[1].flags = RT_I2C_WR ;//| RT_I2C_NO_START
msgs[1].buf = pBuffer;
msgs[1].len = numToWrite;
if(rt_i2c_transfer(dev->i2c, msgs, 2) <= 0)
{
return RT_ERROR;
}
return RT_EOK;
}
1、页写注意开始地址;比如页大小是8字节,从地址0x07开始写,写1字节就需要翻页了;
2、不能超出页大小。
参考:EEPROM页写算法