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.

[参考译文] TMS570LC4357:N2HET/HTU 不能生成合适的2"#39;s PWM。 [续]

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/579157/tms570lc4357-n2het-htu-doesn-t-generate-proper-two-s-pwm-continuation

器件型号:TMS570LC4357

你好  

这是我的下 一个步骤 (继续 我以前的帖子  :) ,已解决  

现在、我 尝试  使用 HTU/DMA 生成2个 PWM。  遗憾的是、只有一个 PWM 正常生成。 下一个不会更改占空比。

一般 背景是 SPNA217项目。 "使用 PWM 和 Hercules 生成正弦波"  

1-图- 不正确。 PWM 常量  NHET 引脚9

2图示正确、 PWM 变化占空比。  NHET 引脚4 (该图不 是很好、但在 本例中、相信我的占空比正在变化)。

根据示波器。 一个 PWM 正常工作下一个 PWM 不工作(PWM 处于常量状态)。

我已将整个项目放入 zip 文件中。

e2e.ti.com/.../6012.Sine_5F00_wave_5F00_PWM2_5F00_TWO_5F00_PWMS.zip  

修改的 NHET 代码:  

l00 CNT{reg=a、IRQ=off、max=PWM_PERIOD};

L01 ECMP{next = L01X、hr_LR=HIGH、en_pine_action=on、NUM_addr=L02、PIN_COND、action=PULSELO、reg=A、IRQ=off、data=init_compare、 HR_data=init_HR_delay};
L02 MOV32{remote =L01、type=IMTOREG&REM、reg=none、data=init_compare、hr_data=init_compare};
L020 BR{next =L01X、reqdr=1、request=GENREQ、con_addr=L01X、hr=en_action=lr

、event=en_con_en_en_cond=2、enr=nr_action=r_en_en_en_en_enr= lr、en_en_en_en_en_enr= lr、en_en_en_action=r_en_en_en_en_en_en_en_enr=r=r=r_en_en_en_enr_enr=
L02X MOV32{remote=L01X、type=IMTOREG&REM、reg=none、data=init_compare、hr_data=init_compare};
L021 BR{near=L03、reqnum=0、request=GENREQ、COND_addr=L03、event=NOCOND};

L03 BR{=near=00、LOND};L00、NOCOND 

可疑 的是 、当我将 L020 REQnum=0中的"reqnum"更改为"reqnum=0、反之亦然、L021 REQnum=1时、  会将正确生成的 PWM 分配给不同的引脚。  但仍然 只有一个 PWM 能够改变占空比。  

int main (void)
{
/*用户代码 begin (3)*/

htuInit();//HTU!!!

hetInit();

configNHET1();

while (1);

返回0;
}

void configNHET1()
{
hetREG1->PFR = LRPFC << 8;


calculate_ecmp_compare ();


hetREG1->REQENS |= 0x3;//请求使能设置寄存器(HETREQENS)字段说明


hetREG1->DIR =(1 << NHET1_PIN_PWM1)|(1 << NHET1_PIN_PWM2);

hetRAM1->Instruction [Phet_L00_0].Control =(uint32)(CNT_MAX_PERIOD - 1)|(hetRAM1->Instruction [Phet_L00_0].Control & 0xFFFD0000);

hetRAM1->Instruction [Phet_L01_0].Control =(hetRAM1->Instruction [Phet_L01_0].Control & 0xFFFFE0FF)|(NHET1_PIN_PWM1 << 8);

hetRAM1->Instruction [Phet_L01X_0].Control =(het_PIN_0_+)

*







(nvoid <=0_intrince_0_period[0]+)(n_en_ince_ince_ince=0]+[i_en_intrince_ince_0]+[0]+[i_en_ince_ince_en_ince=[i_ince_ing]+[0]+[i_en_ince_ince_ince_ining]+[0]+[i]+[i]+[i_intry&;het_ince_ines]+[i]+[i_ines&;het_ince=0]+[i_ince=0]+[i_






htuDCP1->ITCOUNT = 0x00010000 + SAMPLE_SIZE;

htuDCP2->ITCOUNT = 0x00010000 + SAMPLE_SIZE;//对于 PWM2


htuDCP1->IHADDRCT =(htuDCP1->IHADDRCT & 0x0)|
0x1 << 23 |// DIR
0x0 << 22 |//大小
0x0 << 21 |// ADDMH
0x0 << 20 |// ADDFM
0x1 << 18 |// TBA
0x0 << 16 |// TMBB
0x58;



htuDCP2->IHADDRCT =(htuDCP2->IHADDRCT & 0x0)|
0x1 << 23 |// DIR 1主存储器地址被读取、NHET 地址被写入
0x0 << 22 |//大小 0 32位传输
0x0 << 21 |// ADDMH 0递增16个字节
0x0 << 20 |// ADDFM 0后增量
0x1 << 18 |// TBA 1h 循环缓冲模式
0x0 << 16 |// TMBB 0单次触发缓冲模式
0x28;




htuDCP1 -> IFADDRA =(unsigned int) sine_table;
htuDCP2 -> IFADDRA =(unsigned int) sine_table2;


htuREG1->CPENA=0x00000001;


htuREG1 ->GC = 0x00010000;// 16 HTUEN -1传输单元已启用
}


//用户代码结束*/ 

有人建议 ,这有什么问题?  

Marcin。

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

    我已将您的帖子转发给我们的 NHET 专家之一、他们应该能够很快回复。 他们还知道您发布了类似问题的其他主题。 如果他们首先回复该主题、请将其重定向到此主题。