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.

[参考译文] ADS1261:ADS1261 PGA 启动时间

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1137089/ads1261-ads1261-pga-startup-time

器件型号:ADS1261

尊敬的 Bryan

请参阅两年前我的文章"ADS1261:寄存器写入后的延迟时间"。  我目前正在进行的项目略有不同、因为我有一个差分测量和三个单端测量。  和以前一样、我的程序几乎相同;  

WREG (chn1 (PGA、INPMUX))-->将 START 设置为高电平--> 等待 DRDY --> RDATA --> 将 START 设置为低电平--> WREG (chn2 (PGA、INPMUX)-->将 START 设置为高电平--> 等待 DRDY --> RDATA -->  设置为低电平-->等等

当然,这一进程是不断重复的。  在调试时、我注意到、第一个被采样的 chn1记录了该预期值。  但是、所有后续样本都不像以前那样。  对于差分 CHn1 测量、PGA 设置为16。  对于其他三 种测量、PGA 设置为旁路、这是 单端测量所需的。  如果我在将启动升高到高电平之前施加3.5ms 的延迟、那么一切都应该是这样的。  在数据表的9.3.2秒中可以看到、PGA 在旁路模式下关闭。   似乎需要一些时间来启动 PGA 并稳定至16增益。  请你的想法。  感谢你能抽出时间。  

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

    尊敬的 Dennis McGlumphy:

    您能不能帮助我了解您从 ADC 获得的值以及您期望的值? 查看每个配置的值表会有所帮助、包括输入电压、增益设置、VREF 电压、数据速率和 ADC 输出代码(以十六进制表示)。

    这将帮助我们了解如何将测量值与所需结果进行比较。

    此外、您是否愿意分享原理图? 如果您不想公开共享您的数据、您可以将鼠标悬停在我的姓名上并点击"请求好友"。 这将允许我们通过私人消息共享信息。

    布莱恩

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

    此外、还有一个问题:在开始每次单端测量之前、是否需要添加延迟? 或者、您是否只需要在差分测量和第一个单端测量之间添加一次延迟?

    布莱恩

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

    尊敬的 Bryan

    请参阅下面的代码片段。  它们将显示我的设置和数据采集过程。  SPI 主器件以5MHz 运行。

    这在主代码中。

    //###################################################################
    
            if(!startPressureSample)
            {
                startPressureSample = true;
                getBridgePressureData();
                DRDYcount = 0;
    
                while(DRDYcount < nunAvg)
                {
                    ;
                }
    
                ADC_Start(LOW);     // Stop ADC
                pressureDataAverage = 0;
                startPressureSample = false;
                for(i = 0; i< nunAvg; i++)
                {
                    pressureDataAverage += ADCrawCount[i];
                }
                pressureDataAverage = pressureDataAverage / nunAvg;
                NOP;
            }
    
            //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            if(!startVoltageSample)
            {
                startVoltageSample = true;
                getBridgeVoltageData();
                DRDYcount = 0;
    
                while(DRDYcount < nunAvg)
                {
                    ;
                }
    
                ADC_Start(LOW);     // Stop ADC
                voltageDataAverage = 0;
                startVoltageSample = false;
                for(i = 0; i< nunAvg; i++)
                {
                    voltageDataAverage += ADCrawCount[i];
                }
                voltageDataAverage = voltageDataAverage / nunAvg;
                NOP;
            }
    
            //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            if(!startCurrentSample)
            {
                startCurrentSample = true;
                getExcitationCurrentData();
                DRDYcount = 0;
    
                while(DRDYcount < nunAvg)
                {
                    ;
                }
    
                ADC_Start(LOW);     // Stop ADC
                currentDataAverage = 0;
                startCurrentSample = false;
                for(i = 0; i< nunAvg; i++)
                {
                    currentDataAverage += ADCrawCount[i];
                }
                currentDataAverage = currentDataAverage / nunAvg;
                NOP;
            }
    
            //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            if(!startTemperatureSample)
            {
                startTemperatureSample = true;
                getTemperatureData();
                DRDYcount = 0;
    
                while(DRDYcount < nunAvg)
                {
                    ;
                }
    
                ADC_Start(LOW);     // Stop ADC
                temperatureDataAverage = 0;
                startTemperatureSample = false;
                for(i = 0; i< nunAvg; i++)
                {
                    temperatureDataAverage += ADCrawCount[i];
                }
                temperatureDataAverage = temperatureDataAverage / nunAvg;
                NOP;
            }
    
    //###################################################################
    

    这是设置。   

    //
    // This function performs the basic ADC initialization.
    //
    void ADC_init(void)
    {
        ADC_RST();          // Reset ADC
        ADC_Start(LOW);     // Stop ADC
    
        //
        // Write the MODE0 register
        // Set the sample rate to 7200SPS and the filter to SINC3.
        // (MODE0_DR_7200_SPS | MODE0_SINC3) = 0x62
        //
        ADC_Write_Reg(REG_ADDR_MODE0, (MODE0_DR_14400_SPS | MODE0_SINC1));
    
        //
        // Write the MODE1 register
        // Set the conversion start delay to 50us, chop mode to off and convertion mode to continuous.
        // (MODE1_DELAY_50_uST | MODE1_CHOP_OFF | MODE1_CONVRT_CONTINUOUS) = 0x01
        //
        ADC_Write_Reg(REG_ADDR_MODE1, (MODE1_DELAY_50_uS | MODE1_CHOP_OFF | MODE1_CONVRT_CONTINUOUS));
    
        //
        // Write the MODE2 register
        // Enables AIN2 and AIN3 as outputs.
        // Connect AIN2 to GPIO0 and AIN3 to GPIO1
        // These IOs control the bridge excitation direction switches.
        // (MODE2_GPIOCON_AIN3_ENABLE_MASK | MODE2_GPIOCON_AIN2_ENABLE_MASK) = 0x30
        //
        ADC_Write_Reg(REG_ADDR_MODE2, (MODE2_GPIOCON_AIN3_ENABLE_MASK | MODE2_GPIOCON_AIN2_ENABLE_MASK));
    
        //
        // Write the MODE3 register
        // Set AIN3's output to high. AIN2's output is default low.
        // MODE3_GPIODAT_AIN3_DATA_MASK = 0x02
        //
        ADC_Write_Reg(REG_ADDR_MODE3, MODE3_GPIODAT_AIN3_DATA_MASK);
    
        //
        // Write the REF register
        // Enable the internal reference to enable the internal current source to be used.
        // NOTE: any time the REF register is changed, REF_REFENB_MASK must be ORed with the change
        // in order to maintain the IDAC1 and IDAC21 current outputs.
        // (REF_REFENB_MASK | REF_RMUXP_INT_P | REF_RMUXN_INT_N) = 0x10
        //
        ADC_Write_Reg(REG_ADDR_REF, (REF_REFENB_MASK | REF_RMUXP_INT_P | REF_RMUXN_INT_N));
    
        //
        // Write the IMUX1 and IMUX2 registers
        // Select IDAC1 and IDAC2 to be connected to AINCOM.
        // (IMUX_IMUX2_AINCOM | IMUX_IMUX1_AINCOM) = 0xAA
        //
        ADC_Write_Reg(REG_ADDR_IMUX, (IMUX_IMUX2_AINCOM | IMUX_IMUX1_AINCOM));
    
        //
        // Write the IMAG resister
        // Set the excitation current output level.
        // (IMAG_IMAG2_100_uA | IMAG_IMAG1_250_uA) = 0x23
        //
        ADC_Write_Reg(REG_ADDR_IMAG, (IMAG_IMAG2_100_uA | IMAG_IMAG1_250_uA));
    
        DEVICE_DELAY_US(5000);    // Macro to call SysCtl_delay() to achieve a delay in microseconds.
    }
    

    这些是在 main 中调用的函数。

    //
    // This function gets the Bridge pressure data
    //
    void getBridgePressureData(void)
    {
        //
        // Write the IMUX1 and IMUX2 registers
        // Select IDAC1 and IDAC2 to be connected to AINCOM.
        // (IMUX_IMUX2_AINCOM | IMUX_IMUX1_AINCOM) = 0xAA
        //
        ADC_Write_Reg(REG_ADDR_IMUX, (IMUX_IMUX2_AINCOM | IMUX_IMUX1_AINCOM));
    
        //
        // Write the IMAG register
        // Set IDAC1 output to 100uA and IDAC2 to 250uA
        // (IMAG_IMAG2_100_uA | IMAG_IMAG1_250_uA) = 0x23
        // NOTE: The excitation current is set to 350uA to ensure that the voltage
        // at the current output pin does not exceed the 3.9V limit for a maximum
        // bridge resistance of 6350 ohm @ 50°C and the bridge voltage does not exceed
        // the 2.5V reference.
        //
        ADC_Write_Reg(REG_ADDR_IMAG, (IMAG_IMAG2_100_uA | IMAG_IMAG1_250_uA));
    
        ADC_Write_Reg(REG_ADDR_INPMUX, (INPMUX_MUXP_AIN6 | INPMUX_MUXN_AIN7));
                                        // Set the ADC inputs
                                        // (INPMUX_MUXP_AIN6 | INPMUX_MUXN_AIN7) = 0x78
    
        ADC_Write_Reg(REG_ADDR_PGA, PGA_GAIN_16);  // PGA_GAIN_16 = 0x04
    //    ADC_Write_Reg(REG_ADDR_PGA, PGA_BYPASS_MASK);  // PGA_BYPASS_MASK = 0x80
    
        DEVICE_DELAY_US(5000);    // Macro to call SysCtl_delay() to achieve a delay in microseconds.
        ADC_Start(HIGH);    // Start ADC
    
    }
    
    //
    // This function gets the Bridge supply voltage data
    //
    void getBridgeVoltageData(void)
    {
        //
        // Write the IMUX1 and IMUX2 registers
        // Select IDAC1 and IDAC2 to be connected to AINCOM.
        // (IMUX_IMUX2_AINCOM | IMUX_IMUX1_AINCOM) = 0xAA
        //
    
        //
        // Write the IMAG register
        // Set IDAC1 output to 500uA and IDAC2 to 100uA
        // (IMAG_IMAG2_100_uA | IMAG_IMAG1_250_uA) = 0x23
        // NOTE: The excitation current is set to 350uA to ensure that the voltage
        // at the current output pin does not exceed the 3.9V limit for a maximum
        // bridge resistance of 6350 ohm @ 50°C and the bridge voltage does not exceed
        // the 2.5V reference.
        //
    
        ADC_Write_Reg(REG_ADDR_INPMUX, (INPMUX_MUXP_AIN4 | INPMUX_MUXN_AIN5));
                                        // Set the ADC inputs
                                        // (INPMUX_MUXP_AIN4 | INPMUX_MUXN_AIN5) = 0x56
    
        //
        // Because this is a single ended measurement, the PGA must be by past.
        //
        ADC_Write_Reg(REG_ADDR_PGA, PGA_BYPASS_MASK);  // PGA_BYPASS_MASK = 0x80
    
    
    //    DEVICE_DELAY_US(5000);    // Macro to call SysCtl_delay() to achieve a delay in microseconds.
        ADC_Start(HIGH);    // Start ADC
    
    }
    
    //
    // This function gets the excitation current data
    //
    void getExcitationCurrentData(void)
    {
        //
        // Write the IMUX1 and IMUX2 registers
        // Select IDAC1 and IDAC2 to be connected to AINCOM.
        // (IMUX_IMUX2_AINCOM | IMUX_IMUX1_AINCOM) = 0xAA
        //
    
        //
        // Write the IMAG register
        // Set IDAC1 output to 500uA and IDAC2 to 100uA
        // (IMAG_IMAG2_100_uA | IMAG_IMAG1_250_uA) = 0x23
        // NOTE: The excitation current is set to 600uA to ensure that the voltage
        // at the current output pin does not exceed the 3.9V limit for a maximum
        // bridge resistance of 6350 ohm @ 50°C and the bridge voltage does not exceed
        // the 2.5V reference.
        //
    
        ADC_Write_Reg(REG_ADDR_INPMUX, (INPMUX_MUXP_AIN0 | INPMUX_MUXN_AIN1));
                                        // Set the ADC inputs
                                        // (INPMUX_MUXP_AIN0 | INPMUX_MUXN_AIN1) = 0x12
    
        //
        // Because this is a single ended measurement, the PGA must be by past.
        //
        ADC_Write_Reg(REG_ADDR_PGA, PGA_BYPASS_MASK);  // PGA_BYPASS_MASK = 0x80
    
    
    //    DEVICE_DELAY_US(5000);    // Macro to call SysCtl_delay() to achieve a delay in microseconds.
        ADC_Start(HIGH);    // Start ADC
    
    }
    
    //
    // This function gets the excitation current data
    //
    void getTemperatureData(void)
    {
        //
        // Write the IMUX1 and IMUX2 registers
        // Select IDAC1 to be connected to AIN8.
        // (IMUX_IMUX2_NOCONNECT | IMUX_IMUX1_AIN8) = 0xF8
        //
        ADC_Write_Reg(REG_ADDR_IMUX, (IMUX_IMUX2_NOCONNECT | IMUX_IMUX1_AIN8));
    
        //
        // Write the IMAG register
        // Set IDAC1 output to 500uA
        // (IMAG_IMAG2_OFF | IMAG_IMAG1_500_uA) = 0x04
        //
        ADC_Write_Reg(REG_ADDR_IMAG, (IMAG_IMAG2_OFF | IMAG_IMAG1_500_uA));
    
        ADC_Write_Reg(REG_ADDR_INPMUX, (INPMUX_MUXP_AIN9 | INPMUX_MUXN_AIN1));
                                        // Set the ADC inputs
                                        // (INPMUX_MUXP_AIN9 | INPMUX_MUXN_AIN1) = 0xA2
    
    
        //
        // Because this is a single ended measurement, the PGA must be by past.
        //
        ADC_Write_Reg(REG_ADDR_PGA, PGA_BYPASS_MASK);  // PGA_BYPASS_MASK = 0x80
    
    
    //    DEVICE_DELAY_US(5000);    // Macro to call SysCtl_delay() to achieve a delay in microseconds.
        ADC_Start(HIGH);    // Start ADC
    
    }
    

    这是良好的数据、所有后续数据都是良好的。  这是使用"void getBridgePressureData (void)"函数中的5ms 延迟捕获的。  我已经进行了计算、以查看这些数据是否合理。  考虑到报告的机场压力和实验室中测量的温度、这些数值非常接近。  每次测量都是在 ISR 控制下采集的五个数据样本的平均值。   

    这是不带5ms 延迟的第一次通过。  压力数据是增益为16的差分测量值、符合预期。  

    这表示第二次和所有后续测量。

    注意:当我在"void getBridgeVoltageData (void)"函数中放置5ms 延迟时、以下测量结果良好。   

    e2e.ti.com/.../10mm_5F00_Top_2D00_Hat_5F00_Alternate-schematic-rev2-6_2D00_6_2D00_2022.pdf

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

    尊敬的 Dennis McGlumphy:

    感谢您发送这些信息、一些问题和意见:

    1. 您能否发送从 ADC 接收到的原始 ADC 代码、而不是平均数据? 您可以为每次测量发送收集的全部5个数据样本。 请同时包括良好和不良测量值、以便我可以在您采集样本时查看数据如何变化。 您的采样速度似乎非常快(14kSPS)、因此我不会期望每组5个样本有很大差异、但最好仔细检查。 我还想了解不良数据与良好数据之间的距离
    2. 要确认:您未启用压差测量的桥斩波器、对吗? 我没有看到您在函数调用中切换 GPIO、但我只是想进行确认
    3. 您正在使用内部 VREF 进行所有测量?
    4. 您之前的帖子说您使用3.5ms 作为延迟、而您发送的代码显示5ms。  您是否曾尝试缩短 延迟以查看良好和不良数据之间的截止位置?  
    5. 您是否尝试使用 MODE1寄存器中的 DELAY 位而不是使用 DELAY 函数调用? 我想知道这是否会产生不同的结果
    6. 我看到您只在 getBridgePressureData (void)中调用5ms delay 函数。 这一行代码似乎在其他函数中注释掉。 这是产生错误的配置、还是该配置工作正常?
    7. 您为什么将电流激励用于电桥而不是电压激励? 只是好奇……

    收到您的回复后、我可以更详细地了解这一点。 原理图或代码中的任何内容看起来都不正确、至少乍一看就可以了。

    布莱恩

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

    尊敬的 Bryan

    因为这对我来说是周五晚了、所以我在早上6:00来到这里。  我将在星期一再接回来。  但是、我现在可以回答一些问题。   

    [引用 userid="204916" URL"~/support/data-converters-group/data-converters/f/data-converters-forum/1137089/ads1261-ads1261-pga-startup-time/4220326 #4220326")确认:您未启用压差测量的桥式切碎器、对吗? 我没有看到您在函数调用中切换 GPIO、但我只是想确认

    不、我不使用斩波模式。 我必须每1ms 提供大量数据。  但是、如果我能够提高代码的效率并加快代码运行速度、我希望使用交流激励模式。  这将极大地降低该噪声级别。

    [引用 userid="204916" URL"~/support/data-converters-group/data-converters/f/data-converters-forum/1137089/ads1261-ads1261-pga-startup-time/4220326 #4220326"]您正在使用内部 VREF 进行所有测量?

    是的、我使用内部2.5V 基准作为测量基准。  我想使用5V 电源作为 我的测量基准、但 它太吵了。

    [引用 userid="204916" URL"~/support/data-converters-group/data-converters/f/data-converters-forum/1137089/ads1261-ads1261-pga-startup-time/4220326 #4220326">您之前的帖子显示您使用3.5ms 作为延迟、而您发送的代码显示5ms。  您是否曾尝试缩短 延迟以查看良好和不良数据之间的截止位置?  [/报价]

    是的、截止延迟时间似乎为3.5ms。  我在该示例中使用5ms、以确保一切都是稳定的。

    [引用 userid="204916" URL"~/support/data-converters-group/data-converters/f/data-converters-forum/1137089/ads1261-ads1261-pga-startup-time/4220326 #4220326">我发现您只在 getBridgePressureData (void)中调用5ms delay 函数。 这一行代码似乎在其他函数中注释掉。 这是产生错误的配置,还是该配置工作正常?

    这是有效的配置。  其他功能中的其他5ms 延迟是为了方便起见、因此我可以轻松地进行切换。

    [引用 userid="204916" URL"~/support/data-converters-group/data-converters/f/data-converters-forum/1137089/ads1261-ads1261-pga-startup-time/4220326 #4220326">您使用电流激励代替电压激励的任何原因是什么? 只是好奇...[/引述]

    我有两个 PCA、一个是恒定电流、另一个是恒定电压。  我这样做是因为一些压力制造商指定 恒定电流 、 而其他制造商 指定恒定电压。  我正在为多家供应商进行设计。  我特别认为、恒定电压是前进的道路。  欢迎你就此事提出意见。

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

    感谢您的快速反馈、Dennis。

    只要您可以、请告诉我原始 ADC 数据。

    布莱恩

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

    尊敬的 Bryan

    请参阅下面的原始数据。   

                

    上述数据是在5ms 延迟下获取的。

                    

    样本1                     样本2                     样本3

    上述数据是在没有5ms 延迟的情况下获取的。

             

    上述数据是在3.5ms 延迟下获取的。

                      

    上述数据是在 ADC、s MODE1寄存器中设置的4.49ms 延迟下获取的。  此延时时间仅在"void getBridgePressureData (void)"函数中设置、然后在以下"void getBridgeVoltageData (void)"函数中重置为50us。  函数调用的顺序如下:

    void getBridgePressureData (void)

    void getBridgeVoltageData (void)

    void getExcelationCurrentData (void)

    空 getTemperatureData (空)

    前三个函数的激励电流为350uA、输出为 AINCOM。  温度函数将激励电流更改为500uA、并将输出更改为 AIN8。  我仍然认为在更改激励电流及其输出时需要一些稳定时间。  不过、话虽如此、我在温度函数中设置了5ms 的延迟、但没有发现任何差异。  我本以为应该会有差异。  RTD 在温度范围内约为1100欧姆、其中电桥为4500欧姆。  当然、该电桥是半导体电桥、很可能不会以纯电阻方式运行。  此外、根据 SPICE 仿真、抗混叠滤波器的阶跃响应约为6ms、请参阅下文。  请你的想法。   

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

    尊敬的 Dennis:

    感谢您将此内容发送给我们、不同的数据集确实很有帮助

    一些观察结果:

    • 如果我查看在没有5ms 延迟的情况下获取的数据(标记为"Sample 1"、 "Sample 2"和 "Sample 3")、那么相对于5ms 数据、所有三个样本的温度数据看起来都是正确的(如果您不同意、请告诉我)
    • 2号和3号样品的压力、电压和电流数据不正确、但1号样品的压力、电压和电流数据正确
    • 样本#2和#3的压力、电压和电流数据似乎随着阵列指数的增加而增加、即 voltageData[1]> voltageData[0]、 voltageData[2]> voltageData[1]等。 但是、在这种情况下、数据永远不会达到稳定状态、也不会接近包含5ms 延迟时看到的值
    • 我还注意到、您更改了两个用于温度测量的 IDAC、然后在温度测量完成后将其恢复为电桥供电

    综合考虑所有这些观察结果、从电桥上移除电流激励似乎存在某种趋稳问题。 正如您提到 的、电桥不是纯电阻的、因此它可以是电桥本身。 或者、它也许是抗混叠 滤波器、正如您提到的、该滤波器的稳定时间为~6ms。

    为了检查这些问题对您的电路有何影响、您可以将差分电容器的尺寸从100nF 减小到更小的值、例如10nF。 如果抗混叠滤波器导致稳定问题、这应该会降低影响。

    您还可以考虑让两个 IDAC 始终保持开启状态、并将 IDAC1用于桥接器、将 IDAC2用于 RTD。 如果仅为电桥使用1个 IDAC、则无法获得350uA 输出电流、但250uA 或500uA 似乎可以用于您的系统。 选择此方法可消除任何抗混叠滤波器稳定问题、因为即使未测量电桥、也会始终通电。 即使这不是您为系统选择的最终配置、也值得进行测试、只需查看结果即可

    请告诉我您是否能够尝试这些解决方案以及每种解决方案的结果

    布莱恩

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

    尊敬的 Bryan

    [引用 userid="204916" URL"~/support/data-converters-group/data-converters/f/data-converters-forum/1137089/ads1261-ads1261-pga-startup-time/4221835 #4221835)]要检查这些问题对您的电路有何影响、您可以将差分电容器的尺寸从100nF 减小到更小的值、例如10nF。 如果抗混叠滤波器导致稳定问题、这应该会降低影响。

    我想我会尝试一下。  但是、这将需要一些时间、因为我必须将 PCA 发送出去进行返工。  通常我会自己做、但器件都是0201芯片电容器、我太老了、对这种工作再也不敢这么做。   

    [引用 userid="204916" URL"~/support/data-converters-group/data-converters/f/data-converters-forum/1137089/ads1261-ads1261-pga-startup-time/4221835 #4221835">您还可以考虑将两个 IDAC 始终保持开启状态、并将 IDAC1用于桥接器、将 IDAC2用于 RTD。 如果仅为电桥使用1个 IDAC、则无法获得350uA 输出电流、但250uA 或500uA 似乎可以用于您的系统。 选择此方法可消除任何抗混叠滤波器稳定问题、因为即使未测量电桥、也会始终通电。 即使这不是您为系统选择的最终配置、也值得进行测试、只需查看结果即可[/报价]

    我试过这种方法、它起了作用。  由于 ADC 输入范围、电桥的电流限制为350uA。  因此、我始终将 IDAC1保持在输出 AINCOM 处 、 并将电桥的 IDAC2始终保持在250uA、 将电桥的输出 AINCOM 切换为100uA、将 RTD 的输出 AIN8切换为500uA。  我仍然需要1ms 的延迟。  但是、这是可以接受的。  这也使我更好地了解了正在发生的情况。  很棒的建议  谢谢你。   

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

    尊敬的 Dennis:

    我很高兴我们的支持使您能够采取适当的步骤来解决您的问题

    如果您有任何疑问、请告诉我。

    布莱恩