首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置扩展EEPROM i2c-2 BeagleBoneBlack Rev-C

设置扩展EEPROM i2c-2 BeagleBoneBlack Rev-C
EN

Stack Overflow用户
提问于 2018-10-26 21:02:22
回答 1查看 371关注 0票数 0

BeagleBoneBlack附带一个连接到i2c-0行的“内部”EEPROM。当我做i2cdetect时,我可以清楚地看到这一点:

代码语言:javascript
复制
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时,我得到以下值,没有问题:

代码语言:javascript
复制
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时,我可以看到以下内容:

代码语言:javascript
复制
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显示,但当我尝试十六进制转储时,我得到一个错误:

代码语言:javascript
复制
  hexdump: /sys/class/i2c-dev/i2c-2/device/2-0054/eeprom: Connection timed out

问题:

  1. 为什么它们显示为U的实际地址号?我知道你代表用过的资源?
  2. 为什么我没能读到那个EEPROM?我试过0x54-0x57的所有地址,但没有运气。我可以确认这些地址显示在/sys/class/i2c-dev/i2c-2/设备中,并且每个dir都包含以下内容: debian@beaglebone:~$ ls /sys/class/i2c-dev/i2c-2/device/2-0054/ -la总计0 drwxr-xr-x4根根0,10月26日,19:46。drwxr-xr-x8根0 10月26日19:46。drwxr xr-x3根根0 Oct 26 19:47 2-00540 lrwxrwxrwx 1根根0./bus/i2c/驱动器/19 24-rw命名lrwxrwxrwx 1根根0 10月26日19:47 ../../../../../../firmware/devicetree/base/ocp/i2c@4819c000/cape_eeprom0@54 drwxr-xr-x2根0 -> drwxr-x2根0 Oct 26 19:47电源lrwxrwxrwx 1根0 10月26日19:47子系统-> ././bus/i2c-rw-r-r-1根根4096 Oct 26 19:47

我可以看到映射到内核中的地址,但是当我试图释放eeprom时,它根本不起作用。我认为这应该是由内核设置的,因为它在BeagleBone SRM中提到过。我需要一个覆盖来添加到uboot中吗?

我所要做的就是从EEPROM中读取数据,就像我对“内部”的读取一样,以确认它是否有效。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-13 22:59:12

问题是,斗篷经理“霸占”了i23c-2上的那些地址。我们需要禁用斗篷经理,以释放这些地址。这样做之后,它在i2c-2下显示了0x57,所以它应该在以后才能工作。

请查看有关如何在BeagleBone上禁用Cape管理器的下列链接:

source=footer#!msg/beagleboard/NG8cDWuv2Y0/69vk5F5ZAgAJ)

确保编辑am335x-boneblack-uboot.dts文件,删除第11行中的包含并替换为以下内容:

代码语言:javascript
复制
 #include "am335x-bone-common-no-capemgr.dtsi"

注意,默认情况下,这将禁用您的i2c-2行,所以要么通过覆盖启用它,要么编辑AM335x-bone- enable no capemgr.dtsi& add &i2c0 (大约为245行):

代码语言:javascript
复制
&i2c2 {
    pinctrl-names = "default";
    pinctrl-0 = <&i2c2_pins>;

    status = "okay";
    clock-frequency = <100000>;
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53016270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档