2387757_zh-CN

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

2387757_zh-CN

2387757_zh-CN

S32K364 无法捕获 eFlexPWM 输入信号——标志位已设置但 CAPTCOMPB 仍为零。

我正在使用 eFlexPWM 模块(实例)。 我正在使用 S32K364 微控制器上的 IP_EFLEXPWM_0 ) 通过输入捕获来测量外部信号的频率和周期。 子模块 2 ( SM[2] )。我的配置如下:

  • SM2_CAPTCTRLB->EDGB0 = 0x02; (上升沿捕获电路 0)

  • SM2_CAPTCTRLB->EDGB1 = 0x02; (上升沿捕获电路 1)

  • SM2_ARMB = 1; (Arm捕获电路)

运行代码后,我观察到以下情况:

  • 在 SM2_CAPTCTRLB ,计数器状态位显示:

    • CB0CNT = 0x4

    • CB1CNT = 0x4

  • 在 SM2_STS ,两个标志位均已设置:

    • CFB0 = 1

    • CFB1 = 1

然而,捕获的值( SM2_CAPTCOMPB )仍然存在。 0 对于这两个捕获电路——都没有数据被锁存。

造成这种情况的原因可能是什么?我是否遗漏了其他需要的配置(例如,时钟启用、输入多路复用或计数器设置)?这些标志表明检测到了捕获事件,但捕获的值没有更新。您的见解将不胜感激。


如有需要,请随时添加其他详细信息(例如引脚复用设置或计数器模式)。祝你好运!

Re: eFlexPWM input capture not capturing on S32K364 – flags set but CAPTCOMPB remains zero

HI

首先,我检查了最新的 S32K3 RTD 7.0.x版本;但是, S32 配置工具尚不支持eFlexPWM E-Capture功能。
如果方便的话,能否分享一下您的项目,以便我可以在 S32K396 上进行测试?(可惜我没有 S32K364,只有S32K396-BGA-DC1评估板。)

其次,请查看 S32K396RM(修订版 4,2024 年 11 月) 中的“56.3.14 增强捕获(E-Capture)” 部分。请检查该部分中提到的寄存器,特别是图 254 中的寄存器。E-捕获 逻辑。您也可以与我分享eFlexPWM_0 寄存器的屏幕截图。

56.3.14.1.1 E-Capture logic S32K396RM (Rev. 4 11 2024).png

除了您在SM2_CAPTCTRLB [EDGB0]、[EDGB1]、[ARMB]中提到的位之外,您是如何配置SM2_CAPTCTRLB中的其他位的?
 
既然您观察到SM2_CAPTCTRLB[CB0CNT] = 0x4和[CB1CNT] = 0x4 ,您是否检查过SM2_CVAL4 、 SM2_CVAL4CYC 、 SM2_CVAL5和SM2_CVAL5CYC的相应寄存器值?
 

此外,如果您想读取SM2_CAPTCOMPB[EDGCNTB]的值,请先启用SM2_CAPTCTRLB[EDGCNTB_EN]和SM2_CAPTCOMPB[EDGCMPB] 。
我不明白你为什么要将SM2_CAPTCOMPB[EDGCMPB]设置为 0,因为这似乎会阻止图 254 中的比较器 E-Capture 逻辑正常工作。


此致敬礼,
Robin
Re: eFlexPWM input capture not capturing on S32K364 – flags set but CAPTCOMPB remains zero

子模块 2 的周期似乎太短了。请阅读“ 56.3.18.3 以低于子模块 0 的频率运行子模块”,并尝试为子模块 2 选择较低频率的时钟源,例如AUX_CLK或EXT_CLK 。

Re: eFlexPWM input capture not capturing on S32K364 – flags set but CAPTCOMPB remains zero

嗨@Robin_Shen ,

我通过正确配置 MCTRL 和 CAPTCTRLB 寄存器,成功实现了外部频率测量。然而,测试表明我能达到的最低可测量频率为 5 kHz,而我的要求是支持低至 1 Hz 的频率。

我尝试调整了预分频器和预分频器备用配置,但并未观察到任何改进。能否请您提供一些建议和故障排除方法?非常感谢您的支持。

标记 (1)
无评分
版本历史
最后更新:
‎07-21-2026 02:34 AM
更新人: