您好!
我想对 eQEP 模块的一些问题进行一些澄清。 不幸的是、我的试验设置很远程、运行起来不便宜、因此我需要尽力在办公桌上完成这些工作。
COEF 和 CDEF 被锁存
具体而言、该帖子说:
"看起来文档不正确。 您需要写入 QEPSTS 的"1" CEF 位以将其清除。"
如果这确实正确、则该器件的最新文档中仍不存在:"SPRUHM8I"。 我不认为文件中说该位是通过这种方式在任何地方清零的、也不说它是锁存的。 但是、在同一寄存器中有一个关于清除该位的注意事项、即 UPEVNT 标志。
我假设 CDEF 会表现出类似的行为、那么您能否确认 COEF 和/或 CDEF 确实已锁存、并且需要用写"1"清除。
此外、同一文档的第2176页还有一个拼写错误"QEPCTZ"。
QEPI 门控到 A 和 B 会导致索引锁存器发生晃动
我在512 PPR 轮上使用以下相关设置、索引门控至 A 和 B:
- 正交计数模式
- 同步 GPIO (无四路)
- 对两个边沿进行计数
- QPOSMAX = 2047
- PCRM = 2
- IEL= 1.
- 正向旋转
这导致 QPOSILAT 每秒在2047和2046之间切换多次***。 在更高的速度6k RPM +下、表现明显更好、但并未完全消失。 如果发生位置计数器错误、我只想使用索引来重置计数。 我的应用在每次旋转时可以承受几个误差计数、但如果计数器误差随着时间的推移而累积、绝对不能承受重大漂移。 需要记录和报告任何 QEP 计数器问题。
在 MCU 平面上、信号看起来都很干净、并且边沿之间实际上没有明显的时间差(当然小于5ns SYSCLK)。
将 IEL 更改为3是否有帮助? 这是我的最佳猜测、任何建议都值得赞赏。 我愿意尝试许多事情。 我正在考虑在指数中添加几 ns 延迟、以确保它始终略高于第一个正边沿、但我认为必须有更好的方法来解决这一问题。
编辑: 我的问题似乎也与此类似: e2e.ti.com/.../tms320f28388d-eqep-module-index-detection
注意:我通过 CAN HMI 查看该线程中的值、而不是通过调试器查看缓冲值。
***-我目前无法确认是否有其他值被锁定,但我将在下一次测试中添加一些调试代码来检查这一点。