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.

[参考译文] TMS320F28069:HRCAP 校准中未使用的 HRCAP 索引是否取决于用户?

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1230015/tms320f28069-is-unused-hrcap-indexing-in-hrcap-calibration-user-dependent

器件型号:TMS320F28069
"Thread:controlSUITE"中讨论的其他器件

我使用的是 HRCAP_Cal () 和 TRM: TMS320x2806x 微控制器技术参考手册(修订版 I)(TI.com)
页:414、在函数中提到: uint16 HRCAP_Cal (uint16 HRCAPModule、uint16 PLLClk、易失性结构 ePWM_regs * ePWMModule)

HRCAPModule 是一个整数值的 HRCAP 模块编号(也就是说、对于 HRCAP1为"1"、对于 HRCAP2为"2")。 此 HRCAP 模块将仅用于校准、不能用于捕获脉冲宽度。

但是、当我在我的代码的后台尝试校准 HRCAP 时、   无论输入如何、我始终获得周期、开和关的值为69905077、34948553和34948553。
我观察到、对未使用的 HRCAP 模块使用基于  0的索引、对于 HRCAP1使用"0"、对于 HRCAP2使用"1"、可为我提供正确的值、 在将我的代码与 TI 示例 HR 2806x 进行比较时、我发现 HRCAP_REGS 结构的定义有所不同、在 TI 示例中、它被定义为"volatile struct HRCAP_REGS *HRCAP[NUM_HRCAP]={0、&HRCap1Regs、&HRCap2Regs、
&HRCap3Regs、&HRCap4Regs};"

我将其定义为 "volatile struct HRCAP_REGS *HRCAP[4]= {&HRCap1Regs、&HRCap2Regs、&HRCap3Regs、&HRCap4Regs};"

当我将 HRCAP 的结构重新定义为  "volatile struct HRCAP_REGS *HRCAP[NUM_HRCAP]={0、&HRCap1Regs、&HRCap2Regs、
&HRCap3Regs、&HRCap4Regs};"然后我也可以获得基于"1"的索引的正确答案。

TRM 并不基于 HRCAPRegs 的结构提供关于使用未使用的 HRCAP 模块的信息、它只是说"HRCAPModule 是一个整数值(即、对于 HRCAP1为"1"、对于 HRCAP2为"2")。 此 HRCAP 模块将仅用于校准、不能用于捕获脉冲宽度。  由于 TI 不透露 HRCAP_Cal ()函数,我想知道 HRCAP 中未使用的 HRCAP 索引是否取决于用户。

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

    以及为什么 HRCAP 结构定义为 "volatile struct HRCAP_REGS *HRCAP[NUM_HRCAP]={0、&HRCap1Regs、&HRCap2Regs、
    &HRCap3Regs、&HRCap4Regs};"第一个条目为零有什么意义?  它是否用于 HRCAP_Cal ()未使用的 HRCAP 的指数调整?

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

    您好!

    研究这个。 我正在寻找源代码以获得有关这方面的答案、请允许我用一天时间与您联系。

    谢谢。
    Aditya.

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

    您好!

    我找不到任何具体的文档、说明为什么这是它之前编写的方式。 从 controlSUITE SDK 发布时就已经介绍完了、现在还没有任何专家来处理此内容。

    我建议根据提供的文档使用库。

    谢谢。

    Aditya.

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

    您好、Aditya、感谢您的回复。

    文档没有提供有关 HRCAP Regs 结构对要在 HRCAP_Cal ()中用于校准的 HRCAP 的依赖性的信息,我更改了 HRCAP 结构定义(TI 示例 2806x HRCAP 高分辨率模式的第141行:  volatile struct HRCAP_REGS *HRCAP[4]={&HRCap1Regs,&HRCap2Regs,&HRCap3Regs,&HRCap4Regs };)在 TI 交付的2806x HR 模式示例中,我在 HRCAP_Cal ()中发送未使用的 HRCAP (1/2/3/4 )时得到基于1的索引的错误值。 确认如果我们将结构定义为  "volatile struct HRCAP_REGS *HRCAP[5]= {0、&HRCap1Regs、&HRCap2Regs、&HRCap3Regs、&HRCap4Regs};"、 则  TRM 中的以下声明才成立: TMS320x2806x 微控制器技术参考手册(修订版 I)(TI.com) 第414页:

    "HRCAPModule 是一个以整数值形式表示的 HRCAP 模块编号(即、对于 HRCAP1为"1"、对于 HRCAP2为"2")。 此 HRCAP 模块将仅用于校准、不能用于捕获脉冲宽度。

    如果将该结构定义为   "volatile struct HRCAP_REGS *HRCAP[4]= {&HRCap1Regs、&HRCap2Regs、&HRCap3Regs、&HRCap4Regs};"、则不适用。

    在这里、我们将不得不为 HRCAP1/2/3/4使用0/1/2和3。

     但 TRM 没有提到 HRCAP 结构定义对用于校准的 HRCAP 模块的索引的影响。

    由于您建议按照提供的文档使用库、我只是这样使用库、得到了错误的答案。 那么我在函数 HRCAP_Cal ()中发现了 HRCAP Regs 结构对使用 HRCAP 编号进行校准的依赖性、TRM 中没有提及。

    现在,我已经根据 TI 示例更改了结构定义,如果我  在 HRCAP_Cal ()中对 HRCAP1使用"1",对 HRCAP2使用"2",我将获得正确的值,但我想确认我的推理,尽管我已经在 CCS 中进行了验证。

    此致、

    Aditya.  
     

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

    我认为使用索引的方法也是我们在其他图书馆继续采用的方法。 对于我们的其他库、您使用从1开始的索引定义结构的结果也同样适用。

    遗憾的是、我没有便于验证您所指出的错误用例的硬件、但我相信 HRCAP1的索引1、HRCAP2的索引1和您正确指出的正确方法会保持正确。