请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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。