关于S3C2440的I2C驱动问题

[复制链接]
 楼主| 867405479 发表于 2013-4-22 11:47 | 显示全部楼层 |阅读模式
写了个I2C驱动程序,使用的芯片是PCF8591,但是在调用i2c_transfer时,返回值总是-6,在read和write中,调用i2c_transfer返回值总是-6,不知道是怎么的问题,求高手指点
 楼主| 867405479 发表于 2013-4-22 13:04 | 显示全部楼层
用示波器看了下,发现在调用write时SCL是有波形的,我的应用程序里是先write后read,但是write里i2c_transfer返回值为-6

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
jlass 发表于 2013-4-22 15:35 | 显示全部楼层
-6这个数值总有点意义吧
 楼主| 867405479 发表于 2013-4-22 21:04 | 显示全部楼层
这个值是我在程序中,打印出来的,在网上查了下i2c_transfer,如果返回的是负值,说明通信失败,但是我就是不知道失败在哪里,如果失败,那为什么SCL会发出波形呢?
 楼主| 867405479 发表于 2013-4-22 21:17 | 显示全部楼层
我跟踪程序到i2c-core.c,的i2c_transfer程序里发现ret = adap->algo->master_xfer(adap, msgs, num);调用到这里,ret这个值是-6,然后执行if时执行break跳出来了,

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 867405479 发表于 2013-4-22 21:23 | 显示全部楼层
还有,我用的这个I2C芯片的地址是0x90,但是好像i2c-core.c这一文件里这个地址最大只能是0x77,,所以我吧他改成0xf7,这样加载模块时,就不会出现地址无效的提示了,这个应该和我目前的错误没关系吧
jlass 发表于 2013-4-23 10:14 | 显示全部楼层
从你的回帖来看,你的水平应该不错,自己加打印慢慢调试一下,估计就能搞定了
 楼主| 867405479 发表于 2013-4-23 11:43 | 显示全部楼层
搞了好久总算调出来了,谢谢各位大侠的指点,我的经验就是像上面这位大侠说的,跟踪程序,打印出调试信息,我用的开发板是MINI2440,里面的很多程序,包括I2C-CORE.C,I2C-S3C2410.C这些程序,有些是为板上的AT2408写的,因此可能对于其他I2C芯片,要做一下改动,我就改了很多地方,只要有耐心,有技巧,慢慢调总会调出来的
xrj979033442 发表于 2013-5-6 16:16 | 显示全部楼层
楼主  我留下qq号,遇到同样的问题求详解979033442 忘早日回复
liu_gong 发表于 2014-12-12 23:10 | 显示全部楼层
我也遇到这个问题了。返回值是-5,你是怎么解决的?
xishanggongzi 发表于 2015-1-15 00:47 | 显示全部楼层
liu_gong 发表于 2014-12-12 23:10
我也遇到这个问题了。返回值是-5,你是怎么解决的?

返回值-5啊,跟你一样的,你怎么解决的?
sunnyjulie 发表于 2015-3-17 16:09 | 显示全部楼层
LM3S6911-IQC50-A2, S3C2440A40-YQ80, 大量全新原装现货,有用到的私我!广兴隆电子,只做原装,假一罚十!QQ:1546625035, 电话:0755-83265881
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

52

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

7

主题

52

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部