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.

[参考译文] ADS1015:ADS1015的误差结果

Guru**** 2515265 points
Other Parts Discussed in Thread: ADS1015

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/921623/ads1015-error-result-from-ads1015

器件型号:ADS1015

您好的团队:

您能否帮助解决以下问题:

我们最近对 客户 系统进行了测试。 但结果是有线、
 该设计 如下所示
image.png
AVIN0监控3.3V、AVIN1:1.8V AVIN2:1.0V AVIN3:1.2V

然后对于 AVIN1:我将配置寄存器(偏移量0x1)设置为0xc383 (单次触发),然后读取偏移量0x0得到0xf0ff  
               将配置寄存器(偏移量0x1)设置为0xc283 (连续),然后读取偏移量0x0得到0xe0ff  

因此,AVIN2:  配置寄存器(偏移量0x1)到0xd583 (单次触发),偏移量0x0得到0xf0ff  
             配置寄存器(偏移量0x1)到0x4483 (单次触发),偏移量0x0得到0xe0ff  


返回值不是转换的合理值
我  不理解任何不正确的设置或读取过程??

谢谢!

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

    Richard、


    对于寄存器设置、忽略比较器设置、以下是器件本应设置的配置:

    C383h:
    AINP = AIN0且 AINN = GND
    FSR =±4.096V
    单次模式或断电状态
    1600SPS

    C283h:
    AINP = AIN0且 AINN = GND
    FSR =±4.096V
    连续转换模式
    1600SPS

    D583h:
    AINP = AIN1、AINN = GND
    FSR =±2.048V (默认值)
    单次模式或断电状态(默认)
    1600SPS (默认值)

    4483h:
    AINP = AIN0且 AINN = GND
    FSR =±2.048V
    连续转换模式
    1600SPS

    我不确定最后一个是否正确、因为它现在设置为测量 AIN0而不是 AIN1。 无论如何、结果值不正确。

    首先、我将查看主器件和器件之间的 I2C 通信。 从器件读取应该是一个5字节的通信、我想查看所有的通信、读取 I2C 事务中的每个位。 这可以通过具有一些存储器的示波器来完成、但使用逻辑分析仪可能会更容易。 我还想指出、由于 ADS1015是12位器件、因此最后四位应为0000b。 根据您发布的 ADC 读数、我很好奇第一个字节和第二个字节是否交换。 这并不能解释为什么该值是关闭的、但它可能会在调试时提供一些线索。

    以防万一、我还会尝试读回配置寄存器。 这是一个很好的测试、可以确保读取正确进行。


    吴约瑟

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

    Richard、


    我有一段时间没有收到您的反馈、因此我想我会检查您的客户状态。 从我上一篇文章中可以看出、我建议您的客户检查 I2C 通信并显示其示波器图。 我还建议他们尝试读回配置寄存器、以确保他们能够读回已知值。

    我现在将关闭此帖子。 如果您的客户仍然存在此问题、请将问题发回、我们可以继续处理此问题。


    吴约瑟

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

    您好 Joseph:

    请帮帮我。

    遵循 spec 命令、

    我认为我们可以访问 ADS1015寄存器、但我们仍然对返回值有问题。

     

    以上是我们的 SCH 设计:

    对于 AIN0:VSENSE_BMC_P3V3_VIN

    测量 VSENSE_BMC_P3V3_VIN 值为1.781V

    写入配置寄存器:  BYTE[0]=0x48 Byte[1]=0x1 Byte[2]=0xC2  Byte[3]=0x83  

    写入命令:  BYTE[0]= 0x48 Byte [1]= 0x0

    读取转换寄存器:BYTE[0]=0x49 Byte[1]=0x4b Byte[2]=0x30  

     

    对于 AIN1:VSENSE_BMC_P1V8_VIN

    测量 VSENSE_BMC_P1V8_VIN 值为1.194V

    写入配置寄存器:  BYTE[0]= 0x48 Byte[1]= 0x1 Byte[2]= 0xD4  Byte[3]= 0x83  

    写入命令:  BYTE[0]= 0x48 Byte [1]= 0x0

    读取转换寄存器:  BYTE[0]= 0x49 Byte[1]= 0x37 Byte[2]= 0xf0   

     

     

    对于 AIN2:VSENSE_BMC_P1V0_VIN

    测量 VSENSE_BMC_P1V0_VIN 值为0.981V

    写入配置寄存器:  BYTE[0]=0x48 Byte[1]=0x1 Byte[2]=0xE4  Byte[3]=0x83  

    写入命令:  BYTE[0]= 0x48 Byte [1]= 0x0

    读取转换寄存器:  BYTE[0]=0x49 Byte[1]=0x70 Byte[2]=0x10   

     

     

    对于 AIN3:VSENSE_BMC_P1V2_VIN

    测量 VSENSE_BMC_P1V2_VIN 值为1.782V

    写入配置寄存器:  BYTE[0]=0x48 Byte[1]=0x1 Byte[2]=0xF4  Byte[3]=0x83  

    写入命令:  BYTE[0]= 0x48 Byte [1]= 0x0

    读取转换寄存器:  BYTE[0]=0x49 Byte[1]=0x3D Byte[2]=0xb0   

     

     

    传输返回值后、  

    AIN0实际电压为 :1.781 计数值为:2.408

    AIN1实际电压为 :1.194 计数值为:0.895  

    AIN2实际电压为 :0.981 计数值为:1.793  

    AIN3实际电压为: 1.782 计数值为:0.987   

     

    返回值似乎不合理、是否有任何配置错误?

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

    e2e.ti.com/.../for-the-figures.xlsx

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

    Richard、


    我认为数据是正确的、但它的输出顺序是错误的。 对于您的数据结果、您的客户将获得以下结果:
    ADC 数据:
    AIN0测量4B3
    AIN1测量37F
    AIN2测量701
    AIN3测量3dB

    但是、我认为数据应采用不同的顺序、换用第一个和第二个以及第三个和第四个:
    交换的 ADC 数据:
    AIN0测量37F - 895*4.096/2^11 = 1.790
    AIN1测量4B3 - 1203*2.048/2^11 = 1.203
    AIN2测量3dB - 1793*2.048/2^11 = 0.987
    AIN3测量701 - 987*2.047/2^11 = 1.793

    这些值接近客户测量的预期值:
    测量值:
    AIN0测量值1.781
    AIN1测量1.194
    AIN2测量0.981
    AIN3测量值1.782

    这里有几种可能:
    首先、它们可以在代码中以某种方式交换这些测量值。 我尚未看到他们的代码、但他们应该能够自行调试。 如果需要、它们可以一次隔离一个测量值、方法是仅启用一个通道并确保获得正确的读数。

    其次、我建议他们在单次转换模式下使用该器件。 我通常建议使用单次转换模式、然后等待特定时间从器件中读取。

    1:对配置寄存器进行编程、以使用正确的配置进行转换。
    2.等待数据周期+额外10%+ 20us。 这是进行转换所需的时间、转换时考虑到内部时钟的变化、并在最后一次转换后额外唤醒器件。
    3.读取最后一个数据。
    4.重复从1开始以启动下一个通道。

    数据速率为1600SPS 时、等待时间为708us。

    如果它们使用多个通道、我不会使用连续转换模式。 当配置被编程时、在进行中的转换完成前、配置不会被置位。 这可能会导致混淆器件何时收到配置以及何时收集数据。 即使您使用 ALERT/RDY 引脚指示转换完成的时间、连续转换模式的实现通常会更加混乱。


    吴约瑟