查看: 247|回复: 5

[求助] Hi3519av100使用i2c-1时read出错

[复制链接]
发表于 2020-2-5 15:36:56 | 显示全部楼层 |阅读模式
我在设备树中使能了i2c-1和i2c-5,都通过himm工具复用了引脚
i2c-5接加速度传感器,可以使用下面的指令正常读
~ $ i2c_read 5 0x39 0x1 0x1 0x1 0x1

i2c-1接rtc DS1339U-33+,不能通过下面read来正常读
~ # i2c_read 1 0xd1 0x0 0x0 0x1 0x1
*** Board tools : ver0.0.1_20121120 ***
[debug]: {source/utils/cmdshell.c:166}cmdstr:i2c_read
i2c_num:0x1, dev_addr:0xd0; reg_addr:0x0; reg_addr_end:0x0;                         reg_width: 1; data_width: 1; reg_step: 1.

hibvt-i2c 4561000.i2c: wait idle timeout, RIS: 0x10, SR: 0xa0000
CMD_I2C_READ error!

do errro
[END]


我查看了i2c-1和i2c-5的寄存器配置
基本上一样
i2c-5:0x04545000
i2c-1:0x04541000


并且尝试用示波器测试i2c-1的引脚都没有波形输出

想问下为啥

本帖子中包含更多资源

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

x
 楼主| 发表于 2020-2-5 15:38:03 | 显示全部楼层
并且我用编写的应用程序也试过了,也是i2c-5可以读写,i2c-1不行
 楼主| 发表于 2020-2-5 15:38:57 | 显示全部楼层
也尝试修改了设备树,将i2c-1的频率从100k改到200k,也不能读写
发表于 2020-2-10 10:31:26 | 显示全部楼层
从设备地址的输入值是否是正确的呢?注意海思官方提供的i2c_read和i2c_write个i2cset和i2cget中的输入值是不一样的, 举例说明一下: 比如说有一个从设备地址为0x49, 那么在i2cset和i2cget中我们是正常输入0x49即可, 但是在使用i2c_read或者是i2c_write时, 我们输入的是0x92. 这是为什么呢? 因为官方的i2c_read或i2c_write的实现中将我们输入的值往右进行了1次移位(设备输入值>>1),所以为了得到0x49的设备地址值,我们需要0x92>>1 = 0x49。 你可以将这个代入你这个问题看看,看一下是否是从设备地址不正确导致的
 楼主| 发表于 2020-2-27 11:24:37 | 显示全部楼层
bakbad 发表于 2020-2-10 10:31
从设备地址的输入值是否是正确的呢?注意海思官方提供的i2c_read和i2c_write个i2cset和i2cget中的输入值是 ...

问题已经解决,是I2C的引脚的驱动能力不够,将驱动能力增加就有正常的I2C波形了,并且可以读写
 楼主| 发表于 2020-2-27 11:25:16 | 显示全部楼层
加了一个电平转换芯片将1.8v电平转换为3.3v,所以驱动能力可能不够
您需要登录后才可以回帖 登录 | 注册

本版积分规则

© 2008-2017 当前位置 易百纳技术社区论坛 返回 易百纳技术社区 ( 苏ICP备14036084 )   Powered by Discuz! X3.1
快速回复 返回顶部 返回列表