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.

[参考译文] TMS320F280039C:GPIO57 无法读取输入数据

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1622653/tms320f280039c-gpio57-cannot-read-input-data

器件型号: TMS320F280039C

您好、专家

GPIO57 在客户设计中设置为输入、但在没有 MCU 复位的情况下进行固件更新后、GPIO57 无法读取输入数据。 它可以在 MCU 下电上电或复位 MCU 后工作。

我与客户进行了一些调试

  • EALLOW/EDIS 已添加到配置中
  • GPIO10 使用相同配置进行测试、没有问题
  • GpioCtrlRegs。 GPBQSEL/GPBMUX2/GPBDIR 寄存器按预期设置。

请分享您对这个问题的见解。

谢谢

Joe

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

    您好 Joe、

    这种症状是热固件更新的典型表现、在该更新中、器件未复位、因此来自前一个映像的 GPIO 状态保持有效。 如果之前的固件将 GPIO57 配置为外设功能/输出/模拟/锁定引脚多路复用、新固件可能会设置预期的寄存器、但仍然会在内部失去引脚的所有权、直到复位/下电上电会将所有寄存器恢复为默认值。

    确认 GPBGMUX2.bit.GPIO57 和 GPBMUX2.bit.GPIO57 都为 0。

    确保在固件更新流程(无复位)期间、通过禁用中断运行完全热启动硬件 初始化、重新初始化系统控制/外设时钟 并解锁 GPIO 引脚配置、最后强制 GPIO57 返回 GPIO 模式。



    此致、

    Masoud

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

    您好、 Masoud

    感谢您支持这种情况、因此对结果强制重置具有位字段操作的 GPyG 和 GPy 多路复用器不会有任何不同。 但调用 InitGpio() API 可以提供帮助。

    它们需要在警告固件更新期间保留一些 GPIO 状态、因为无法更改继电器状态。 由于这个原因,InitGpio () 不能应用于实际工程,是否有 API 来初始化单个 GPIO ?

    谢谢

    Joe

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

    您好 Joe、

    是的、如果 InitGpio() 解决了问题、这表明问题不仅是 GPBMUX2/GPBGMUX2、而且在热固件更新期间仍保留先前映像中的某些其他 GPIO 状态。 在这种情况下、完全器件复位将清除它、InitGpio () 也会通过重新初始化 GPIO 模块来清除它。

    如果他们不能调用 InitGpio (),因为必须保留一些与继电器相关的 GPIO ,更好的方法是只对 GPIO57 进行有针对性的重新初始化。 没有单个旧位域 API 与仅初始化一个 GPIO 完全等效、但这可以通过明确重新应用该引脚的所有相关设置来实现:如果需要、解锁引脚配置 、然后强制 GPIO 功能 (GMUX=0、MUX=0) 和数字模式、并将 PAD CONFIG/pull-up、 鉴定模式和 方向设置为输入。

    此致、

    Masoud

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

    您好、 Masoud

    更新调试结果、在客户引导过程中正确维护 GPIO 配置、因此一旦上电、GPIO57 就可以正常工作、现在我们将代码复制到应用代码、GPIO57 在热固件更新后也可以正常工作。

    谢谢

    Joe