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.

[参考译文] TMS570LC4357:尽管 UI 中出现上拉电阻 (TMS570LC4357)、HALCoGen 仍然不会为 N2HET2[22]设置 PSL 位

Guru**** 2860250 points

Other Parts Discussed in Thread: TMS570LC4357, HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1636444/tms570lc4357-halcogen-does-not-set-psl-bit-for-n2het2-22-despite-pull-up-selection-in-ui-tms570lc4357

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

早上好、

我正在使用 TMS570LC4357(器件:TMS5704357BZWTQQ1)和 HALCoGen v04.07.01

我使用 HALCoGen 将各种 N2HET2 引脚配置为带上拉的输入。 我观察到 N2HET2[22]出现意外行为、其中 UI 中的上拉选择不会反映在生成的寄存器配置中。  

重现步骤:  

  1. 创建新的/干净的 HALCoGen 项目、器件:TMS570LC4357ZWT
  2. 导航至“HET2"选项“选项卡、然后导航至“Pin 16-23“选项卡
  3. 滚动到位 22、选中“Bit 22 Pull“复选框、观察标签 HET2[22]
  4. 保存项目、生成代码
  5. 导航至 hl_het.c
  6. 观察 hetREG2->PSL = 0(请参阅第 2602 行)
  7. 检查[projectname].dil
  8. 观测  
    Driver.HET.VAR.HET2_BIT22_PULDIS.value=0x00000000、  
    Driver.HEET.VAR.HET2_BIT22_pull.value=2、 driver.HEET.VAR.HET2_BIT22_PSL.value=0x00000000

如您所见、pull.value 为 2(选择 pullup 时预期为 2)、但 PSL.value 仍为 0。  

此外、我返回到 UI 并为位 21、22、23 选择了上拉配置。 我看到了关于位 21 和 23 的 PSL 值的预期行为。 因此,这似乎是特定于 N2HET2[22]。

现在、我将添加用户代码来强制选择这个上拉电阻。

谢谢您、

Savanah Evans

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

    尊敬的 Savanah:

    我们有一个内部 AI、可分析与此器件相关的所有文档和数据。 我从 AI 工具得到了一些建议、首先我建议您参考这些建议。

    #分析和确认

    你已经发现了一个** HALCoGen bug 特定于 N2HET2[22]**。 您的调查是彻底的、并清楚地表明了问题:

    ##问题
    -** UI 设置**:选中 HET2[22]上拉复选框
    -** DIL 文件**:显示`HET2_BIT22_pull.value=2`(正确-选择了上拉)
    -**生成的代码**:`hetREG2->PSL = 0`(不正确 — 应设置位 22)
    -**相邻引脚**:HET2[21]和 HET2[23]工作正常

    这表明 HALCoGen 代码生成引擎在将 HET2[22]上拉配置转换为 PSL 寄存器值时存在错误。

    ##建议的权变措施

    由于您仍然需要修改生成的代码、下面是最干净的方法:

    ###选项 1:在`hl_het.c`的用户代码部分中修改
    ```c
    /*用户代码开头 (2)*/
    /* HALCoGen 错误的权变措施 — HT2[22]上拉未正确生成*/
    hetREG2->PSL |=(1U << 22u);/*为 HET2[22]启用上拉电阻*/
    /*用户代码结束*/
    ```μ s

    ###选项 2:创建自定义初始化函数
    在应用代码(未生成代码)中:
    ```c
    空应用程序 HET2PullupFix(空)

    /* HALCoGen v04.07.01 HET2[22]的错误变通办法*/
    hetREG2->PSL |=(1U << 22U);
    }
    ```μ s

    在`hetInit()`之后调用此。

    ##报告问题

    我建议通过以下方式向 TI 报告此信息:
    -** E2E 论坛**: e2e.ti.com/.../
    -***TI 支持**:直接支持工单

    包括您的发现:
    - HALCoGen 版本: v04.07.01
    -器件:TMS570LC4357ZWT (TMS5704357BZWTQQ1)
    -受影响的引脚:仅 N2HET2[22]
    -问题:尽管用户界面配置,但 PSL 寄存器位未设置

    ##附加验证

    您可能还需要验证 PULDIS 寄存器是否正确设置为 0(启用上拉/下拉电阻,未禁用):

    ```μ s
    /*验证上拉电阻是否未禁用*/
    hetREG2->PULDIS &=~(1U << 22U);/*确保已启用拉动*/
    hetREG2->PSL |=(1U << 22U);/*选择上拉*/
    ```μ s

    这是 HALCoGen 中针对该特定引脚的明显代码生成缺陷。 您的变通方法是正确的。

    --
    此致、
    Jagadish。