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/F28M36P63C2:将 GPIO 锁存在高电平问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/704308/ccs-f28m36p63c2-latch-gpio-to-high-issue

器件型号:F28M36P63C2

工具/软件:Code Composer Studio

您好!

在该项目中、我正在尝试打开一个故障条件下的 LED。 基本上、我使用的是 GPIO 110、我已经在 GPDDIR 寄存器中将其设置为输出、将其设置为多路复用为 GPIO、并为相应位向 GPDSET 寄存器写入1。 但它不会将输出数据锁存到高电平。 当我监视窗口中的位时、它的值读为0。 我在这里遗漏了什么? 我应该改用 GPDDAT 寄存器吗? 因为我尝试过它、它也没有打开 LED。 我们非常感谢您的任何帮助或建议。

谢谢、

Srini.

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

    Srini,

    首先、让我们澄清一下 GPDxxx 寄存器的用途:

    下面列出了 GPDSET 的说明、它将始终读为零、此信息可在 TRM中找到。

    如果您想查看引脚的当前状态、请读取 GPDDAT 寄存器。

    第二:

    • 您是否已将 GPIO 从 GPIO 110的 ARM 内核访问 C28?
    • 您是否使用内存浏览器读回了 GPIO110的配置?
      • 您可能遇到 EALLOW 问题或其他问题正在单步执行您的配置。

    此致、
    Cody  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    // LED 配置为输出
    EALLOW;
    GpioG1CtrlRegs.GPDMUX1.bit.GPIO107= 0;//将多路复用器设置为 GPIO (默认)//GreenLED
    GpioG1CtrlRegs.GPDDIR.bit.GPIO107 = 1;//设置为输出
    
    GpioG1CtrlRegs.GPDMUX1.bit.GPIO110= 0;//将多路复用器设置为 GPIO (默认)//AmberLED
    GpioG1CtrlRegs.GPDDIR.bit.GPIO110 = 1;//设置为输出
    
    GpioG1CtrlRegs.GPDMUX1.bit.GPIO111= 0;//将多路复用器设置为 GPIO (默认)//RedLED
    GpioG1CtrlRegs.GPDDIR.bit.GPIO111 = 1;//设置为输出
    
    GpioG1DataRegs.GPDSET.bit.GPIO107=1;
    GpioG1DataRegs.GPDSET.bit.GPIO110=1;
    GpioG1DataRegs.GPDSET.bit.GPIO111=1;
    EDIS; 

    谢谢、Cody。 我检查了 GPDDAT.bit.GPIO110并将其设置为1。 我已经为 C28内核提供了对所有 GPIO 的访问。 当我观察示波器上该引脚的输出时、它不会变为高电平并保持低电平。  在我写入这些寄存器之前、我启用了 EALLOW 并在写入之后将其禁用。

    我验证了 GPDDAT 寄存器的内容、并且它的内部内容准确无误。 有什么想法吗?

    Srini.

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

    Srini,

    [引用 user="Srinivasan Venkatasubramani"]我验证了 GPDDAT 寄存器的内容,并对其中的内容进行了准确的验证。

    那么、您可以看到 GPIO110的 GPDDAT 寄存器中的1和0发生了变化吗?

    您已将什么连接到 GPIO110的引脚? 是否有任何下拉电阻器? 是否有可能意外地被分流到地面上?

    此致、
    Cody  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此时、我不希望它改变1和0、因为我希望它持续拉高。 不会尝试使 LED 闪烁。 打开它。 和
    我的 LED 阳极连接到 GPIO、阴极通过一个2.2k Ω 下拉电阻接地。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Srini,

    我知道您不想切换 GPIO、但这将证明您是否可以强制它进入高电平和低电平状态。\

    此致、
    Cody  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢、Cody。 我解决了这个问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很棒
    请发布您需要更改的内容的摘要、以使其正常工作。 它将在未来帮助其他人!!

    此致、
    Cody
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗯、我所犯的错误是、我的板上有一些 GPIO 被指定为始终像输入一样运行。 我忽略了这一点、并尝试将其设置为输出、这就是我遇到问题的原因。

    在任何情况下、我认为一般经验法则是、确保您的 GPIO 没有硬件限制。 有时、由于您的电路板设计或其他原因、您可能会有内部上拉电阻、这意味着您需要通过监控 M3主系统中的 GPIOPOD 寄存器来禁用内部上拉电阻器。

    所有 GPIO 默认复用为 GPIO、但安全性不会受到影响。 使用 GPxDIR 寄存器将其设置为输出、然后您可以设置或清除锁存器、以使用 GPxSET 和 GPxCLR 控制 GPIO 高电平或低电平。 要监控它们是被拉高还是被拉低、请查看 GPxDAT 的内容。

    希望这对您有所帮助、
    Srini.