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.

[参考译文] TMS320F28379D:未同时锁存 eQEP 位置计数和单元定时器值:

Guru**** 2609955 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/688725/tms320f28379d-eqep-position-count-and-unit-timer-value-not-being-latched-simultaneously

器件型号:TMS320F28379D

我正在尝试使用 eQEP 计时器捕捉单元捕获编码器边沿计时,并注意到一些不一致的行为。

我已将 eQEP 配置为正交计数模式,并使用 PCRM 模式1。 我已经启用了单位计时器,并将 QEP 捕获模式设置为锁存 CPU 读取的位置(QCLM = 0)。

eQEP 以正交模式运行、捕捉单元以默认值运行:

CPPS = 0、UPP = 0

 我有一个正在运行的中断,它允许我每100usec 读取一次 eQEP 位置寄存器,以及 eQEP 状态寄存器。

我的参考编码器线路频率约为22.5k 线路/秒 这相当于每个中断大约9个计数。 由于我的编码器频率不准确、我希望(请参阅)、在大多数情况下、每次中断捕获的计数数为9、并且小数部分会随着时间的推移而累加、从而产生偶尔的10个计数/中断。

我还在监控每个中断捕获的定时器值(通过读取位置同时锁存的值)、 当处于工作状态时、当读取包含10个计数的帧时、计时器值始终非常接近中断周期值(这正是我所期望的、因为额外的计数在位置读取之前就会挤入)。 当事情不处于工作状态时。 包含10个计数的帧偶尔会在大定时器值之后到达一个帧。 这两个条件之间的唯一区别是我的测试板的循环通电。 我是否遗漏了什么?

注意:我已将 eQEP 引脚的限定条件设置为6个周期,每个周期2个时钟。 我还查看了每个帧上的 eQEP 状态,以查看是否可能发生了方向更改(方向错误标志从未设置)。 由于正交解码器单元的输出同时馈送 QCAP 和 PCCU、我唯一可以想到的是、在实际读取位置后、定时器值会锁存一个或两个时钟、 或者位置计数和定时器同时被锁存、但是正交解码器单元处理合格的边沿信息需要更长时间。

这将在任何编码器频率下发生、并且只能在下电上电时消除。 (代码从闪存运行)

有什么想法吗?