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.

[参考译文] TMS570LS1114:N2HET 模块的 C 编程

Guru**** 2475925 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/666767/tms570ls1114-c-programming-of-the-n2het-module

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

你(们)好

你好

我的一个朋友去年发布了这些信息、但他从未得到答案。 他请我这样做

我正在使用 Hercules TMS570LS1114 、我需要将9个正交编码器与 N2HET 相连。 我在  状态机中看到了应用手册 www.ti.com/.../spna228.pdf、我无法判断它是否起作用、因为模拟信号存在一些问题。 我还阅读了以下文章 :http://e2e.ti.com/support/microcontrollers/hercules/f/312/p/536444/2021979 、发现它非常有用、但今天我使用 的是 Halcogen 、在 het.h 文件中、我看到了一些用于边缘检测的函数以及计数器。 我附上该代码的图像。  

我想知道 、即使 Halcogen 仅支持每个 HET 7个捕捉或7个中断、我是否需要 HET1上的14个和 HET2中的4个、 如果我可以使用这些 C 函数来执行代码、或者由于我尝试复制我在这里添加的帖子并遇到一些问题、因此模块有其他代码可以执行任务。  

N2HET 模块可以用 C 语言编程? 还是需要使用 N2HET IDE 来完成?  

此外、还可以选择边缘接口功能、但由于编码器信号可以随时发生、这看起来会在 CPU 上引起中断、我不希望...  

此外、我如何将编码器的相关信息返回 CPU 以使用它们?  您是否有一个用于1个正交编码器的 C 代码、我可以复制该代码来获取我所需的正交读数?

不太确定问题是否清晰...  

谢谢、致以最诚挚的问候!

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

    HALCoGen 可以为非常简单的 PWM、ECAP、边缘检测等生成代码 对于边沿检测、它使用 ECNT 指令。 对于 ECAP、它使用 PCNT 指令。 该代码无法实现 SPNA228中提到的 QEP (正交编码器)。

    NHET 使用在 TRM 中定义的指令集(30条指令)。 无法使用 C 代码对其进行编程。 HET IDE 是调试/仿真 NHET 代码的最佳工具。

    什么是"边缘接口功能"? 抱歉、我没有用于正交编码器的任何 C 代码。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    哦,还可以

    因此、最好的方法是使用 NHET IDE。  

    [引用 USER="QJ Wang ]'什么是"边缘接口函数"? 抱歉、我没有用于正交编码器的任何 C 代码。[/quot]不是图像、而是某些函数的标题。  

    谢谢!!

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

    大家好

    非常感谢您在这里提供的帮助...

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

    您好、Miguel、

    正如您已经知道的、一个 QEP 需要3个 NHET 引脚和至少15个 NHET 指令。 例如、如果您只需要一个 QEP、请将 AppNote 中的15条指令复制到 HET IDE、并进行仿真以确保其满足您的要求。

    汇编 NHET 代码、将生成*。c 和*。h

    2.在 C 代码中(例如 NHET.c)、将 c 文件复制到 NHET RAM 中:

      memcpy ((void*) hetRAM1、(void*) HET_INIT0_PST、sizeof (HET_INIT0_PST));

    当 NHET 被使能(GCR 寄存器)时、NHET 执行代码

    4.您可以更改代码中任何指令的控制字段、数据字段,例如更改第一条指令的数据字段:

       hetRAM1->Instruction [0].Data = 0x0000;

       或 hetRAM1->Instruction [Phet_start_0].Data = 0x0000; 其中 Phet_start_0定义为 DIN *。h 文件(由 HET IDE 生成)

       或读取指令0的数据字段:

       ABC = hetRAM1->Instruction [Phet_start_0].Data

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

    谢谢王

    很抱歉我迟到了。 我已离开办公室。 我将进行检查。  

    由于 我对索引引脚不感兴趣、因此我的代码仅使用两个引脚。

    它的用途是什么?

    [引用用户="QJ Wang "]

    4.您可以更改代码中任何指令的控制字段、数据字段,例如更改第一条指令的数据字段:

       hetRAM1->Instruction [0].Data = 0x0000;

       或 hetRAM1->Instruction [Phet_start_0].Data = 0x0000; 其中 Phet_start_0定义为 DIN *。h 文件(由 HET IDE 生成)

       或读取指令0的数据字段:

       ABC = hetRAM1->Instruction [Phet_start_0].Data

    [/报价]

    此致!

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

    您好、Wang

    边缘接口功能

    [引用 user="QJ">什么是"边缘接口功能"? 抱歉、我没有正交编码器的任何 C 代码。[/quot]

    此指令是否类似... 用于从 N2HET 模块恢复数据??? 或者想要在 检测到边沿时获取中断请求、想要获取计数器??

    此致

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

    所以... 我可以使用 HALCOGEN 生成的函数 从 N2HET 恢复数据吗? 还是不像这样?

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

    对于边沿检测、ECNT (事件计数)指令用于对脉冲的边沿进行计数。 该事件可以是以下事件之一:
    下降沿
    2.上升沿
    3.双边沿
    引脚为高电平时
    引脚为低电平
    6. NAF 标志被置位

    当一个事件发生时、计数器值(ECNT 数据域)被递增。

    如果 ECNT 指令是代码中的第二条指令、则 ECNT 被放置在0xFF460010中(NHET1 RAM 基地址为0xFF460000、并且每条指令需要四个32位字)。 每个指令包含3个部分:程序、控制、和数据、以及保留(第4个字)。 数据字段位于0xFF460018

    如果 ECNT 指令是代码中的第三条指令、则 ECNT 被放置在0xFF460020中(=基地址+ 0x10*(num-1))。

    edgeGetCounter 是从0xFF460018读取值
    edgeResetCounter 将0写入0xFF460018
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的。 明白了。
    因此、请保持清晰。 如果我将代码从 HET IDE 上传到 MCU、我可以使用 edgeGetCounterTM 从编码器获取数据?
    谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Miguel、

    您可以使用 HET IDE 来生成*。c 代码(一个数组)、*。h 文件、在该文件中、标签名称映射到指令的#。

    您可以使用 memcpy 将*。c 数据复制到 NHET RAM 中。

    但您还需要修改 edgeGetCounter()的函数,以在代码中获取计数器(ECNT)。 例如、这是您的代码:

    L00 CNT…

    L01 ECMP...

    L03 MOV32...

    L04 PCNT...

    L05 ECNT...

    L06 BR...

    ECNT 是代码中的#5指令,应将 edgeGetCounter()更改为:

    uint32 edgeGetCounter (hetRAMBASE_t * hetRAM、uint32边缘)

      返回 hetRAM->指令[5].Data >> 7U;

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

    谢谢!!!