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.

[参考译文] TMS570LS1227:修复 eQEP QCTMR 复位事件

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1263464/tms570ls1227-fixing-eqep-qctmr-reset-event

器件型号:TMS570LS1227
主题中讨论的其他器件:HALCOGEN

尊敬的所有人:

如何配置 eQEP 模块边沿捕捉单元、以实现 SPNU515C–2018年3月第903页、sec 21.5 eQEP 边沿捕捉单元中所述的捕捉计时器复位行为

eQEP 捕捉定时器(QCTMR)从预分频的 VCLK4运行、并且预分频器由
QCAPCTL[CCPS]位。 T 捕获定时器(QCTMR)的值被锁存到捕获周期寄存器
(QCPRD)、然后将捕捉计时器复位 中设置了一个标志
QEPSTS:UPEVNT、用于指示新值被锁存到 QCPRD 寄存器。 软件可以检查此情况
为低速测量读取周期寄存器前的状态标志、并通过写入1清除该标志。

我们的配置预计不起作用、即每个位置事件都会重置 QCTMR。

捕捉定时器的当前配置代码按如下顺序设置存储器映射寄存器 QCAPCTL 位:

  1. 向 QCAPCTL[15]位写入1 (启用捕捉单元)
  2. 将0写入位 QCAPCTL[5..6] (= CAPCLK = VCLK4/2)
  3. 向位 QCAPCTL[4]写入1 (= CAPCLK=VCLK4/2)。
  4. 将0写入位 QCAPCTL[0..3](= UPEVNT = QCLK/1)

感谢您的时间和支持。

顺祝商祺、

路易斯

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

    您好、Luis:

    我们已开始处理您的问题、并将尝试尽快提供更新。

    --
    谢谢。此致、
    Jagadish。

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

    Jagdish 您好!  

    感谢您的支持!

    除了我的原始问题、我想大致知道对于任何存储器映射寄存器、如果有建议的过程清除/设置位、例如、

    -是否应该一次性配置任何使用的 eQEP 控制寄存器(清除/设置位)?

    -未使用的控制寄存器位应明确设置为技术参考手册中记录的复位值?  

    此致、  

    Luís  

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

    您好 Jagadish:  

    我谨写信给各位,请阁下就这件事了解最新情况。  

    感谢您的时间和支持。  

    此致、  

    路易斯

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

    您好、Luis:

    我对迟交的答复表示歉意。

    您是否可以附加整个项目、以便我可以在结束时轻松调试问题。

    除了我原来的问题外,我想大致知道对于任何内存映射寄存器,如果有建议程序清除/设置位

    如需设置寄存器中的 th 位:
    reg |=(1<< n)

    将寄存器中的 th 位清零:
    reg &=~(1<< x);

    --

    谢谢。此致、
    Jagadish。

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

    您好 Jagadish:  

    感谢您的回答、单个位的清除和设置与我们的理解一致。  

     我们不使用 TI CCS、因此很难共享项目。  

    如果您能回答以下相关问题、将会非常有帮助:

    -是否应该一次性配置任何使用的 eQEP 控制寄存器(清除/设置位)?  

    -未使用的控制寄存器位应明确设置为 参考手册中记录的复位值?

    -我们要 在每次发生位置事件时重置 QCTMR。 捕捉定时器的当前配置代码按如下顺序设置内存映射寄存器 QCAPCTL 位:

    1. 向 QCAPCTL[15]位写入1 (启用捕捉单元)
    2. 将0写入位 QCAPCTL[5..6] (= CAPCLK = VCLK4/2)
    3. 向位 QCAPCTL[4]写入1 (= CAPCLK=VCLK4/2)。
    4. 将0写入位 QCAPCTL[0..3](= UPEVNT = QCLK/1)

    写入1意味着设置标志、 以及写入0清除标志。 操作序列是否会在每个位置事件上实现 qctmr 重置?  

    感谢您的时间和支持!  

    此致、

    路易斯

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

    尊敬的 Jagadish:

    我写信询问你何时可以就我以前的问题提供反馈。  

    此致、  

    Luís  

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

    您好、Luis:

    对于延迟响应深表歉意。

    我在度假一周。 今天、我将尝试重现您的问题、并尽快尝试提供更新。

    --

    谢谢。此致、
    Jagadish。

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

    您好、Luis:

    对于响应的延迟、我们深表歉意。

    -是否应一次性配置任何使用的 eQEP 控制寄存器(清除/设置位)?  [/报价]

    不、不一定。 您也可以通过多个步骤完成。

    您可以看到、上述代码是 HALCoGen 中的驱动程序示例代码、您还可以看到 API 也用于在运行时更改控制寄存器位。

    -未使用的控制寄存器位应明确设置为 参考手册中记录的复位值?

    否、无需重置这些值。 如果不使用相应的位、您甚至可以忽略相应的位。

    -我们要 在每次发生位置事件时重置 QCTMR。 捕捉定时器的当前配置代码按如下顺序设置内存映射寄存器 QCAPCTL 位:

    1. 向 QCAPCTL[15]位写入1 (启用捕捉单元)
    2. 将0写入位 QCAPCTL[5..6] (= CAPCLK = VCLK4/2)
    3. 向位 QCAPCTL[4]写入1 (= CAPCLK=VCLK4/2)。
    4. 将0写入位 QCAPCTL[0..3](= UPEVNT = QCLK/1)
    [/报价]

    我建议的流程如下:

    1.禁用捕获:

    2.现在根据要求设置预分频器:

    3.启用捕获:

    --

    谢谢。此致、
    Jagadish。

    [/quote]