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.

[参考译文] TMS570LS3137:HET 微代码以间歇性执行脉冲/周期测量

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/584912/tms570ls3137-het-microcode-to-perform-pulse-period-measurement-working-intermittently

器件型号:TMS570LS3137

大家好、我正在尝试使用 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;

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

    您的输入信号为50kHz、周期为20us、高脉冲为4us (20%占空比)。 您的设置中的 LPR 为6.4us。 是否可以将 VCLK2增加到系统时钟的一半并重试? 在什么情况下您会看到错误的值?

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

    QJ 您好、感谢您的回复。

    我们有 一个将 VCLK2保持在20MHz 的设计限制。但是、我将 LRP 更改为3.2us、我看不到问题。 但是、如果 LRP 为3.2us、环路分辨率预分频器必须为6、从而将指令周期数减少到64。 我们希望每个循环具有完整的128个指令周期。

    在 HET 代码中、我使用 的是高分辨率 PCNT、并共享相应的引脚 HR 结构。 因此、即使环路分辨率为 6.4us、我 也希望 HET 代码能够检测至少1个高分辨率周期(即50nansec)的脉冲/周期。 这是正确的假设吗?

    此外、为了回答您的最后一个问题、在我加电后 、电路板配置为每1秒通过 UART 记录占空比/周期。 馈入的输入是恒定的50kHz/20%占空比信号 、并在示波器上进行监控。 观察结果是、每3秒显示一次错误的占空比或周期值、或者同时显示这两个值。 如果我将环路分辨率更改为3.2us、并且能够每秒始终看到正确的占空比/周期值、则此行为消失。

    此致

    Brayan