在packeg包里的at24cxx.c文件,里at24cxx_write_page函数存在bug,
if(rt_i2c_transfer(dev->i2c, msgs, 2) == 0)
这个返回错误的时候也不等于0,也会返回正确,最终导致调用此函数的at24cxx_page_write函数出错。
望尽快修复,谢谢。
出错的地方在i2c_bit_send_address函数的
这个函数会报很多错,总之你可以试下用两个悬空的IO口作为IIC的两个脚,然后调用at24cxx_page_write函数最后返回值还是RT_EOK,这就不对了
出错点在if(rt_i2c_transfer(dev->i2c, msgs, 2) == 0)
这处调用,rt_i2c_transfer(dev->i2c, msgs, 2)
的返回值可能是负的,而这里没做判断,我不知道应该在哪里进行修改合适。
编辑了,你可以试下用两个空的IO口作为IIC的两个脚,然后调用at24cxx_page_write函数就知道了,
最终at24cxx_page_write函数的返回值依然是RT_EOK,这是不合理的。