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.

[参考译文] ADS1115:转换寄存器值的 LSB 不变、固定为0xFF。

Guru**** 2609285 points
Other Parts Discussed in Thread: ADS1115

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/670698/ads1115-lsb-of-conversion-register-value-not-changing-0xff-value-fixed

器件型号:ADS1115

我在 PIC18F 微控制器中工作,为差动模拟输入配置的代码,

在读取00:根据输入 MSB 值转换寄存器时,MSB 值将更新,但 LSB 值常量0xFF 我尝试了不同的配置 AN0到 AN3,但结果没有变化,下面我给出了我的代码。

int main()


unsigned char lsb、msb、a = 0;
unsigned int adcdata;
I2C_init();
I2C_Master_Start (A);
I2C_Master_Write (0x90);
while (SSP1CON2bits.ACKSTAT1);
I2C_Master_Write (0x01);
while (SSP1CON2bits.ACKSTAT1);
I2C_Master_Write (0x22);  /AN1和 AN3 /0x74、0x84
while (SSP1CON2bits.ACKSTAT1);
I2C_Master_Write (0x83);/0x83
while (SSP1CON2bits.ACKSTAT1);
I2C_Master_Stop ();
while (1)


// delay_ms (1);

I2C_Master_Start (A);
I2C_Master_Write (0x90);
while (SSP1CON2bits.ACKSTAT1);
I2C_Master_Write (0x00);
while (SSP1CON2bits.ACKSTAT1);
I2C_Master_Stop ();

// delay_ms (1);

I2C_Master_Start (A);

I2C_Master_Write (0x91);

while (SSP1CON2bits.ACKSTAT1);

MSB = I2C_Master_read ();
while (SSP1CON2bits.ACKDT);
LSB = I2C_Master_read ();
while (SSP1CON2bits.ACKDT);

I2C_Master_Stop ();

adcdata = lsb;
adcdata +=((int) msb)<< 8;

delay_ms (1);


返回(EXIT_SUCCESS);

此致、

 Murali

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


    我真的看不到代码有什么问题。 您似乎应该能够正确地对 ADS1115配置寄存器进行编程、并从转换寄存器读回。

    虽然我不确定获取 adcdata 和转换的位移部分、但它看起来也可以正常工作。

    您是否直接使用示波器或数字分析仪查看了 ADC 输出? 您应该首先确定这是 PIC 转换数据时的问题还是它从 ADS1115输出不正确。

    如果您能够让示波器捕获数据读取、请将其发布回此处、以便我们可以查看。


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

    您好、Joseph、

      

      我从朋友那里借用了逻辑分析仪,调试 SCK 信号时没有进入电路板。

    感谢您的重播

    此致、

    Murali