我对I2C协议非常陌生,但我设法写到了我的设备上。我买了ADV7630评估板,这是一个由I2C控制的HDMI开关。
我可以使用I2c写入寄存器,也可以使用i2cDetect显示所有设备。我也试着去读注册内容,但是不管我想读什么,我总是会被“阅读失败”。i2Cdump也能得到所有的'XX‘。
我在某个地方读到的是连接不好的地方,所以我检查了一下,并焊接了连接器,但这并没有帮助。
我的硬件是来自模拟设备的ADV7630评估委员会,和一个使用raspbian最新发行版的Raspberry。
任何关于这方面的线索都会很感激的。
谢谢。
使用的命令:
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)。
发布于 2017-06-26 00:51:34
我发现了发生了什么。实际上,我的设备需要一些有规模的i2c重复启动条件。由于在i2ctools上默认不激活这一点,所以它不能使用我的设备。
使用Raspbian和i2ctools激活i2c重复启动条件的方法如下:
在/etc/modprobe.d/i2c.conf上创建一个文件并将内容设置为:
选项i2c_bcm2708 combined=1
而且效果很好!
谢谢你的帮助!
参考文献:
https://ez.analog.com/message/77452
http://rabbit-note.com/2015/02/15/raspberry-pi-i2c-repeated-start/
https://stackoverflow.com/questions/44550692
复制相似问题