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/TMS320F28027F:启用上拉电阻以实现50uA 停机电流后、GPIO 需要显式写入 GPADIR

Guru**** 2563960 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/639107/ccs-tms320f28027f-gpio-need-explicit-write-to-gpadir-after-enabling-pull-up-to-achieve-50ua-halt-current

器件型号:TMS320F28027F

工具/软件:Code Composer Studio

您好!

www.ti.com/.../sprufn3d.pdf 中、复位后 GPADIR 为0 (输入)、位后 GPAPUD (对于 GPIO0~GPIO11)为1 (禁用)、我能够通过 CCS 寄存器查看器确认这一点。

当我为 GPIO1启用上拉电阻时、HALT 模式功耗将接近200uA (情况2)、但是如果我再次将0写入 GPADIR (请参阅情况3)、功耗将正确返回50uA。

您可以看到、对于所有情况、GPIO1的 GPADIR 始终为0 (复位后的默认值)、并且案例2和案例3的寄存器值没有差异。 对此行为有何解释?

该引脚在我的板上是悬空的、因此我的目的是将其保留为输入并启用其上拉电阻。

情况1)

GPIO_setMode (obj->gpioHandle、GPIO_Number_1、GPIO_1_Mode_generalpurpose);
GPADIR = 0x00010000
GPAPUD = 0x00010F17
GPADAT = 0x300E10EA
HALT 模式总电流:54.4uA

情况2)

GPIO_setPullUp (obj->gpioHandle、GPIO_Number_1、GPIO_PULLUP_Enable);
GPIO_setMode (obj->gpioHandle、GPIO_Number_1、GPIO_1_Mode_generalpurpose);
GPADIR = 0x00010000
GPAPUD = 0x00010F15
GPADAT = 0x300E10EA
HALT 模式总电流:189.5uA

情况3)

GPIO_setPullUp (obj->gpioHandle、GPIO_Number_1、GPIO_PULLUP_Enable);
GPIO_setDirection (obj->gpioHandle、GPIO_Number_1、GPIO_Direction_Input);
GPIO_setMode (obj->gpioHandle、GPIO_Number_1、GPIO_1_Mode_generalpurpose);
GPADIR = 0x00010000
GPAPUD = 0x00010F15
GPADAT = 0x300E10EA
HALT 模式总电流:54.4uA

谢谢、

Sy

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

    您是否能够在每种情况下获得波形? 我最初的想法是、这是引脚悬空的结果。 内部上拉电阻非常弱、因此如果外部有任何东西、它可以降低引脚上的电压。 如果接近阈值、则 GPADAT 可能不是一个良好的指示器、因为它需要持续刷新。

    您使用的是哪种封装? 如果不是 BGA、您是否确保所有未键合引脚都启用了上拉电阻器?

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

    您好、Kris、

    我找到了真正的原因、在进入应用程序之前、引脚被设置为在我们的软件引导加载程序中输出。

    我在两个不同的条件下进行了调查、实际上它们是不同的

    1) 1)在调试模式下记录寄存器内容(绕过引导加载程序)

    2) 2)在不使用调试器的情况下运行应用程序

    感谢为解决我的问题而提出的建议。