This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 在 EEPROM 上写入时出现远程 I/O 错误

Guru**** 2563730 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/612858/remote-i-o-error-in-case-of-writing-on-eeprom

您好! 
我正在使用 phycore-AM57x 评估套件。 我无法将任何数据写入 M24C32 EEPROM。 执行代码时的效率
"写入 i2c 总线失败:远程 I/O 错误"。 请指导我解决此问题。 我的代码如下所示。

#include #include #include #include #include #include #include #define MAG_ADDRESS (0x50 >> 1) #define LSM303_WH_AM_I_M (0x0F) int main () { char buf[10]; const char * DevName ="/dev/i2c-0; //打开 I2C 总线 int file = open (DevName、O_RDWR); 如果(file ==1) { Perror (DevName); 退出(1); } //指定从器件的地址。 if (ioctl (file、I2C_SLAVE、MAG_ADDRESS)< 0) { perror ("未能获得总线访问和/或与从器件通信"); 退出(1); } //向从器件写入一个字节。 buf[0]= LSM303_WHO _AM_I_M; if (write (file、buf、1)!= 1) { perror ("无法写入 i2c 总线"); 退出(1); } //从从从器件读取一个字节。 如果(读取(文件、buf、1)!= 1) { perror ("无法从 i2c 总线读取"); 退出(1); } printf ("结果:0x%02x\n"、buf[0]); 返回0; }
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    使用 i2cdetect、i2cget 和 i2cset 命令会产生什么结果?

    您是否能够使用 Get 和 Set 命令查看连接到 i2c 的器件、进行读取/写入?

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    root@am57xx-phycore-RDK:~ i2cdetect -l
    I2C-0  i2c            OMAP I2C 适配器                       I2C 适配器
    I2C-2  I2C            OMAP I2C 适配                       器 I2C 适配器
    I2C-3  I2C            OMAP I2C 适配                       器 I2C 适配器

    root@am57xx-phycore-RDK:~# i2cdetect -F 0
    /dev/i2c-0实现的功能:
    I2C                             是的
    SMBus 快速指令             号
    SMBus 发送字节                 是
    SMBus 接收字节              是
    SMBus 写入字节                是
    SMBus 读取字节                 是
    SMBus 写入字                是
    SMBus 读取字                 是
    SMBus 进程调用              是                                            
    SMBus 块写入               是                                            
    SMBus 块读取                号                                             
    SMBus 块进程调用        号                                             
    SMBus PEC 是                                                                   
    I2C 块写入                 是                                            
    I2C 块读取                  是

    root@am57xx-phycore-RDK:~# i2cget 0 0x28 0x0 b                                 
    警告! 该程序会使您的 I2C 总线混淆、导致数据丢失和更糟糕的情况!      
    我将读取器件文件/dev/i2c-0、芯片地址0x28、数据地址        
    0x00、使用读取字节数据。                                                     
    继续? [y/n]、是                                                               
    错误:读取失败       

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    很抱歉耽误你的时间。 初始化 i2c 时、您可能遇到问题。
    您能否共享相关的 DTS 器件(i2c pinmux、然后&i2c 节点)?
    您是否在 i2c 节点中描述了 EEPROM、例如:

    i2c0{(&I)
    状态="正常";
    …………
    EEPROM:EEPROM@0x28{
    兼容="at、24c32";
    reg =<0x28>;
    };
    };

    此致、
    Yordan