您尚未登录。

楼主 # 2022-06-21 11:39:52

SwordofMorning
会员
注册时间: 2022-05-20
已发帖子: 3
积分: 18

【I2C】当ADC输入大于1v时读取错误

小弟今天用Licheepi Nano读取ADS1110,当输入数据小于等于1V时,能得到正确的数据,但是当输入大于1v时,得到的数据则是不正确的。代码如下:

#define NUMS 10
char readbuf[NUMS];

int main(int argc, char** argv)
{
    int file = open("/dev/i2c-0", O_RDWR);

    // addr = 1001 xxx
    int addr = 0b1001000;

    if (file < 0)
    {
        printf("openfile error!\n");
        exit(1);
    }

    if (ioctl(file, I2C_SLAVE, addr) < 0)
    {
        printf("ioctl error!\n");
        exit(1);
    }

    // Debug Gain 1
    readbuf[0] = 0x0C;

    if (write(file, readbuf, 1) != 1)
    {
        printf("write error!\n");
        exit(1);
    }

    if (read(file, readbuf, 3) != 3)
    {
        printf("read error!\n");
        exit(1);
    }

    printf("%x %x %x\n", readbuf[0] & 0xff, readbuf[1] & 0xff, readbuf[2] & 0xff);

    close(file);

    exit(EXIT_SUCCESS);
}

上述代码中我写入0x0C,使ADS1110以15sps、16bits输出,同时增益为1。当输入为1V时,输出为`3E 00 0C`,即,3E00 / 32767 * 2.048;当输入为1.5V时,输出大约应为`5E 00 0C'左右,但是我得到的数据大约为`1D 00`。使用调试器的时候能正确读取,请问我这里是哪里没写对吗,感谢大佬指出。

离线

#1 2022-06-21 11:52:18

路漫漫
会员
注册时间: 2019-07-22
已发帖子: 65
积分: 54

Re: 【I2C】当ADC输入大于1v时读取错误

用逻辑分析仪非常方便定位问题.

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn