You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

USRP N310通过I2C读取TCA6408A I/O扩展器报No such device or address错误

问题描述

我有一个为USRP N310交叉编译的应用程序,借助TCA9548 I²C开关,使用Linux内置I2C驱动对子板上的TCA6408 I/O扩展器进行数据读写,开发过程参考了内核官方的用户空间I2C驱动开发教程。该功能在ZC706嵌入式平台上测试运行正常,但在USRP平台上读取数据时出现故障,我的代码如下:

#include "i2c_dev.hpp" 

int main()  
{ 
    int i2cfd; 
    __s32 num; 

    //Opening i2c adapter 6  
    printf("Opening bus adapter\n");
    i2cfd = open("/dev/i2c-6", O_RDWR); 
    if ( i2cfd <0 )
    {
        printf("Failed to open /dev/i2c-6: %s\n",strerror( errno ));
        return (1);
    }

    //Instatiating three objects of IO_Expander class 
    IO_Expander dba; 

    //Reading data from the IO Expander 
    printf("Setting slave address of device\n");
    if (ioctl(i2cfd, I2C_SLAVE, 0x20) < 0) {
        printf("Error setting slave address:%s\n",strerror(errno));
        return(1);
    }

    printf("Reading data from the IO Expander for DB-A Object\n"); 
    num =dba.read_data(i2cfd, 0x00); 
    if (num<0){
        printf("Error reading data: %s\n",strerror(errno)); 
    }
    else { 
        printf("The input value is %d: \n", num); 
    }   
    printf("Leaving DB-A Object \n\n\n"); 

    //Closing the adapter 
    close(i2cfd); 
}

运行该应用程序时,尝试读取I/O扩展器数据阶段抛出错误字符串No such device or address。根据数据手册,设备的7位从站地址为010 0000(十六进制0x20),输入寄存器地址为0x00。目前我不清楚问题出在哪里,我是相关领域的新手,不知道下一步该如何排查。

故障排查解决方案
  • 优先检查TCA9548 I2C开关的通道配置
    USRP N310的子板I2C外设都是通过TCA9548开关挂载到主I2C总线的,这和你之前测试用的ZC706平台直接连接TCA6408的架构不同。访问TCA6408之前,你必须先向TCA9548的控制寄存器写入对应子板通道的掩码,打通上游I2C总线和下游子板的链路,否则直接访问下游设备肯定会报找不到设备的错误。
  • 用系统工具验证设备链路
    先交叉编译或者安装i2c-tools工具包到USRP的文件系统里,执行i2cdetect -y 6扫描/dev/i2c-6总线上的所有设备:
    • 如果能扫描到0x20的地址,说明硬件链路、开关配置都正常,问题出在软件读写逻辑
    • 如果扫不到0x20,先排查TCA9548的地址配置、通道掩码是否正确,再检查硬件连接
  • 检查read_data函数的实现逻辑
    你贴出的代码里没有展示IO_Expander类的read_data实现,标准的I2C寄存器读取流程是:先向从站写入要访问的寄存器地址(这里是0x00),再发起读操作。如果你直接调用read()系统调用读取设备,会因为没有指定寄存器地址导致访问错误。
  • 兜底检查项
    确认内核I2C驱动是否正常加载,USRP N310的设备树是否已经启用了I2C适配器6,不存在硬件复用冲突。

内容的提问来源于stack exchange,提问作者Tellrell White

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:48:03