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.

[参考译文] TMS320F28P650DH:ADC 内部电压基准和外部电压基准对于所有 ADC 模块是否相同?

Guru**** 2522770 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1359011/tms320f28p650dh-are-adc-internal-and-external-volatge-references-same-for-all-the-adc-modules

器件型号:TMS320F28P650DH

您好!

TRM 中提到、如果使用内部 Vref 模式、我们需要将 VREFHIA、VRFHIB 和 VREFHIC 短路。

然而,对于外部参考,没有提到这一点。

但是、我 在 C2000Wared for f28p65x 中找不到函数"void SetVREF (int module、int mode、int ref)"。此函数可用于其他处理器。

我找到的唯一函数如下: ADC_setVREF (uint32_t base、ADC_ReferenceMode refMode、ADC_ReferenceVoltage refVoltage)、它设置了与 ADC 模块无关的内部或外部基准。

我想知道所有 ADC 的基准电压是否相同。 如果不是、我在哪里可以找到用于根据模块设置基准的 SetVref 函数?

谢谢。

穆库尔

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

    您好、Mukul:

    base 参数决定要配置哪个 ADC 模块(ADCA_BASE、ADCB_BASE 或 ADCC_BASE)。

    ADC 具有独立的基准电压线。 内部基准缓冲器仅连接到 ADCA 的基准电压线、因此如果其他 ADC 需要使用内部基准、则要求外部连接。

    此致、
    伊袋

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

    您好!

    如果您看到  ADC_setVREF 的实现、它不使用作为参数传递的地址。 无论作为参数传递的地址如何、它都会修改模拟子系统寄存器。


    ADC_setVREF (uint32_t base、ADC_ReferenceMode refMode、
    ADC_ReferenceVoltage 参考电压)
    {
    //
    //检查参数。
    //
    断言(ADC_isBaseValid (base));

    EALLOW;
    //
    //配置基准模式(内部或外部)。
    //
    if (refMode == ADC_reference_internal)
    {
    HWREGH (ANALOGUESUBSYS_BASE + ASYSCTL_O_ANAREFCTL)&=
    ~(ASYSCTL_ANAREFCTL_ANAREFASEL | ASYSCTL_ANAREFCTL_ANAREFBSEL |
    ASYSCTL_ANAREFCTL_ANAREFCSEL);


    否则
    {
    HWREGH (ANALOGUESUBSYS_BASE + ASYSCTL_O_ANAREFCTL)|=
    (ASYSCTL_ANAREFCTL_ANAREFASEL | ASYSCTL_ANAREFCTL_ANAREFBSEL |
    ASYSCTL_ANAREFCTL_ANAREFCSEL);

    //
    //配置基准电压(3.3V 或2.5V)。
    //
    if (refVoltage == ADC_reference_3_3V)
    {
    HWREGH (ANALOGUESUBSYS_BASE + ASYSCTL_O_ANAREFCTL)&=
    ~(ASYSCTL_ANAREFCTL_ANAREFA2P5SEL | ASYSCTL_ANAREFCTL_ANAREFB2P5SEL |
    ASYSCTL_ANAREFCTL_ANAREFC2P5SEL);

    否则
    {
    HWREGH (ANALOGUESUBSYS_BASE + ASYSCTL_O_ANAREFCTL)|=
    (ASYSCTL_ANAREFCTL_ANAREFA2P5SEL | ASYSCTL_ANAREFCTL_ANAREFB2P5SEL |
    ASYSCTL_ANAREFCTL_ANAREFC2P5SEL);


    EDIS;

    我找不到 SetVref 函数? 可用吗?

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

    您好、Mukul:

    这是驱动程序中的一个错误。 我正在 向我们的软件团队提交请求单以修复它。 应根据提供的 ADCx_BASE 参数选择函数。

    同时、您可以使用 ASysCtl_setAnalogReferenceExternal (ASYSCTL_VREFHI [A+B|C])而不是 ADC_setVREF。

    此致、
    伊袋