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.

[参考译文] TMS570LS3137:端口方向寄存器在 PWM 和 ICU 初始化期间被覆盖

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/748412/tms570ls3137-port-direction-registers-are-overwritten-during-initialization-of-pwm-and-icu

器件型号:TMS570LS3137

在 AUTOSAR_MCAL_TMS570LSx-05.30.00中、在以下情况下会覆盖方向寄存器

场景1.

在 PWM_Init 之后、具有来自 Port_Init 的 UserConfiguration 的 N2HET1的方向寄存器被覆盖

详细信息:
PortPinN2Het1_25的 Port_Config 中
InitialPortMode = DIO
方向=输出
PIN_V5_37
PIN_Mux = ALT_1
Port_Init 之后的 DIR Regsiter 值--> 0x02400202

调用 PWM_init 后、它会自动设置为输入。
PWM_Init 之后的 DIR 寄存器为--> 0x0000FFFF

我看到下面的代码提取(PWM_Het_Init)正在执行此操作。
HET_PRY (RegBaseAddress)= 0x0000FFFFU;//通道0至15为优先级1、16至31优先级2 *
HET_PFR (RegBaseAddress)= 0x00000700U;
HET_CGR (RegBaseAddress)= 0x00030001U;
HET_PDR (RegBaseAddress)= 0x00U;
HET_PULLDIS (RegBaseAddress)= 0xFFFFFF0000U;
HET_PSL (RegBaseAddress)= 0xFFFFFF0000U;
HET_DIR (RegBaseAddress)= 0x0000FFFFU;

•请解释对方向寄存器进行硬编码从而忽略端口用户配置的原因。 根据我的理解、寄存器应该从用户配置的值写入、而不是一些硬编码/魔术数字。

根据 AUTOSAR、不允许覆盖用户配置。

 情形2.

与 PWM_Init 相同、ICU_Init 也会更改或覆盖 DIR 寄存器。 使用 Port_SetDirection()作为变通办法是不可接受的,因为方向已在端口模块中设置。 请同时删除对 ICU_Init 中寄存器的覆盖。

附加查询

以下寄存器中的硬编码对于 PWM 和 ICU 有何意义?

HET_PRY (RegBaseAddress)= 0x0000FFFFU;//通道0至15为优先级1、16至31优先级2 *
HET_PFR (RegBaseAddress)= 0x00000700U;
HET_CGR (RegBaseAddress)= 0x00030001U;
HET_PDR (RegBaseAddress)= 0x00U;
HET_PULLDIS (RegBaseAddress)= 0xFFFFFF0000U;
HET_PSL (RegBaseAddress)= 0xFFFFFF0000U;

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

    HET 代码正在为 PWM 执行 NHETx[0-15]配置、为 ICU 执行 NHETx[16-31]配置。 由于所有初始化 API 都被调用一次、您可以在 PWM_Init 和 ICU_Init 之后调用 Port_Init 吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Vishwanath、

    ECU 状态管理器规范建议的驱动器初始化的建议顺序如下、即 PWM_Init 和 ICU_Init 之前的 Port_Init。 这是当前遵循的内容。

    但是、该文档本身提到、虽然这是建议的顺序、但也可以执行其他操作。 如果我们选择这种替代方法、MCAL 交付必须确保以下内容  

    • MCAL 发行说明必须提及建议的 Init 序列。
    • 并确保 Port_Init 不会覆盖 PWM_Init、ICU_Init()或以前完成的其他驱动程序的配置值。
    • 是否建议在 Port_Init()中配置 PIN 多路复用器之前执行 PWM_Init、ICU_Init?

    MCAL 发行说明或用户指南中是否能确保这一点并提供推荐的顺序。

    此致

    Niveditha

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

    这项建议是一种变通办法。 我们将接受此更改请求并输入我们的内部错误跟踪工具。