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.

[参考译文] TMS320F280034:有关 GPIO 上拉行为的问题

Guru**** 2510315 points
Other Parts Discussed in Thread: TMS320F280034, SYSBIOS, UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1551676/tms320f280034-question-about-gpio-pull---up-behavior

器件型号:TMS320F280034
Thread 中讨论的其他器件: SYSBIOSUNIFLASH

工具/软件:

尊敬的 TI 论坛:
我使用的是 TMS320F280034 芯片、在 GPIO 内部上拉方面存在问题。

1.参考数据表

在数据表(图 1:5.5 引脚,带内部上拉和下拉)中、规定在复位后默认禁用 GPIO 引脚上的上拉。 具体而言、对于 GPIOx、应在复位时禁用内部上拉电阻。

2.调试中观察到的行为

但是、在我进行在线仿真时、在程序运行之前(图 2:Code Composer Studio 中的调试视图)、GPBPUD 寄存器并非全为 1。 这导致多个 IO 端口输出高电平。 只有当我的程序初始化 IO 引脚时、GPBPUD 寄存器才更改为禁用上拉电阻的状态(对应于禁用上拉电阻的值)。

3.问题

  • 在程序初始化 IO 之前、为什么 GPBPUD 寄存器未处于预期的全 1 状态(禁用上拉)? 是否有关于我缺少的引导过程或默认寄存器值的信息?
  • 如何确保 GPIO 上拉状态如数据表(已禁用)中所述在复位后立即出现、而无需等待程序的 IO 初始化?
随函附上相关数字:
  • 图 1:显示 GPIOx 上拉的数据表摘录应在复位时禁用。
  • 图 2:显示程序前 GPBPUD 寄存器状态的调试视图 — 级别 IO 初始化。
感谢您的帮助!
此致、
Elena
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Elena:

    在应用程序代码运行之前、调试器或引导 ROM 通常会将某些 GPIO 引脚配置为用于 JTAG 或其他目的。 这可能导致上拉寄存器显示除干净复位预期值之外的值。 如果默认复位状态至关重要、请考虑使用自定义启动(例如,修改 codestart 分支或 RESET ISR)在任何 CCS 或 ROM 例程影响上拉电阻之前对其进行配置。

    为了确保复位后上拉电阻、最可靠的方法是将 GPBPUD 显式设置为所需的值、作为引导加载程序或 SYSBIOS 所用初始化代码中的第一条指令。

    此致、

    Masoud

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

    非常感谢您的详细解释和建议。 但是、我仍然面临一个挑战、我想进一步澄清。

    我要关注的关键问题实际上是关于 GPIO 状态  自行对其进行编程/闪存过程 、而不是在重置后或程序执行期间。 目前、当我通过 CCS 将程序刷写到 TMS320F280034 时、多个 GPIO 引脚会在编程过程中输出高电平、这会影响我的外部电路。

    我理解您关于在初始化代码的早期配置 GPBPUD 的建议、但这似乎只有在程序开始运行后才会生效。 我需要的是防止这些高水平的发生  执行刷写过程  当芯片处于编程模式时、在我的任何应用代码(包括启动代码)执行之前。

    您能否提供一些指导、说明在编程阶段是否有办法控制 GPIO 状态? 例如:

    • CCS 或 UniFlash 中是否有可在刷写之前设置 GPIO 状态的配置选项?
    • 在编程期间、是否有任何硬件专用寄存器或引导配置引脚会影响 GPIO 行为?

    再次感谢您的帮助。

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

    尊敬的 Elena:

    当您通过 JTAG 从 CCS 刷写时、器件处于仿真引导状态。 在应用程序运行之前、引导 ROM 和调试连接可能会触摸几个引脚。 因此、即使数据表显示“复位后“禁用了上拉电阻、也可以在某些引脚上观察到电平。
    CCS 可以在目标连接/复位时自动运行 GEL_init 脚本;这些脚本可以在 加载/擦除/编程之前、将 GPIO 寄存器 (GPxPUD/GPxDIR/GPxDAT) 写入到安全状态。 GEL 文件在.ccxml 文件中使用、如下所示:

    以下是 .gel 文件的路径:

    C:\ti\ccs<version>\ccs\ccs_base\emulation\gel

    您可以强制方向/输出安全:相应地设置 GPxDIR/GPxSET/GPxCLEAR。
    总体而言、在进行设计时、您应该了解引导 ROM/JTAG 使用哪些引脚以及哪些引脚是引导模式选择;如果可能、请将关键输出关闭这些引脚。

    如果这样可以解决问题、请告诉我们。

    此致、

    Masoud

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

    感谢您的持续支持和解释。 我想分享进一步检查的一些其他详细信息:

    1. 相关引脚是 GPIO43、我已经确认它在我的设计中是一个通用 IO 引脚、与 JTAG 或其他特殊功能无关。 这就是在编程期间意外的高电平特别令人困惑的原因。
    2. 关于您提到的 GEL 文件和封装相关配置:
      我将使用具有 LQFP80 封装的 F280034SPN。 时钟 TI_OTP_PKG_TYPE 存储器地址、则获取的数据为 0x5A09 我认为这是真正的原因。 在 GEL 文件中、此值对应于“probe package“配置。 因此、在 enable_unbonded_pullups_80_P_pin() 函数中、GPBPUD 寄存器被写入 0x1FFFF27F。  与我的测量结果 0xDFFFF27F 相匹配。 虽然最高 8 位存在差异、但并不影响、因为我使用的是 80 引脚器件。
    3. 我尝试 在 GEL 函数中将 GPBPUD 寄存器写入 0x1FFFFFFF,发现问题已解决 — 编程期间不再上拉 GPIO43。
    但是、我仍然有问题:根据我的理解、我使用的 F280034SPN(LQFP80 封装)应该是 QUAL 类型、但从 OTP 读取的值表明是探针类型配置、这与我的预期不一致。 您能解释一下这两种封装类型之间的差异、以及我的芯片实际上是否属于鉴定类型吗? 修改 GEL 文件将 GPBPUD 设置为 0x1FFFFFFF 是否会导致任何其他意外问题或副作用?

    再次感谢您的帮助。

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

    尊敬的 Elena:

    GEL 中的探头与 QUAL 标签不是器件生命周期/质量等级;这只是 GEL 表对封装选项进行编码的方式、以便知道哪些引脚未键合。 F280034SPN (80 引脚 LQFP) 是生产器件;OTP 字段仅供 GEL 用于决定要连接哪个上拉电阻器。

    在 GEL 中强制 GPxPUD = 0x1FFFFFFF 是否安全?

    是的。 向 GPxPUD 写入 1s 会禁用内部上拉电阻(它不会驱动引脚)、因此在编程之前强制所有 1 是一种安全方法、可以防止在闪存/程序流期间 GEL 将 GPIO 拉高。 只需确保任何关键输出在启动期间不依赖于内部上拉电阻器。

    具体关于 GPIO43、GPIO43 是此封装上的正常 GPIO(即,不是 JTAG 引脚)。 编程期间它变为高电平的原因是 GEL 的未绑定上拉写入、而不是引导 ROM 代码。

    此致、
    Masoud

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

    非常感谢您一直以来的耐心和专业帮助。 你的指导是一个巨大的缓解,因为它真的解决了我的一个大问题。 我非常感谢您的帮助—再次感谢您!

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

    很高兴听到问题已解决Thumbsup

    此致、

    Masoud