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.

[参考译文] MSP432P401M:当 ADC 与电阻器连接时、ADC 输入引脚的电压会下降

Guru**** 2563960 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/604611/msp432p401m-the-voltage-of-adc-input-pin-drops-when-adc-connect-with-resistor

器件型号:MSP432P401M

尊敬的专家

我的客户在 MSP432的 ADC 上连接10K 欧姆和 Vcc 以及10K 欧姆接地。

ADC 值应该是 Vcc/2 (4096/2)、但是当 ADC 每次读取 ADC 输入引脚时、它们会下降。

因此、它们始终读取小于 Vcc/2的值、并且无法读取正确的值 Vcc/2。

如果它们移除电阻器、则 ADC 的电压正确(例如、如果我们直接将 Vcc 与 ADC 连接、则将获得正确的 Vcc)。  

他们在 MSP432 Launch Pad 上对其进行了测试、因此这不是客户 PCB 上的布局问题。

自客户将外部电阻器用于压力传感器以来、必须使用外部电阻器。

这是由于 MSP432上的 ADC 内部架构造成的吗?

当有电阻器连接到 ADC 时、我们如何获得正确的电压?

感谢您的支持。

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

    您是否仅使用 ADC 进行测试、或者您是否使用了万用表?

    您使用哪些命令来设置 GPIO 引脚? 您是否有内部下拉电阻器?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Keith

    这是 GPIO 和 ADC 的设置
    该压降在 ADC 引脚上、与 GPIO 是否相关?
    感谢您的支持。

    /*正在初始化 ADC */
    MAP_ADC14_enableModule();
    MAP_ADC14_initModule (ADC_CLOCKSOURCE_MCLK、ADC_PREDIVIDER_64、ADC_DIVIDER_8、0);//初始化 ADC (MCLK/64/8)*/
    MAP_GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P5、GPIO_PIN5、GPIO_TIVE_MODULE_Function);

    //在 NVIC 模块中启用 ADC 中断
    NVIC->ISER[0]= 1 <<(ADC14_IRQn)& 31);

    //采样时间、S&H=16、ADC14打开
    ADC14->CTL0 = ADC14_CTL0_SHT0_2 | ADC14_CTL0_SHP | ADC14_CTL0_ON;
    ADC14->CTL1 = ADC14_CTL1_RES_2 | ADC14_CTL1_RES_2; //使用采样计时器、14位转换结果(14位)
    //ADC14->CTL1 = ADC14_CTL1_RES_2;//使用采样计时器,12位转换结果(12位)
    //ADC14->CTL1 = ADC14_CTL1_RES_1;//使用采样计时器、10位转换结果(10位)

    ADC14->MCTL[0]|= ADC14_MCTLN_INCH_0;// A0 ADC 输入选择;Vref=AVCC
    //ADC14->MCTL[0]|= ADC14_MCTLN_INCH_1;// A1 ADC 输入选择;Vref=AVCC
    ADC14->IER0 |= ADC14_IER0_IE0; //启用 ADC 转换完成中断

    SCB->SCR &=~SCB_SCR_SLEEPONEXIT_MSK;//从 ISR 退出时唤醒

    ADC14->CTL0&=((uint32_t) 0xFFFFFFFD);
    ADC14->MCTL[0]&=((uint32_t) 0xFFFFFFE0);/C8 P5.5
    ADC14->MCTL[0]|= ADC14_MCTLN_INCH_0;

    //GPIO
    //Row20:A8 => P6.4
    MAP_GPIO_setDrivestrengthH (GPIO_PORT_P6、GPIO_PIN4);
    MAP_GPIO_setAsOutputPin (GPIO_PORT_P6、GPIO_PIN4);
    MAP_GPIO_setOutputLowOnPin (GPIO_PORT_P6、GPIO_PIN4);
    MAP_GPIO_setOutputHighOnPin (GPIO_PORT_P6、GPIO_PIN4);
    ADC_Bufferindx = 0;
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Jefferey、

    它们经历的电压下降和上升可能是由内部电容引起的。 因此、客户需要考虑432 TRM 第20.2.6.2节中涉及的一些采样时序注意事项。 当 SAMPCON 变为1时、所选输入可在采样时间(tsample)内建模为一个 RC 低通滤波器。 因此,需要一个公式来计算 n 位转换的最小采样时间(tsample),在此示例中,我将假定客户正在执行14位分辨率。

    Tsample 的公式如下所示

    下面的一些值是从数据表(第5.25.6节)和下面的客户表中计算得出的

    • 在这种情况下、客户在 ADC 引脚上有一个电阻分压器、因此、Rs 将等于他们与 R2并联的 R1 [Rs =(R1 * R2/(R1 + R2))]。 为此,我将使用 R1和 R2 = 10K 欧姆的情形。 因此 Rs = 5K 欧姆。
    • 根据数据表、Ri 是内部多路复用器开启输入电阻。 这可能因 Vcc 而异、但由于这是一个 LaunchPad、它们可能处于1.8V 至3.7V 范围内、这意味着 Ri 上的最大值为1K 欧姆。 (数据表第5.25.6节)
    • Ci 是单个端子的输入电容、其中使用的最大值为15pF (数据表第5.25.6节)
    • 它们没有 Cpext。
    • Cpint 是 I/O 的内部寄生电容、通常为5pF
    • N 可能为14位、但是 ADC 的分辨率、因此 tsample 会随分辨率而变化。

    Tsample >=(14+1)* ln (2)*[(5000 + 1000)* 15*10^-12 + 5000 *(5*10^-12)]

    Tsample >=~1.19us

    请确保他们在使用 ADC 进行操作/设计时考虑到这一点。 另外、请让他们阅读/查看我提到的部分、因为它们会继续与 ADC 配合使用。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此外、关于您提供的用于编辑 SCR 寄存器的行:
    SCB->SCR &=~SCB_SCR_SLEEPONEXIT_MSK;//从 ISR 退出时唤醒

    请确保他们参考此应用手册、了解在 Cortex-M4器件上修改 SCR 寄存器的最佳做法。
    www.ti.com/.../slaa739
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Evan

    是的、感谢您的建议。

    通过降低 ADC 采样率可以解决此问题。