嵌入式技术论坛
直播中

CDCNKA

8年用户 1231经验值
擅长:385288
私信 关注
[问答]

在packeg包里的at24cxx.c文件调用函数为什么会出错呢?

在packeg包里的at24cxx.c文件,里at24cxx_write_page函数存在bug,

if(rt_i2c_transfer(dev->i2c, msgs, 2) == 0) 这个返回错误的时候也不等于0,也会返回正确,最终导致调用此函数的at24cxx_page_write函数出错。

望尽快修复,谢谢。

2.jpg

出错的地方在i2c_bit_send_address函数的

2.jpg

这个函数会报很多错,总之你可以试下用两个悬空的IO口作为IIC的两个脚,然后调用at24cxx_page_write函数最后返回值还是RT_EOK,这就不对了

回帖(4)

李萍

2023-1-10 16:49:14
可以直接贴一下出错时的返回值,以及修改方法。
然后可以学一下怎么发PR就完美了。
举报

CDCNKA

2023-1-10 16:49:33
编辑了,你可以试下用两个空的IO口作为IIC的两个脚,然后调用at24cxx_page_write函数就知道了,
举报

CDCNKA

2023-1-10 16:49:40
最终at24cxx_page_write函数的返回值依然是RT_EOK,这是不合理的。
举报

CDCNKA

2023-1-10 16:49:46
出错点在if(rt_i2c_transfer(dev->i2c, msgs, 2) == 0)这处调用,
rt_i2c_transfer(dev->i2c, msgs, 2)的返回值可能是负的,而这里没做判断,我不知道应该在哪里进行修改合适。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分