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.
您好,
我正在尝试控制使用N2HET生成的PWM信号。
到目前为止,我可以看到具有固定频率和25 % 占空比的PWM信号,但我似乎无法在运行中控制此信号。 我假设我的HalCoGen设置有效,以便完全查看任何输出。
作为一项基本测试(在LaunchpadXL板上),我正在对ADC进行编程,以获得可修改的值(缩放为0 100 %),我正在尝试将其输入pwmSetSignal()函数以控制占空比。
我的代码非常简单:
adcData_t adc_data;
adcData_t *ADC_DATA_PTR =&ADC_DATA;
无符号int值;
unsigned int Dut_cycle;
hetSIGNAL_t het_SIG;
HET_SIG.ODON=50;
HET_SIG.句 点= 1.000 ; /* 1us:= 1MHz */
hetInit();
adcInit();
pwmStart (hetRAM1,pwm0);
同时(1)
{
/*从ADC */获取可修改的值
adcStartConversion (adcREG1,adcGROUP1);
while (!adcIsConversionComplete (adcREG1,adcGROUP1));
adcGetData (adcREG1,1U,ADC_DATA_PTR);
value =(unsigned int)ADC_DATA_PTR->value;
/*将值(0-4095)与PWM占空比的百分比(0-100)相关联*/
/*值/41给出占空比百分比,最大值为99 */
占空比=值/ 41;
/*使用来自ADC的值更新占空比*/
HET_SIG.ODON=占空比;
// pwmSetSignal (hetRAM1,pwm4,het_SIG);
}
当我运行此代码时,我调用"查看",在"查看器"上显示175.7kHz PWM信号,其25 % 占空比为。
pwm0的HalCoGen设置为:周期= 0.1 ,占空比= 10。 我看到的内容与HalCoGen设置无关。
当我取消注释对pwmSetSignal()的调用时,PWM输出被完全终止。
我的最终目标是以尽可能高的频率产生PWM信号,但(最重要的是)在0至99 % 范围内具有可控制的占空比。
问题:
1.您能否告知我的代码不正确和/或不充分的地方,以及实现目标需要什么?
2.通过逐步浏览代码,我在执行pwmInit()后就开始看到PWM输出。 我是否需要调用pwmStart()? 如果是,原因是什么?
3.我已经浏览过网络以查找这些信息,所以您还可以指出我可以在哪里找到这些信息(对于TMS570LS1224和N2HET以及PWM)?
4.在最大PWM频率和占空比方面,我可以预期的最佳结果是什么?
TIA
您好,TIA,
HALCOGen生成的代码只能支持PWM频率=175KHz的5个占空比设置:0,15 % ,25 % ,50 % ,75 %。 HAL代码的LR为64。 如果您需要更多的占空比设置,则需要编写自己的代码。 您需要多少PWM信号? 您是否需要ECAP,边缘检测等功能?
1.1224 n2het-wmwm-signal"]1. 您能否告知我的代码不正确和/或不充分的地方,以及实现目标需要什么?[/QUOT]如果PWM频率=175KHz且LR=64 (HAL生成代码的默认值),则为预期行为。
[/quote][/quote]2.1224 n2het-wmwm-signal"]2. 通过逐步执行代码,我在执行pwmInit()后就开始看到PWM输出。 我是否需要调用pwmStart()? 如果是,为什么?[/QUOT]是的,您需要调用pwmStart()来输出PWM信号。 PWCNT指令的pin操作在默认情况下未启用。
[/quote]1224 n2het-wmwf-signal"]3.我已经浏览过网络以查找这些信息,所以您还可以指出我可以在哪里找到这些信息(对于TMS570LS1224和N2HET以及PWM)?
4.在最大PWM频率和占空比方面,我可以预期的最佳结果是什么?
[/引述]如果您只需要1个PWM输出,8 N2HET指令就足够了-->LR=8,因此您将有更多的占空比选择。
请下载HET IDE以模拟NHET代码。