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.

[参考译文] ADS1248:ADS1248数据值错误

Guru**** 2614265 points
Other Parts Discussed in Thread: ADS1248, ADCPRO, ADS124S08

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/679050/ads1248-ads1248-data-value-error

器件型号:ADS1248
主题中讨论的其他器件: ADCProADS124S08

尊敬的 TI 团队:

我正在设计 ADS1248、并在测试过程中提出问题。

输入连接有问题。
我使用 AIN0 ~ AIN7进行连接、并打开/关闭 AIN 以确认该值。
但是、如果到 AIN0的连接丢失、Output 的值将会是错误的。
从 AIN1到 AIN7、我们确认即使连接断开也没有问题。
如果仅断开 AIN0、则会发生错误。
有必要检查 AIN0是否始终保持连接。

谢谢。

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


    我不确定我是否理解您的要求。 您是否询问当您浮空一个或多个输入时会发生什么情况、以及您为读取输出数据获得了什么? 当传感器烧坏后 ADC 的输入可能看起来断开时、您是否询问烧毁检测?

    我需要有关您如何连接该器件的更多信息、最好也提供原理图。 我还需要知道您是如何配置器件的(可能是通过回读配置寄存器)、以及如何打开和关闭输入通道。 对于每种错误且无错误的配置、我需要知道您正在获得什么数据以及您希望获得什么数据。

    如果您询问的是烧毁检测、并且您预计何时可以获得7FFFFh 的满量程读数、则取决于原理图、您连接的是什么、以及(有时)是否启用了烧毁检测电流源。 通常、您将启用烧毁电流源、这些电流源会将输入拉出以将其设置为超范围输入。 但是、我需要知道您测量的是什么以及如何设置它。


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

    尊敬的 Wu Joseph:

    连接电路图。

    我们使用 PT100、根据 Ch 连接 PT100 (如有必要)、然后断开连接。 但是、

    如果连接到 AIN0的 PT100断开连接、则会发生输出数据错误。

    如果您断开另一个输入端口,则没有问题。

    我想知道输入端口是否必须无条件连接 AIN0。

    *电路控制概念

    两个内部电流源 IEXC1和 IEXC2用于通过多路复用器+多路复用器将通道从1CH 更改为4CH、从而提供电流源

     在 REFP0和 REPN0之间插入820欧姆的电阻、将1.64V = 2mA * 820欧姆转换为通道间的基准电压

     我想在没有输入滤波器的情况下馈入 RTD 4通道。

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


    110Ω 您的电路图、您似乎已经设置了一个 ADC 读数、其中使用了一些用于硬件补偿的0 Ω 电阻器。 当 RTD 接近室温110Ω μ A 时、ADC 读数为0、并且随着温度升高或降低、ADC 读数将升高或降低。 测量时、应将成对的 IDAC 设置为驱动 AIN0和 AIN1、然后驱动 AIN2和 AIN3、然后驱动 AIN4和 AIN5、最后驱动 AIN6和 AIN7。

    我不确定当 AIN0 RTD 断开连接时、为什么它不适合您。 如果 AIN0被断开、并且测量了 AIN0/AIN1输入、输出读数应该显示满量程(7FFFFFh)。 未连接的 AIN0应上拉至正电源、而 AIN1仍应向基准电阻提供电流。 同样、这将提供满量程读数。

    但是其他读数(AIN2/AIN3、AIN4/AIN5和 AIN6/AIN7)应该都正确。 未连接的 AIN0不应影响其他通道。 当您说"AIN0已断开连接时、会发生输出数据错误"。 您遇到了什么输出数据错误? 您在读取的输入通道中、得到的是错误。 我需要您展示来自器件的输出数据。 您可能需要为每个数据提供一组包含配置设置的大量数据。

    无论如何、我还想查看数据速率、PGA 设置以及您从默认值更改的任何其他配置寄存器设置。


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

    尊敬的 Wu Joseph:

    ADS1248首选项
    >增益:4次
    >数据速率:20.
    > IDAC1:1mA (输出至与模拟输入 AIN0->AIN2->AIN4->AIN6相同的通道)
    > IDAC2:1mA (输出到与模拟输入 AIN1->AIN3->AIN5->AIN7相同的通道)

    获得的测试结果如下。

    测试电阻
    ADC 值处的电压
    异常情况下的 ADC 值(删除 CH0电阻时) 预期值
    CH0 :100欧姆 1f223e ff1893 意外的
    CH1:150欧姆 2ec2a1 eb8e2 2ec2a1
    CH2 :200欧姆 3e5dee 1e544c 3e5dee  
    CH3:250欧姆 4e0d8e 2e03f9 4e0d8e   
    原理图 

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

    Chun、

    首先、移除 CH0 RTD 后、CH0读数可能会意外。 问题是基准电压降至0、ADC 可能难以读取该条件(运行时基准电压应大于0.5V)。 要进行正确的测量、您需要使用系统监视器来检查基准电压、或使用内部基准来检查输入。

    至于其他结果、我仍然不确定问题是什么。 我首先要检查测试电阻器和基准电阻器上的实际电压(使用万用表进行测量)。 确保移除 CH0测试电阻后电压正确。

    查看我在测量过程中编译的数据:

    通道 测试分辨率 预期的 ADC ADC 读取 等效电压 异常 等效电压 偏移
    通道0 100 1F3831 1F223E 0.099725 FF1893 -0.0029 2009年
    通道1 150 2ED44A 2EC2A1 0.149779 EB8E2 0.047157 2009BF
    通道2. 200 3E7063 3E5DEE 0.1997/69 1E544C 0.097148 2009年2月
    通道3. 250 4E0C7C 4E0D8E 0.250013. 2E03F9 0.147393 200995

    前两列指示通道和测试电阻。 第三列显示了基于理想数字的预期输出、而第四列是数据。 第五列是基于1.64V 基准的测试电阻两端的等效电压。 所有这些数字都是正确的。

    最后三列涉及异常测量。 第6列是移除 CH0测试电阻器后的数据、第7列是假设基准电压为1.64V 时的等效电压。 根据万用表测量值检查这些值。 如果这些数字不正确、则可能需要调试电路以确定电流流向何处。

    请注意、最后一列标记为"Offset"、是对电路工作时从 ADC 读取的异常读取的减影。 看起来、所有数据大约在2009Axh 之前都已关闭。 看起来存在恒定的偏移误差。 这可能意味着偏移校准寄存器被设定为一个错误的值、或者在测量中有电流偏移。

    吴约瑟

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

    Chun、

    这个问题的另一个可能原因是硬件补偿、而不是偏移。

    我忘记了我提到过一组用于硬件补偿的110Ω Ω 电阻器。 虽然您在最新的原理图中没有显示它们、但它们会显示在您的首次发布中。 此硬件补偿可能是此偏移的原因、并为测量创建偏移2009Axh。 它们可能会在电路中如图所示:

    这四个110Ω Ω 电阻器与第一篇文章中显示的电阻器等效:

    让我们以 CH0为例。 如果没有该110Ω Ω 电阻器、ADC 测量值为:

    输出代码= PT100 * 1mA * 4 * 2^23 /(2mA * 820)

    但是、当存在电阻器时、等效的测量值为:

    输出代码=[(PT100*1mA)-(110Ω*1mA)]* 4 * 2^23 /(2mA * 820)

    100Ω PT100的值实际上为1 μ A、最终结果为:

    输出代码=(10Ω* 1mA)* 4 * 2^23 /(2mA * 820)= 204600d = 31F38h

    这个数字与我猜中的数字有点不同。 如果电路确实具有这些电阻器、它们可能相当于102.6Ω Ω 等效电阻器。 无论如何、这是另一个需要检查的问题。 电路可能与描述的不同。 询问客户有关110Ω Ω 电阻器以及如何设置测量值。增益设置可能存在一些差异、因此请在其说明中详细说明。

    吴约瑟

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

    以下是程序控制概念。

    初始化语法
     
     1、基准0设置
     2.电流输出设置
     3.通道设置
     4.校准
     5.启动 RDATAC

    ================================================================================================================ ===========================
         ADS1248SetStart (1);
        ADS1248SetReset (1);
       
        ADS1248SetVoltageReference (0x00);// set_Vref ("0");// ref W0
        ADS1248SetDataRate (0x02);//数据速率20
        ADS1248SetGPIOConfig (0x00);
          ADS1248SetGPIODir (0xff);// SET_Gio ('f'、'f');// GPIO // uff
        // set_burnout ('0');// N0
        ADS1248SetBias (0b00000000);// SET_BIAS ('A'、'A');// OAA // VCC Bise 2B 10101010
        ADS1248SetSystemMonitor (0x00);//内部模式// M0
        // ADS1248SetBias (0x00);// SET_BIAS ('A'、'A');// OAA // VCC Bise 2B 10101010
        ADS1248SetIntRef (0x01);// set_Iref ('0');// e1 // sleclect ref 关闭
        ADS1248SetCurrentDACOutput (0x06);// SET_CURRENT ('6');// I0 //电流源电流1mA
        
        ADS1248SetIDACRouting (0、0);// SET_IDAC ('f'、0);// x0 //电流选择0关闭
        ADS1248SetIDACRouting (1、1);// SET_IDAC ('f'、1);// y0 //电流选择1关闭
        
        ADS1248SetChannel (0、0);// set_ch ('0'、0);
        ADS1248SetChannel (1、1);// set_ch ('1'、1);
        
         ADS1248SetGain (0x02);//增益4 // p4
       
        ADS1248SendSELFOCAL ();
        ADS1248SendRDATAC ();

     
    ================================================================================================================ ===========================
      控制迭代(RDATAC 语法)
    电流输出通道变化(2通道、3通道、4通道、1通道循环)
    2.MUX 通道更改(2通道、3通道、4通道、1通道周期)
    ================================================================================================================ ===========================
    unsigned char channel [4]={0x13、0x25、0x37、0x01};//更改 MUX channel 2CH、3CH、4CH、1CH
    unsigned char cmd [4]={0x23、0x45、0x67、0x01};//更改电流输出通道2CH、3CH、4CH、1CH
     
     重复语法
        {
         ADS1248AssertCS (0);
        
        adc.adcdata [ch].word = SPI_Exchange8位(0x4B);
        adc.adcdata [ch].word =(adc.adcdata [ch].word << 8)| SPI_Exchange8位(0x00);
        adc.adcdata [ch].word =(adc.adcdata [ch].word << 8)| SPI_Exchange8位(cmd [ch]);
            
        SPI_Exchange8位(0x40);
        SPI_Exchange8位(0x00);
        SPI_Exchange8位(通道[CH]);
     
        ADS1248AssertCS (1);// CS 变为高电平
        }

    ----------------------------------------------------------------------

    答案中提到的偏移部分是否是应用校准时可能发生的现象之一?

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


    我在代码的过程中看不到任何会导致问题的东西。 唯一可能是问题的是发出 SYSOCAL 而不是 SELFOCAL。 值存储将接近第一个设置的测量值、这接近于您所拥有的值。 但是、我看不到您使用这一小段代码发送的确切命令。

    但是、在我的最后两篇文章中、我提到了有关测量本身的几个方面。 您的电路板上是否有110Ω Ω 电阻器? 如果您有这些电阻器、它们是否位于我在电路板上绘制它们的位置? 在进行测量时、您是否测量了每个元件上的电压? 必须测量 ADC 看到的电压、以便将其与应输出的 ADC 转换数据进行比较。


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

    尊敬的 Wu Joseph:

    最终电路中没有100欧姆。

    测量的数据也是最终电路的结果。

    由 Ch 测量的电压值

    
    
    测试电阻
    正常电压值
    异常时的电压值(删除 CH0电阻时)
    CH0 :100欧姆 100mV (ADS1248 /11_12引脚) 0V (ADS1248 / 11_12引脚)
    CH1:150欧姆 150mV (ADS1248 / 17_18引脚) 150mV (ADS1248 / 17_18引脚)
    CH2 :200欧姆 200mV (ADS1248 / 13_14引脚) 200mV (ADS1248 / 13_14引脚)
    CH3:250欧姆 250mV (ADS1248 / 15_16引脚) 250mV (ADS1248 / 15_16引脚)

    基准电压:1.64V (两端的 R57_820Ohm 测量值)

    软件配置


    1->1. 参考0设置 2。 电流输出设置 3. 通道设置 4. 校准5.  启动 RDATAC

    此问题是由上述设置引起的。

    2->1. 电流输出设置 2。 通道设置 3. 启动 RDATAC

    如果您配置上述设置、它将正常工作。 但是、我们不能对每个通道使用2。

    这需要很长时间。

    AIN0 / 1是否可以设置为基准通道并导致问题?

    谢谢。

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

    Chun、


    很抱歉、我在上周末没有回复您的帖子。

    查看这些数据、我对测试有更多的疑问。 在异常读数中、是否移除了 CH0处的 RTD? 还是 RTD 设置为0Ω Ω? 我认为这是为了移除 RTD、但看起来更像0Ω。

    在上一篇文章中、删除 CH0电阻后、数据显示0mV。 如果移除电阻器、则 REF 电压应为0.82V、而不是1.64V。 此外、它们应检查 CH0处 RTD 引线1和3的电压。 导联1应由断开的 IDAC 上拉、因此应靠近正电源(可能接近4.9V)。 引线3仍应连接到基准电阻器的顶部(0.82V)、引线2应悬空。 如果 CH0电阻器是0Ω Ω 电阻器、则其上的电压将为0V、基准电压将为1.64V。 在 CH0异常测量中、基准电阻是0.82V 还是1.64V?

    但是、即使在之前帖子中的异常数据中、输出电压看起来也会提供值 FF1893h。 如果 μ 100Ω 仍在那里、并且我提到的偏移也在那里、这仍然是合理的。

    由于偏移值始终显示为~2009Ax、我认为当客户获得异常读数时、应立即读取偏移校准寄存器(OFC)。 这看起来像是他们得到的错误。 我在上一个帖子中提到了这一点、但看起来他们运行了 SYSOCAL (60h)、但应该运行了 SELFOCAL (62h)进行校准。 您发布的代码中未显示精确校准、这可能很重要。 如果他们使用了错误的校准、这可能是错误。 如果是这种情况、则偏移校准寄存器中的值非常大且错误。 如果他们获得异常读数、那么了解他们在 OFC 中的值非常重要。

    我不理解您的最后一个问题:"是否可以将 AIN0/1设置为基准通道并导致故障?" ADS1248仅将 REFP0/REFN0和 REFP1/REFN1用作基准输入。 我确定 AIN0/1是如何成为基准通道的。 您能解释一下您对该问题的看法吗?


    吴约瑟

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

    尊敬的 Wu Joseph:

    1.问题"是否可以将 AIN0 / 1设置为基准通道以导致问题?" 是错误的问题。

    2. SELFCAL 正在运行。

      如果您看到上述代码、请在读取数据之前运行 SELFOCAL。

    ============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

      ADS1248SetStart (1);

      ADS1248SetReset (1);

      ADS1248SetVoltageReference (0x00);// set_Vref ("0");// ref W0

      ADS1248SetDataRate (0x02);//数据速率20

      ADS1248SetGPIOConfig (0x00);

       ADS1248SetGPIODir (0xff);// SET_Gio ('f'、'f');// GPIO // uff

      // set_burnout ('0');// N0

      ADS1248SetBias (0b00000000);// SET_BIAS ('A'、'A');// OAA // VCC Bise 2B 10101010

      ADS1248SetSystemMonitor (0x00);//内部模式// M0

      // ADS1248SetBias (0x00);// SET_BIAS ('A'、'A');// OAA // VCC Bise 2B 10101010

      ADS1248SetIntRef (0x01);// set_Iref ('0');// e1 // sleclect ref 关闭

      ADS1248SetCurrentDACOutput (0x06);// SET_CURRENT ('6');// I0 //电流源电流1mA

      ADS1248SetIDACRouting (0、0);// SET_IDAC ('f'、0);// x0 //电流选择0关闭

      ADS1248SetIDACRouting (1、1);// SET_IDAC ('f'、1);// y0 //电流选择1关闭

      ADS1248SetChannel (0、0);// set_ch ('0'、0);

      ADS1248SetChannel (1、1);// set_ch ('1'、1);

      ADS1248SetGain (0x02);//增益4 // p4

      ADS1248SendSELFOCAL ();

      ADS1248SendRDATAC ();

    ============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

    3. 未设置偏移。

    Ch0的 RTD 是打开的数据。

      我们通过逐通道连接电阻器而不是 RTD 进行测试来进行测试。 请参见下面的照片。

      

    4通道连接 
    
    

    3通道连接

    谢谢。

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


    明天我可能还需要评论更多内容、但我只会回答您在上一篇帖子中提出的一些问题/评论。

    好的、如果问题不对、我将跳过这个问题。

    我可以看到代码显示为"ADS1248SendSELFOCAL ();"、但我看不到写入器件的实际代码。 正如我在上一篇文章中提到的、他们可能写了60h 而不是62h、这将是 SYSOCAL 而不是 SELFOCAL。

    在每次读取 CH0、CH1、CH2、CH3周期之前、我也会读取 OFC。 现在、我想确保器件在 AINP-AINN 上看到什么以及 REFP0-REFN0上看到什么基准。 此时、除了偏移值外、值看起来是正确的、我需要知道这是 OFC 中设置的偏移还是 RTD 电阻中的电流损耗。

    好的、我认为我理解测量方法。 我认为我在测量序列中有足够的详细信息、可以尝试重复客户正在做的事情。 但是、我需要非常缓慢地进行更改。 我将使用 ADS1248EVM 尝试复制您的测量值。 它应该给我一个准确的设置、并且我应该能够为每个步骤提供值。


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

    Chun、

    我想我知道发生了什么。 我使用 ADCPro 和 ADS1248EVM 运行了客户的配置序列。 问题是在没有 CH0电阻器时进行偏移校准期间。

    校准的工作原理是将输入短接在一起以获得偏移电压的测量值。 此测量值将存储并从后续测量中减去、以消除任何偏移。 但是、当运行校准时、器件需要正常运行。 下面是我设置测试的方法:

    使用 EVM、我使用测试电阻器设置器件。

    测试电阻器的设置与客户设置的设置类似。  我使用100Ω Ω、150Ω Ω、200Ω Ω、249Ω Ω 和825Ω Ω 的基准电阻器。 下面是测试电阻器的特写:

    我运行整个设置、设置输入和 IDAC 配置、然后运行自偏移校准:

    得到的 SELFOCAL 值看起来正确、接近0 (但在这种情况下为负)。

    然后我重新开始。 首先、我移除 CH0电阻器。 然后、我关闭软件、拔下 EVM 插头、然后重新启动整个设置。 此处是移除 CH0电阻器后的 EVM 图片。

    我运行相同的设置、但在校准中发现问题。 结果如下

    问题是、当运行偏移校准时、器件不再正常工作。 输入仍然短路、并将失调电压与基准电压进行比较以进行测量。 但是、由于 CH0电阻器缺失、没有任何 IDAC 电流会使其连接到基准电阻器。 因此基准电压为0。 这会产生完全错误的偏移结果。 这里的结果是6E38ED、但它可以是任何值。 如果基准电阻器的引线1断开、则只有一个 IDAC 电流到达基准电阻器。 得到的基准电压将为0.82V。 这仍然是错误的。 校准期间、偏移将使用0.82V 基准电压测量、此时通常为1.64V。 如果基准电压只有那么大、则偏移将显示为两倍。 在运行校准时、电路板应正常工作。

    为了确保器件正常运行并且 IDAC 电流达到基准电阻、客户可以使用系统监控器。 让 ADC 使用内部基准并测量基准电压。 如果基准接近预期值、则可以运行偏移校准、如果基准不接近预期值、则更改通道、直到发现基准是预期值。 然后运行自偏移校准。

    吴约瑟

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

    感谢快速确认。

    有一个部分不能很好地理解、我将再问一个问题。

    您是否在每次更改信道时都询问 SELFOCAL?

    对于我们来说、SELFOCAL 似乎类似于校准。

    您不能在每次更改信道时执行校准。

    原因是、如果我们校准每个通道的变化、我们无法在所需的时间获得数据值。

    另一种方法是使用外部基准、但成本上升存在问题。

    因此、问题是否是由于 Ch0的连接短路而导致的?基准电压是否动摇?

    您能否判断 ADS124S08是否有相同的症状?

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


    我只在每组测量的开始运行 SELFOCAL。 我在每次通道更改之前都没有运行它。 通常、当器件配置正确时、您只需运行一次 SELFOCAL、而无需针对通道间的变化执行此操作。 但是、如果您更改 PGA 增益或基准、我会重做 SELFOCAL。

    我认为您无需使用外部基准。 在运行 SELFOCAL 之前、您只需确保器件正常运行。 同样、您可以使用内部基准来验证 REF0输入是否正确。

    ADS124S08将具有相同类型的问题。 如果未插入 CH0三线 RTD、来自 IDAC1和 IDAC2的电流将不会到达基准电阻器。 在这种情况下、基准电压将为0V、并且自偏移校准(此器件中为 SYOCAL)将具有类似的误差。


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

    非常感谢。