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.

[参考译文] TPS659037:GPADC 的输入阻抗

Guru**** 2390755 points


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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1066073/tps659037-the-input-impedance-of-the-gpadc

部件号:TPS659037
“线程:测试”中讨论的其它部件

大家好,我想了解 ADC 模块的输入阻抗,特别是在 GPADC_IN2中。  

根据我的实验,GPADC_IN2通道输入阻抗仅对地约为50kOhm。 我们有一个24.9K 欧姆电阻器,最高可达 GAPADC_VREF (1.25V,我们在软件中不断打开参考电压)。 当我将24.9K 欧姆电阻器的另一个引脚连接到 GPADC_IN2的输入时,输入电压变为923.6毫伏(据我的理解,它应该是1.25伏)。 当我开始在 GPADC_in2上进行转换时,我可以看到输入电压进一步下降到830.3mV (549us 的最后一次),这表明在转换过程中该通道的输入阻抗更低。

这是否是 GPADC_IN2上的预期行为? 如何管理此输入电压降?

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

    您好,

    我今天不在办公室,但明天应该能够研究这一点。 谢谢你。

    此致,

    亚历克斯

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

    YF,

    我不能说我过去曾看到过这样的行为。 您可以向我发送测试代码,用于启动转换吗? 我想知道在这段时间里是否有其他事情会被打开/关闭。 谢谢你。

    此致,

    亚历克斯

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

    Alex,您好,请查看我们的 SW 反馈。

    魔鬼:

            tps659038_gpadc: tps659038_gpadc {

                兼容 = "ti,Palmas-gpadc";

                中断 = <18 0

                              16 0

                              170> ;

                #IO-channe-cells = <1>;

                TI,通道0-current-microamp = <0>;

                TI,enable-extended-delay;

            };

     

    代码更改基于 SDK 06.03:

     

    差分-git a/drivers/IIO/ADC/Palmas gpadc.c b/drivers/IIO/ADC/Palmas gpadc.c

    指数69b9aff.89ad552 100644

    -- A/drivers/IIO/ADC/Palmas gpadc.c

    ++ b/drivers/IIO/ADC/Palms_gpadc.c.

    @@-27,6 + 27,8 @@

    #include <Linux/IIO/machine.h>

    #include <Linux/IIO/DRIVER.h>

     

    ##Define VREF_Always _On (#定义 VREF_Always _On)

    +

    #define MOD_NAME "Palmas-gpadc"

    #define Palms_ADC_conversion 超时 (毫秒_to_jiffies (5000))

    #define Palms_to_be 计算的0

    @@-144,6 +146,7 @@静态 int Palms_disable_auto_conversion (结构 Palms_gpadc * ADC)

           内部支架;

     

    +#ifndef VREF_Always _On

           RET = Palmas 更新位(ADC->Palmas,Palmas _GPADC_BASE,

                           Palms_GPADC_CTRL1,

                           Palms_GPADC_CTRL1_GPADC_Force,

    @@-152,6 +155,7 @@静态 int Palms_disable_auto_conversion (structt Palms_gpadc *ADC)

                   dev_err(ADC->dev,“GPADC_CTRL1更新失败:%d\n, ret);

                   返回支架;

           }

    +#endif

     

            RET = Palmas 更新位(ADC->Palmas,Palmas _GPADC_BASE,

                           Palms_GPADC_AUTO_CTRL,

    @@-165,11 +169,13 @@静态 int Palms_disable_auto_conversion (结构 Palms_gpadc * ADC)

     

            udelay (100);

     

    +#ifndef VREF_Always _On

           RET = Palmas 更新位(ADC->Palmas,Palmas _GPADC_BASE,

                           Palms_GPADC_CTRL1,

                           Palms_GPADC_CTRL1_GPADC_Force,0);

           如果(转塔< 0)

                   dev_err(ADC->dev,“GPADC_CTRL1更新失败:%d\n, ret);

    +#endif

     

            返回支架;

    }

    @@-261,6 +267,7 @@静态 int Palms_gpadc_enable(structt Palms_gpadc * ADC,int ADC_CHAN,

                   如果(转塔< 0)

                           dev_err(ADC->dev,"sw_select write failed:%d\n", ret);

     

    +#ifndef VREF_Always _On

                   RET = Palmas 更新位(ADC->Palmas,Palmas _GPADC_BASE,

                                   Palms_GPADC_CTRL1,

                                   Palms_GPADC_CTRL1_GPADC_Force,0);

    @@-268,6 +275,7 @@静态 int Palms_gpadc_enable(structt Palms_gpadc * ADC,int ADC_CHAN,

                           dev_err(ADC->dev,“CTRL1更新失败:%d\n", ret);

                           返回支架;

                   }

    +#endif

           }

     

            返回支架;

    @@-444,7 +452,7 @@静态构造 IIO_INFO Palms_gpadc_IIO_INFO ={

     

     静态构造 IIO_CHAN_SPEC Palms_gpadc_IIO_CHANNEL []={

           Palms_ADC_CHAN_IIO (IN0,IIO_Voltage,IIO_CHAN_INFO_Processed),

    -      Palms_ADC_CHAN_IIO (IN1,IIO_TEMP,IIO_CHAN_INFO_RAW),

    +      Palms_ADC_CHAN_IIO (IN1,IIO_Voltage,IIO_CHAN_INFO_Processed),

           Palms_ADC_CHAN_IIO (in2,IIO_voltage,IIO_CHAN_INFO_Processed),

           Palms_ADC_CHAN_IIO (in3,IIO_TEMP,IIO_CHAN_INFO_RAW),

           Palms_ADC_CHAN_IIO (IN4,IIO_Voltage,IIO_CHAN_INFO_Processed),

    @@-617,6 + 625,16 @@静态 int Palms_gpadc_probe (结构平台设备*pdev)

           IF (ADC->Wakeup1_enable || ADC->Wakeup2_enable)

                   device_wakeup_enable(&pdev->dev);

     

    +      ret = Palms_update_bits (ADC->Palmas,Palms_GPADC_BASE,

    +                      Palms_GPADC_CTRL1,

    +                      Palms_GPADC_CTRL1_GPADC_Force,

    +                      Palms_GPADC_CTRL1_GPADC_Force);

    +      IF (转台< 0){

    +              dev_err(ADC->dev,“GPADC_CTRL1更新失败:%d\n", ret);

    +              转到输出 IRQ 自动1可用;

    +      }

    +   休眠(10);

    +

           返回0;

     

     外出 IRQ_autos1_free:

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

    YF,

    好的,完美的,感谢细节。 我明天会调查这一情况,如果我发现有任何可疑情况,请告诉你。

    此致,

    亚历克斯

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

    YF,

    我将由我的设计团队来管理,看看他们是否能够在某些方面为未来的发展带来光彩。 我最初怀疑这是预期行为,但我想确认这是事实,然后再尝试找到解决问题的方法。 我们这个周末有一个 TI 假期,但我应该能够在下周的某个时候再次与您取得成功。

    此致,

    亚历克斯  

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

    谢谢 Alex,对您的调查结果很有期待。  

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

    你好,YF,

    由于今天的美国假期,我们的回答可能会有一些延迟。  

    谢谢。

    此致,

    Tomi Koskela

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

    YF,

    这种行为看起来并不意外。

    是的,GPADC_in2上有一个下拉菜单,该通道通过输入定标器。

    输入阻抗从17.5K 到23.5K 不等,标称阻抗为20K。

    刻度器输出(进入 ADC)将是 GPADC_IN2应用的输入的一半。

    基本上是一个各为10K 的分压器。

    以下是有关 ADC 的几个链接,这些链接应该有所帮助。 如果您需要更多信息,请告诉我。

    https://www.ti.com/document-viewer/TPS659039-Q1/datasheet/gpadc-12-bit-sigma-delta-adc-swcs095864#SWCS095864

    https://www.ti.com/lit/pdf/slia087