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.

[参考译文] LAUNCHXL-F28379D:ADC 范围和同步

Guru**** 2582235 points
Other Parts Discussed in Thread: LAUNCHXL-F28379D

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1223931/launchxl-f28379d-adc-range-and-sync

器件型号:LAUNCHXL-F28379D
主题中讨论的其他器件:REF5030

您好、TI 团队

我使用 Lunchxl-f28379d 对电机控制器进行编程、我有关于 ADC 的一些问题。

ADC 范围

我了解 REF5030使 ADC 的 Vref 为3.0V。

ADC 范围为0V 至3.0V 是否正确?

有时 ADC 值(0~4095)低于0 (例如-20)。

2. ADC 同步

我想同时读取 ADCINA0、ADCINB2和 ADCINC2。

我不确定我的代码是否使它们同步。 (我的 ADC 代码如下)

    //
    // Toggle GPIO111 in software.  This will cause a trigger to
    // both ADCs via input XBAR, line 5.
    //
    GPIO_writePin(111U, 1U); // Set pin
    GPIO_writePin(111U, 0U); // Clear pin

    //
    // Wait for ADCA to complete, then acknowledge the flag.
    // Since both ADCs are running synchronously, it isn't necessary
    // to wait for completion notification from both ADCs
    //
    while(ADC_getInterruptStatus(ADCA_BASE, ADC_INT_NUMBER1) == false);
    ADC_clearInterruptStatus(ADCA_BASE, ADC_INT_NUMBER1);

    //
    // Store results
    //
    controller.adc2_raw = ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER0);//ADCINA0
    controller.adc1_raw = ADC_readResult(ADCBRESULT_BASE, ADC_SOC_NUMBER1);//ADCINB2
    controller.adc3_raw = ADC_readResult(ADCCRESULT_BASE, ADC_SOC_NUMBER2);//ADCINC2
    

输入 XBAR 是否是同时读取多个 ADC 引脚的唯一方式?

谢谢。

此致,Jungwoo Hur

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

    我将施加恒定电压(1.677V)。 但 ADC 结果值有波动(2300~2320)。 我怎样也能解决这个问题呢?

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

    尊敬的 Jungwoo、

    1) 1) ADC 的范围为0至3.3V。  

    2)让我询问软件专家,并提供适当的解决方案

    3) 3)您能否提供 ADC 配置、即 VREF、ACQPS、SOC 配置和其他设置? 此外、您能否分享提供给该引脚的输入电压范围?

    此致、

    Meghavi.

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

    您好,Meghavi

    感谢您的答复

    1) 1)我正在使用具有3.3V 电源域的 launchxl-f28379d 板(非通过 USB 电缆进行隔离)

    从实验角度看、ADC 范围似乎为0V 至3.0V。

    是否 需要为 Vref_Hi 连接一个引脚? 抱歉、我在电路板上找不到基准电压的引脚


    2) 2)谢谢! 我已使用与我要同步的 SoC 编号更新了我的代码。 (我忘记了 SOC 编号很重要。。。)

        //
        // Toggle GPIO111 in software.  This will cause a trigger to
        // both ADCs via input XBAR, line 5.
        //
        GPIO_writePin(111U, 1U); // Set pin
        GPIO_writePin(111U, 0U); // Clear pin
    
    
        //
        // Wait for ADCA to complete, then acknowledge the flag.
        // Since both ADCs are running synchronously, it isn't necessary
        // to wait for completion notification from both ADCs
        //
        while(ADC_getInterruptStatus(ADCA_BASE, ADC_INT_NUMBER1) == false);
        ADC_clearInterruptStatus(ADCA_BASE, ADC_INT_NUMBER1);
    
        //
        // Store results
        //
        controller.adc2_raw = ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER0);
    
        controller.adc1_raw = ADC_readResult(ADCBRESULT_BASE, ADC_SOC_NUMBER0);

    3)

    我已经意识到输入信号不是恒定的。 它像是 ePWM 信号

    图片是我的 ADC 输入信号。

    我需要测量输入信号的平均值。 我需要在一个输入信号周期内多次触发同一 SOC (大约6次)。

    对于在特定信号中多次触发、使用 ePWM 触发 SOC 似乎是正确的方法。 (我使用 GPIO 输入 XBAR 触发 SOC。)

    VREF:我没有连接任何基准电压的引脚。

    ACQPS:15.

    SoC 配置:

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

    尊敬的 Jungwoo、

    最大值取决于提供给 VREFHI 引脚的电压。 在这里、我们使用 REF5030来提供3V 电压。 遗憾的是、我们的板上没有3.3V REF。 有关更多详细信息、请参阅此主题: LAUNCHXL-F28379D:最大 ADC 输入电压3V 或3.3V? 可通过 Simulink 调节? - C2000微控制器论坛- C2000 ︎ 微控制器- TI E2E 支持论坛 

    请检查您是否未违反此条件:  

    " VREFHI 引脚必须保持低于 VDDA + 0.3V、以确保正常工作。 如果 VREFHI 引脚超过此电平、可能会激活阻塞电路、并且 VREFHI 的内部值可能会在内部浮动至0V、从而导致 ADC 转换或 DAC 输出不正确"

    此致、

    Meghavi.

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

    尊敬的 Meghavi:

    感谢你的帮助。

    非常感谢。

    此致、

    Jungwoo