工程师,我在linux上调试ad7193,总是显示读取ID错误,
ad7192 spi0.0: 设备识别查询失败 (0x3)
我自己添加代码打印,发现读取的ID一直是0xA3。
我在该行打印的前面添加读取其它寄存器的打印,发现与datasheet都不吻合。
ad_sd_read_reg( st->sd, AD7192_REG_STAT, 1, id); //读到
状态=0.x81
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; //communica
tions: 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%02xn", rd_buf[0]);
得到是数值如下,这些数值与datasheet上基本吻合。
STATUS: 0x00
MODE: 0x08 0x00 0x60
CONFIGURATION: 0x00 0x01 0x16
ID: 0xa2
请问linux驱动中ad7192.c的打印错误可能是什么原因,排查问题?