I2C工具,i2cdetect和i2cset工作正常,但i2cget返回'read failed'

时间:2017-06-14 17:00:32

标签: python i2c

我对I2C协议很新,但我设法写入我的设备。我买了ADV7630评估板,它是由I2C控制的HDMI开关。

我可以使用I2c写入寄存器,i2cDetect也可以显示所有设备。我也尝试读取寄存器内容,但无论我尝试读什么,我总是得到'读取失败'。 i2Cdump也获得了所有'XX'。

Whai我读到的地方连接不好,所以我仔细检查了,并焊接了连接器,但这没有帮助。

我的硬件是来自Analog Device的ADV7630评估板,以及使用raspbian最新发行版的Raspberry Pi。

任何有关这方面的线索都会非常感激。

感谢。

使用的命令:

i2cdetect -y 1

我只有0x74设备(根据adv7630数据表,这是正常的)

i2cset -y 1 0x58 0xff 0xff  # reset device
i2cset -y 1 0x58 0x0c 0x40  # disable chip powerdown
i2cset -y 1 0x58 0xea 0xc8  # set TXB main map address
i2cset -y 1 0x58 0xeb 0x80  # set TXB packet map address
i2cset -y 1 0x58 0xec 0x8e  # set TXB EDID map address
i2cset -y 1 0x58 0xed 0x8c  # set TXB Test map address
i2cset -y 1 0x58 0xee 0xb8  # set TXA main map address 
i2cset -y 1 0x58 0xef 0x70  # set TXA packet map address
i2cset -y 1 0x58 0xf0 0x7e  # set TXA EDID map address
i2cset -y 1 0x58 0xf1 0x7a  # set TXA test map address
i2cset -y 1 0x58 0xf9 0x64  # set repeater map address
i2cset -y 1 0x58 0xfa 0x6c  # set EDID map address
i2cset -y 1 0x58 0xfb 0x68  # set HDMI rx map address


i2cget -y 1 0x58 0xe1

错误:读取失败

i2cdetect -y 1

我检测到设备号码:(在这种情况下:38,3d,3f,40,46,47,64,74),这是预期的。

1 个答案:

答案 0 :(得分:0)

我发现了发生了什么。实际上我的设备需要一些ca2 i2c重复启动条件。由于i2ctools默认情况下未激活此功能,因此无法使用我的设备。

使用Raspbian和i2ctools激活i2c重复启动条件的方法是:

/etc/modprobe.d/i2c.conf创建文件 并将内容设置为:

  

选项i2c_bcm2708合计= 1

它工作正常!

感谢您的帮助!

参考文献:

https://ez.analog.com/message/77452

http://rabbit-note.com/2015/02/15/raspberry-pi-i2c-repeated-start/