大家好,
我正在使用 S32K322 微控制器,并实现了编码器接口,以从位置传感器获取转子角度。
我已根据应用笔记配置了所需的 MCAL 模块,包括 TRGMUX、LCU 和 eMIOS。编码器功能正常;但是,我发现 CW 和 CCW 计数器出现了意外情况。
我的问题如下:
附上视频供您参考。
此致,
蒂鲁
您好,
LCn 的 CW 和 CCW 输出本身并不是位置计数器。根据增量编码器的实现方式,所用的 LCn 会在每个 A/B 信号边沿生成 CW 或 CCW 输出脉冲流,具体取决于检测到的正交序列。然后,eMIOS 对这些脉冲进行计数以累积位置信息。这与 S32K3 正交方法相符,其中 PHA/PHB 由 LCU 处理,eMIOS 充当位置累积的计数器。https://community.nxp.com/t5/S32K/Quadrature-decoder-on-S32K344/mp/1507580
如果转子确实静止不动,并且编码器 A/B 输入稳定,则不应持续产生新的 CW/CCW 脉冲。因此,当绝对位置保持为零时,顺时针和逆时针计数器都递增,这不是预期的“理想”行为。
有几件事值得检查:
这应该有助于确定问题是编码器信号活动/噪声引起的,还是 eMIOS 配置问题引起的。
BR,彼得
您好,
我在S32K322参考手册中找不到与UIN状态对应的任何寄存器。请问您能否帮忙查找并指导我如何验证这一点以便进行进一步分析?
我调试了用于更新 顺时针 和 逆时针 计数器的 寄存器 。根据参考手册, eMIOS 通道 5 的 UC CNT 对应于顺时针计数器, eMIOS 通道 6 的 UC CNT 对应于逆时针计数器。
然而,我观察到即使转子处于静止状态,两个UC CNT寄存器仍然持续从0 递增到 65535 (自由运转)。请问这种现象是否正常,或者可能是什么原因造成的?
我已附上相关寄存器值的截图供您参考。
此外,我还验证了 MCAL 配置,其配置与共享的**应用笔记**中所述一致,是正确的。
尽早提供支持
此致,
蒂鲁
您好,
我写的是 UIN,但它应该是通道 S 寄存器的 UCIN 位。
根据寄存器视图,我看到控制寄存器设置为 0x20E06D1,这表明使用了正确的模式 0x51,即对外部信号进行计数。
据我了解,LCn 在每个 A/B 信号边沿在 CW 或 CCW 输出端产生脉冲流,因此对于稳定的电机/编码器信号,不应产生脉冲,因此不应计数。
您还可以检查相应的 SIUL IMCR 寄存器,以确保已选择 TRGMUX 输出。
BR,彼得