Post Go back to editing

ad7193 linux驱动读取ID错误

工程师,我在linux上调试ad7193,总是显示读取ID错误,

ad7192 spi0.0: device ID query failed (0x3)

我自己添加代码打印,发现读取的ID一直是0xA3。

我在该行打印的前面添加读取其它寄存器的打印,发现与datasheet都不吻合。

ad_sd_read_reg(&st->sd, AD7192_REG_STAT, 1, &id);          //读到 STAT=0x81

ad_sd_read_reg(&st->sd, AD7192_REG_MODE, 1, &id);      //读到 MODE=0x8

ad_sd_read_reg(&st->sd, AD7192_REG_CONF, 1, &id);      //读到 CONF=0x61

在应用层通过/dev/spidev0.0 读取:
        wr_buf[0] = 0x40;               //communications: read STATUS
        if(write(fd, wr_buf, 1) != 1)
                perror("Write Error");
        if(read(fd, rd_buf, 1) != 1)
                perror("Read Error");
        else
                printf("STATUS: 0x%02x\n", rd_buf[0]);
得到是数值如下,这些数值与datasheet上基本吻合。
STATUS: 0x00
MODE: 0x08 0x00 0x60
CONFIGURATION: 0x00 0x01 0x16
ID: 0xa2


请问linux驱动中ad7192.c的打印错误可能是什么原因,排查问题?