工具与软件:
我有一个低 PPR (64)正交编码器、可用于电机控制应用中的转子位置。
我需要在 ePWM 中断中确定转子位置和速度。 转子位置需要从最后一个边沿外推到当前 ePWM ISR 开始时的时间。
EPWM 中断还会为 ADC A/B/C 生成 ADCSOCA 事件
我已经弄清楚了如何使用 ADCSOCA 触发选通事件锁存以捕获 QPOSSLAT 中的计数器位置。
问:此事件是否也会锁存 QCTMR 和 QCPRD、还是需要手动读取 QPOSCNT?
TRM 指出"如果 QEPCTL[QCLM]位被清除、则捕获计时器和捕获周期值会被锁存到中
当 CPU 读取位置计数器(QPOSCNT)时、QCTMRLAT 和 QCPRDLAT 寄存器。"
高速时、我计划使用边沿捕获单元 QCPRDLAT 计算在一个正交周期(四个边沿)内进行速度测量所需的时间。 我会使用 QCTMRLAT 来计算"旧的"边沿相对于 ADCSOCA 的"程度、以便进行外推。 我会使用最小时钟分频来获得合适的分辨率。
如果 边沿捕获单元计时器是合适的32位计时器、我也可以在低速时使用这种方法。 由于它们只有16位、因此我需要使用另一种方法。
我正在考虑使用 eCAP 进行低速时间测量、因为它们是32位。
问: 是否可以将 eQEP QCLK 连接到一个或多个 eCAP 计时器来获取当前边沿之间的时间差和当前边沿的时间戳。 或者、我可以将 EQEPA 和 B 信号(在输入 XBAR 中) 分别映射到 eCAP 中、但这并不理想。
Jason
