主题中讨论的其他部件:C2000WARE
您好,
我正在使用板载ADC读取电压输入(按比例降至0-3V)。 请推荐合适的示例,我可以使用该示例查看ADC输入并使用CCS窗口进行验证(是否可以使用图形?) 电压读数是否正确。
下面是我尝试过的模拟子系统实验室的示例。 但在这种情况下,ADC使用的是板本身生成的信号,而我想读取外部电压。
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.
您好,
我正在使用板载ADC读取电压输入(按比例降至0-3V)。 请推荐合适的示例,我可以使用该示例查看ADC输入并使用CCS窗口进行验证(是否可以使用图形?) 电压读数是否正确。
下面是我尝试过的模拟子系统实验室的示例。 但在这种情况下,ADC使用的是板本身生成的信号,而我想读取外部电压。
您好,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的偏移,我应该更改什么。

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

您好,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);
}您好,
去年,TI发布了有关C2000器件的学院式在线培训。 培训的目的是提供逐步指导,以便开始使用C2000系列实时MCU。 我们知道您已经了解了 C2000 Academy的ADC模块。 如果您能与Academy分享您的经验,我们希望与您联系。 您是否有任何改进反馈/建议? 我们一直在寻找改进内容的方法,以便对客户更有用,因此任何反馈/建议都将非常有帮助。
非常感谢您花时间提供反馈。
谢谢,此致,
Santosh Jha
Shashank,
有关ADC配置,您需要参考Module6 (模拟子系统)。 Academy旨在帮助新用户开始使用C2000器件。 它不会经过特定的用例。 请查看以下链接中的模块6:
https://dev.ti.com/tirex/explore/node?node=AOpze8ebskysmgASY3VKSA__jEBbtmC__LATEST
如果您可以在C2000学院中提供任何反馈,那将非常有帮助。 提前感谢您提供反馈。
此致,
Santosh