我对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),这是预期的。
答案 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/