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.

[参考译文] TMDSCNCD28.0039万C:使用CCS从连接到板上特定ADC引脚的外部电压源读取ADC输入的示例

Guru**** 2520540 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1088475/tmdscncd280039c-example-to-read-adc-input-from-external-voltage-source-connected-to-a-particular-adc-pin-on-board-tmdscncd280039c-using-ccs

部件号:TMDSCNCD28.0039万C
主题中讨论的其他部件:C2000WARE

您好,

我正在使用板载ADC读取电压输入(按比例降至0-3V)。 请推荐合适的示例,我可以使用该示例查看ADC输入并使用CCS窗口进行验证(是否可以使用图形?) 电压读数是否正确。  

下面是我尝试过的模拟子系统实验室的示例。 但在这种情况下,ADC使用的是板本身生成的信号,而我想读取外部电压。  

dev.ti.com/.../node

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

    Shashank,

    C2000 Academy的Module6确实对您有用,或者您没有看到预期的价值?

    如果您要查找更多示例,请访问下面列出的文件夹:

    c/ti/C2000/C2000Ware_4_01_00_00/driverlib/f28003x/examples/ADC</s>2000 2.8003万

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

    您好,Santosh:

    我正在尝试将ADC输入读取为2V的正弦波(由函数发生器生成)电压振幅和1V的偏移,因此从0V摆动到2V。 我运行 ADC_EX2_SOC_ePWM示例,我使用的图表最好能显示 通过ADC的正弦波。 但是当我将引脚9 (ADC A0)连接到函数发生器的输出并查看图形时,它不是正弦波,时间周期不正确,看起来夹紧了。  我无法处理图形。  

    1)请建议 上述ADC_EX2_SOC_ePWM是否是一个测试的好示例? 如果不是,我应该从哪个开始?  

    2)下面是模数6示例中的图形属性- 为了在CCS图上正确查看20Khz频率的正弦波,2V的振幅和1V的偏移,我应该更改什么。  

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

    你好,Shashank,

    是否可以显示ADC缓冲区的结果?  希望首先了解您获得的值。

    此致,

    约瑟夫

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

    您好,Joseph:
    下面是ADC缓冲区的结果。 电源电压:振幅2V,偏移1V,正弦波-频率:10 kHz。  
    请注意,在.c文件中,我将比较值从1000更改为1200,并将期间值从1999更改为2399,因为主板以120MHz运行。 在这一变化之后,图表上至少100 us的时间段看起来不错,但我仍然不想理解图表不是正弦,为什么它被夹住?  下面还有图形属性的屏幕截图。

    谢谢!

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

    你好,Shashank,

    您的函数发生器信号似乎已衰减。  控制卡中似乎没有任何其它与A0的连接会导致此衰减。  您是否可以更改函数发生器的输出阻抗以查看是否可以获得全幅?  通常,函数发生器阻抗有两种设置,一种是低电阻,另一种是高电阻。  尝试两者,看看哪一个给出全振幅,

    此致,

    约瑟夫

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

    您好,Joseph:

    我尝试了两种衰减-仍然存在相同的问题。 我上一封邮件中的图像带有0dB Attn,而对于-20dB Attn,图形振幅要小10倍。  
    尽管如此,为什么波形不是正弦波-它看起来像一个扭曲的三角形。 查看10kHz信号的建议ePWM周期和参考值是多少? ADC_EX2_SOC_ePWM 是 测试此情况的好例子?  

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

    你好,Shashank,

    采样速度取决于缓冲区的大小和要捕获的周期数。  如果要捕获具有256个缓冲区位置的4个周期,则需要设置ePWM,使SOC每100ns/64 ( 10kHz周期除以64个采样)或1.5625uS发生一次。  如果未连接到A0以及连接到A0,您还可以确定功能gen的输出范围吗?  这可能会告诉我们是否存在衰减问题或代码是否存在问题。

    谢谢!

    约瑟夫

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

    您好,Joseph:
    使用5kHz正弦波输入时,输出看起来略好。  

    我还有另一个相关问题:  
    在ADC_EX2_SOC_ePWM示例中 ,如果我希望ADC在EPWM2而不是EPWM1 (如下面的代码所示)触发,我应该怎么做? 我尝试用EPWM2_BASE更改EPWM1_BASE,但之后  ,myADC0Results的图形中没有显示任何内容。 请给出建议。  
    下面是代码:
     

        while(1)
        {
            //
            // Start ePWM1, enabling SOCA and putting the counter in up-count mode
            //
            EPWM_enableADCTrigger(EPWM1_BASE, EPWM_SOC_A);
            EPWM_setTimeBaseCounterMode(EPWM1_BASE, EPWM_COUNTER_MODE_UP);
    
            //
            // Wait while ePWM1 causes ADC conversions which then cause interrupts.
            // When the results buffer is filled, the bufferFull flag will be set.
            //
            while(bufferFull == 0)
            {
            }
            bufferFull = 0;     // Clear the buffer full flag
    
            //
            // Stop ePWM1, disabling SOCA and freezing the counter
            //
            EPWM_disableADCTrigger(EPWM1_BASE, EPWM_SOC_A);
            EPWM_setTimeBaseCounterMode(EPWM1_BASE, EPWM_COUNTER_MODE_STOP_FREEZE);
    
            //
            // Software breakpoint. At this point, conversion results are stored in
            // myADC0Results.
            //
            // Hit run again to get updated conversions.
            //
    //        ESTOP0;
        }
    }
    
    //
    // Function to configure ePWM1 to generate the SOC.
    //
    void initEPWM(void)
    {
        //
        // Disable SOCA
        //
        EPWM_disableADCTrigger(EPWM1_BASE, EPWM_SOC_A);
    
        //
        // Configure the SOC to occur on the first up-count event
        //
        EPWM_setADCTriggerSource(EPWM1_BASE, EPWM_SOC_A, EPWM_SOC_TBCTR_U_CMPA);
        EPWM_setADCTriggerEventPrescale(EPWM1_BASE, EPWM_SOC_A, 1);
    
        //
        // Set the compare A value to 1000 and the period to 1999
        // Assuming ePWM clock is 100MHz, this would give 50kHz sampling
        // 50MHz ePWM clock would give 25kHz sampling, etc. 
        // The sample rate can also be modulated by changing the ePWM period
        // directly (ensure that the compare A value is less than the period). 
        //
        EPWM_setCounterCompareValue(EPWM1_BASE, EPWM_COUNTER_COMPARE_A, 600);
        EPWM_setTimeBasePeriod(EPWM1_BASE, 2399);
    
        //
        // Set the local ePWM module clock divider to /1
        //
        EPWM_setClockPrescaler(EPWM1_BASE,
                               EPWM_CLOCK_DIVIDER_1,
                               EPWM_HSCLOCK_DIVIDER_1);
    
        //
        // Freeze the counter
        //
        EPWM_setTimeBaseCounterMode(EPWM1_BASE, EPWM_COUNTER_MODE_STOP_FREEZE);
    }

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

    你好,Shashank,

    除了将EPWM1的实例更改为EPWM2之外,您还需要在寄存器 ADCSOCxCTL中设置正确的ePWM/SOC。  该寄存器的字段TRIGSEL将选择适当的ePWM通道和SOC。

    此致,

    约瑟夫

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

    您好,Joseph:

    谢谢,我在.syscfg文件中更改了下面的内容,这样可以解决问题。  

    同样,如何从 ADC A0更改为 ADC B2?  

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

    你好,Shashank,

    B2是ADCB中的信道,因此您必须将ADC实例更改为ADCB,在SOC配置下,将SOC信道更改为ADCIN2。

    此致,

    约瑟夫

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

    您好,Joseph:

    为了读取另一个ADC B3,我尝试添加另一个ADC名称'myADC1',然后当我使用ADC实例ADCB时,.syscfg文件显示以下错误:  
    要包括另一个ADC B3,我想我可以使用ADCB实例,然后在SOC通道中,我可以选择'ADCIN3 is conved',但我收到了此错误。

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

    您好,

    去年,TI发布了有关C2000器件的学院式在线培训。 培训的目的是提供逐步指导,以便开始使用C2000系列实时MCU。 我们知道您已经了解了 C2000 Academy的ADC模块。 如果您能与Academy分享您的经验,我们希望与您联系。 您是否有任何改进反馈/建议? 我们一直在寻找改进内容的方法,以便对客户更有用,因此任何反馈/建议都将非常有帮助。

     

    非常感谢您花时间提供反馈。

     

    谢谢,此致,

    Santosh Jha

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

    您好,Santosh:

    您能否向我提供在线培训和C2000 Academy for ADC的链接?
    此外, 我还希望使用 ADC_EX2_SOC_ePWM示例,在第一个ADC B2之外实施ADC B3。 请提供配置步骤。  

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

    Shashank,

    有关ADC配置,您需要参考Module6 (模拟子系统)。 Academy旨在帮助新用户开始使用C2000器件。 它不会经过特定的用例。 请查看以下链接中的模块6:

    https://dev.ti.com/tirex/explore/node?node=AOpze8ebskysmgASY3VKSA__jEBbtmC__LATEST

    如果您可以在C2000学院中提供任何反馈,那将非常有帮助。 提前感谢您提供反馈。

    此致,

    Santosh