I2C

rt_i2c_transfer函数执行返回-8?

发布于 2019-08-18 23:17:37
    本帖最后由 KelvinHe 于 2019-8-18 23:17 编辑


请教个问题,最近打算将RT-Thread移植到ufun开发板上,在调试IIC外设(OLED模块,IIC接口)时,遇到个问题。
首先,硬件设备是ok的,已经用测试代码调通了,能正常显示,只是RT-thread的IIC未调通。

1.注册设备是成功的:
Snipaste_2019-08-18_23-06-37.jpg

2.然而在使用rt_i2c_transfer()函数时,遇到了问题:
调试函数返回-8.jpg

返回-8.jpg

3.采用模拟IIC,硬件使用PB6,PB7引脚。
#define BSP_I2C1_SCL_PIN 	22
#define BSP_I2C1_SDA_PIN 23
请教下,可能是哪些地方出了问题呢?

查看更多

关注者
0
被浏览
903
14 个回答
水清沙白
水清沙白 2019-08-19
-8 的错误码为 RT_EIO,跟踪一下具体在哪里返回的
xb-w
xb-w 2019-08-23
我现在也遇到了,怎么解决?
KelvinHe
KelvinHe 2019-08-24
xb-w 发表于 2019-8-23 15:22
我现在也遇到了,怎么解决?


我还没解决。准确用HAL库了。
aprilhome
aprilhome 2019-09-04
你好,我也遇见了返回-8,是在写完从设备地址后,i2c_waitack中返回了错误值0,导致后面返回-8,可能有哪些原因呢?
KelvinHe
KelvinHe 2019-09-19
aprilhome 发表于 2019-9-4 18:09
你好,我也遇见了返回-8,是在写完从设备地址后,i2c_waitack中返回了错误值0,导致后面返回-8,可能有哪些 ...


我也不知道啥原因呢,请RTT技术人员来分析一下~
lzq
lzq 2019-11-07
我也遇到此问题,请问您是怎么解决的?
ymd5033
ymd5033 2019-12-15
我用IIC驱动BL8025也遇到同样的问题?请问大老门都解决了吗?
ymd5033
ymd5033 2019-12-15
ymd5033 发表于 2019-12-15 19:12
我用IIC驱动BL8025也遇到同样的问题?请问大老门都解决了吗?


我的问题解决了,把设备地址搞错了
断崖独坐
断崖独坐 2020-01-03
我也遇到了这个问题,返回-8,我开启了#define RT_I2C_BIT_DEBUG调试,报这个错误(I2C bus error, SDA line low),我检测SDA的电平为3.3V,我用的是DS1307,上拉5V啊,怎么会拉不上去呢

msgs[0] W, addr=0x68, len=2
send start condition
I2C bus error, SDA line low
NACK
send bytes: NACK.
send stop condition
JQRR_7669
JQRR_7669 认证专家 2020-01-05
可能是从设备地址不对
JQRR_7669
JQRR_7669 认证专家 2020-01-05
设备地址问题
luoye_yys
luoye_yys 2020-01-08
ymd5033 发表于 2019-12-15 23:22
我的问题解决了,把设备地址搞错了


楼主解决办法是要把设备地址右移1位吗?
cyZhaoSir
cyZhaoSir 2020-05-09
    本帖最后由 cyZhaoSir 于 2020-5-9 18:38 编辑


我在使用AT24C02时曾经遇到过这个问题,我的板子IIC接口时没有接上拉电阻的,再rtthread系统初始话时可以看到
微信截图_20200509182824.png


开漏.png


系统对GPIO口的初始化用的是开漏输出,这将导致IIC在数据传输时产生电平问题。如果板子存在这种情况,将此处修改为
带上拉输入
模式,即可解决


上拉.png
[img]C:\Users\lenovo\Desktop\微信截图_20200509182824.png[/img]


aozima
aozima 2020-05-09
内部上拉太弱,请降速运行。
建议加上外部上拉 4.7K

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友