大家好、我正在尝试使用 TMS570LS3137的 N2HET1来测量 PWM 输入。 下面是该实现方案的配置和代码片段。 我馈入 PWM 输入的测试信号为50kHz、占空比为20%。 在我的逻辑中、我在 HR 模式下使用 PCNT 指令来测量脉冲/周期。 当我运行该设置时、一切正常、并且正确计算周期和占空比。 但是、现在和之后、这两个值似乎都不正确、即占空比不是20、而是显示90、150等、然后稳定回20。 周期也是如此。 您能帮助我识别逻辑中的问题吗?
配置:
VCLK2 = 20MHz
HR clk = 20MHz
环路分辨率时间= 6400毫微秒、LR 预分频= 7。
引脚编号:26
HET 程序
const uint32_t hetPROGRAM[]=
{
/* PCNT:捕获占空比
* -指令 = 0
* -下一条指令 = 1.
* -条件下一条指令= na.
* -中断 =不适用
* -引脚 = 26
*
0x00002E00U |(1U <<6U) |(26U)、/*程序*/
0x00000000U、/*控制*/
0x00000000U、/*数据*/
0x000000000000、
/* PCNT:捕获周期
* -指令 = 1.
* -下一条指令 = 0
* -条件下一条指令= na.
* -中断 =不适用
* -引脚 = 26 + 1
*
0x00000E80U |(3U << 6U) |((26U)+ 1U)、//程序*/
0x00000000U、 /*控制*/
0x00000000U、 /*数据*/
0x000000000000
};
CPU 代码
初始化代码
hetREG1->HRSH = 0x00002000U;//设置 HET pin26/27高分辨率共享*/
hetREG1->PFR =(7U <<8U);//设置预分频器*/
memcpy ((void *) hetRAM1、(const void *) hetPROGRAM、sizeof (hetPROGRAM));
运行时间
Duty = 100.0 *(double) hetPROGRAM[2]/(double) hetPROGRAM[6];
周期=((hetPROGRAM[6]>> 7U)+(double)(hetPROGRAM[6]& 0x0000007F)/128.0) * 6400.000 / 1000.0;