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.

[参考译文] CCS/TMS570LC4357:作为 GIO 访问 N2HET

Guru**** 2024750 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/608025/ccs-tms570lc4357-accessing-n2het-as-gio

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

工具/软件:Code Composer Studio

我从数据表和 HalCoGen 中看到、您可以将 N2HET 端口用作 GIO。 我们要将它们设置为可以从软件切换的输出。  

第一期:

我在 HalCoGen 中将所有 N2HET1位更改为数字输出。 HCG 项目文件已更改、但未生成任何源文件。 它不应该改变了吗?

HCG 是否提供了软件 API、允许软件切换值、或者我们是否必须直接写入寄存器?

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

    GPIO API 将使您能够使用嵌入式 GPIO 来操作其他外设的 GIO 寄存器。
    如果您查看 HET 的.h 文件、应该会有一个单独的 GPIO 基址、您可以将其作为句柄传递给 GPIO API、以设置和清除引脚。

    HET 的不同之处在于、您永远不会有功能模式与 GIO 模式- HET 引脚没有功能寄存器。

    假设您启用了输出、则 HET 或 CPU 将控制引脚状态(置位/清零)并共享引脚状态。 最后更新"成功"。
    因此、请确保您没有一个 HET 程序切换您希望通过加载的软件控制的相同引脚、并在 HET 上运行、否则您会有点疯狂地想知道发生了什么。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    那么、根据 hl_reg_het.h、它将是:#define hetPORT1 ((gioPORT_t *) 0xFFF7B84CU)?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Timothy、

    您是对的、因此您可以将 NHET 引脚用作常规 GIO 引脚。 例如:

    • gioSetDirection(hetPORT1、0xFFFFFFFF);
    • gioSetPort(hetPORT1、0x00000001);
    • gioGetPort(hetPORT1);

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

    谢谢。 我认为唯一的不确定性是我将所有 HET 通道更改为输出、并且根据 Git、不是 HalCoGen 生成的源更改。 这是默认情况下的预期结果吗?

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

    如果您不想将 NHET 用于 PWM/捕捉等、请确保这些特性未在 HALCoGen 中被启用或选择、并且不要将 NHET 微代码(操作码和数据)复制到 NHET RAM 中(在 hetInit()中):

    //(void) memcpy ((void *) hetRAM1、(const void *) het1PROGRAM、sizeof (het1PROGRAM);

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

    在 GUI 中进行更改后、您可能没有再次生成代码。

    GUI 只是更改了配置、但在您运行必须从菜单中完成的生成步骤之前、它不会显示在"C"代码中。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我实际上已经重新生成了两次以确保、这就是为什么我不知道它没有改变的原因。 文件被重新生成、只是没有显示任何差异。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    奇怪。 MMR 寄存器的值是否与 GUI 中的值相匹配?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我不确定 MMR 寄存器是什么、但我在 HalCoGen 中来回更改了 HET 引脚输入/输出值、尽管已写入源/标头、但没有任何更改。 这看起来像是一个 HalCoGen 错误。 我必须按照之前的帖子中的建议手动设置方向。

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

    您好、Timothy、

    修改配置后, 首先保存项目,然后生成 代码。 在 hl_het.c 中、hetREG1_DIR 的最后一行用于 HET[0]、而第一行用于 HET[31]。

    这是从我的 HALCoGen 生成的代码(HET[7:0]被配置为输出):

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我尝试将一个输出改回输入以对其进行测试、然后对文件进行了比较。 我看到项目文件发生了变化:

    @@-8427、7 +8427、7 @@ driver.HET.VAR.HET1_BIT31_Pull.Value=1
    driver.HET.VAR.HET1_BIT29_DIR.value=0x00000000
    driver.HET.VAR.HET1_BIT23_Pull.Value=1
    driver.HET.VAR.HET1_BIT15_Pull.value=1
    -driver.HET.VAR.HET1_BIT0_DIR.value=0x00000001
    driver.HET.VAR.HET1_BIT0_DIR.value=0x00000000
    driver.HET.VAR.HET2_CAP2_POLICLET.VALE=0
    driver.HET.VAR.HET2_PWM7_Duty.value=50
    driver.HET.VAR.HET2_BIT6_XORSHARE。value=0x00000000

    但没有生成源。 我在生成的代码中搜索了"hetREG1->DIR"、但它不会显示在任何位置。