BeagleBoneBlack附带一个连接到i2c-0行的“内部”EEPROM。当我做i2cdetect时,我可以清楚地看到这一点:
debian@beaglebone:~$ i2cdetect -y -r 0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- UU -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- UU -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: UU -- -- -- -- -- -- -- 它显示在地址0x50下面。当我尝试做ahexdump时,我得到以下值,没有问题:
sudo hexdump -C /sys/class/i2c-dev/i2c-0/device/0-0050/eeprom | head -5
00000000 aa 55 33 ee 41 33 33 35 42 4e 4c 54 30 30 30 43 |.U3.A335BNLT000C|
00000010 31 38 33 37 42 42 42 47 30 36 32 32 ff ff ff ff |1837BBBG0622....|
00000020 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
00001000 aa 55 33 ee 41 33 33 35 42 4e 4c 54 30 30 30 43 |.U3.A335BNLT000C|现在,我想在i2c-2行上添加另一个EEPROM (带有cape),这是根据BBB SRM第8.2节支持的。这是SRM中提到的CAT24C256。扩展卡的允许地址范围为0x54-0x57。当我执行i2cdetect时,我可以看到以下内容:
debian@beaglebone:~$ i2cdetect -r -y 2
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- UU UU UU UU -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- -- 我可以看到地址0x54-0x57显示,但当我尝试十六进制转储时,我得到一个错误:
hexdump: /sys/class/i2c-dev/i2c-2/device/2-0054/eeprom: Connection timed out问题:
我可以看到映射到内核中的地址,但是当我试图释放eeprom时,它根本不起作用。我认为这应该是由内核设置的,因为它在BeagleBone SRM中提到过。我需要一个覆盖来添加到uboot中吗?
我所要做的就是从EEPROM中读取数据,就像我对“内部”的读取一样,以确认它是否有效。我做错了什么?
发布于 2018-11-13 22:59:12
问题是,斗篷经理“霸占”了i23c-2上的那些地址。我们需要禁用斗篷经理,以释放这些地址。这样做之后,它在i2c-2下显示了0x57,所以它应该在以后才能工作。
请查看有关如何在BeagleBone上禁用Cape管理器的下列链接:
source=footer#!msg/beagleboard/NG8cDWuv2Y0/69vk5F5ZAgAJ)
确保编辑am335x-boneblack-uboot.dts文件,删除第11行中的包含并替换为以下内容:
#include "am335x-bone-common-no-capemgr.dtsi"注意,默认情况下,这将禁用您的i2c-2行,所以要么通过覆盖启用它,要么编辑AM335x-bone- enable no capemgr.dtsi& add &i2c0 (大约为245行):
&i2c2 {
pinctrl-names = "default";
pinctrl-0 = <&i2c2_pins>;
status = "okay";
clock-frequency = <100000>;
};https://stackoverflow.com/questions/53016270
复制相似问题