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.

[参考译文] TMS320F28P550SJ:TMS320F28P550SJ:在调试模式下无法更改 GPIO 状态。

Guru**** 2816565 points

Other Parts Discussed in Thread: TMS320F28P550SJ, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1600583/tms320f28p550sj-tms320f28p550sj-cannot-change-gpio-state-in-debug-mode

器件型号: TMS320F28P550SJ
主题: SysConfig 中讨论的其他器件

您好、

我使用 TMS320F28P550SJ9(64 引脚)微控制器。  即使使用 GPyAMSEL 寄存器将 TMS320F28P550SJ 上 GPIO28 和 GPIO29 引脚的配置状态配置为数字运行、也无法更改这些引脚的配置状态。 实际上、在控制器引脚 gpio28/29 处、该值正在更改、但在调试会话期间在 CCS 寄存器窗口中查看时未反映更改。

  • EALLOW/EDIS: 我已将配置代码打包在 EALLOW;和 EDIS;指令中。
  • 引脚多路复用: 使用 GPxMUX、GPxGMUX 寄存器设置 GPIO 模式。
  • 方向: 将 GPDIR 设置为输入。
  • GPyAMSEL: 设置 GPyAMSEL 寄存器用于配置这些引脚以进行数字 (GPIO) 操作。
  • 寄存器视图: 我已刷新 CCS 中的“Register"窗口“窗口、但未观察到任何变化。

EALLOW;
 /------------------------------------------------------------------------------------------------------------------------
  GpioCtrlRegs.GPAAMSEL.bit.GPIO28 = 0;     //配置为 GPIO
  GpioCtrlRegs.GPAGMUX2.bit.GPIO28 = 0;      // GPIO-28  
  GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 0;      //
  GpioCtrlRegs.GPADIR.bit.GPIO28  = 0;      // 0 输入、1 输出

  /------------------------------------------------------------------------------------------------------------------------

  GpioCtrlRegs.GPAGMUX2.bit.GPIO29 = 0;      // GPIO-29  
  GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 0;      //
  GpioCtrlRegs.GPADIR.bit.GPIO29  = 0;      // 0 输入、1 输出

  /------------------------------------------------------------------------------------------------------------------------
EDIS;

问题是什么? 其他 GPIO 引脚的配置可以正常工作。

 

此致、

J. Rani

 

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

    您好、

    是否有关于上述问题的任何更新?

    此致、

    J. Rani

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

    尊敬的 Rani:

    这里有几种不同的东西正在混杂在一起。

    寄存“无法通过编辑 GPxDAT“强制“GPIO、在 C2000 上、GPxDAT 位反映引脚上的实际焊盘状态。 在驱动引脚时、不需要写入这些位。 要更改输出状态、您必须将引脚配置为输出 (GPADIR = 1) 并写入 GPxSET / GPxCLEAR / GPxTOGGLE。 除非您物理更改了驱动器的设置、否则无法从 CCS 对其进行更改。

    在您共享的代码中、您显式执行以下操作:

    GpioCtrlRegs.GPAAMSEL.bit.GPIO28 = 0;

    但您永远不会清除 GPAAMSEL.bit.GPIO29。 如果 GPIO29 仍处于模拟模式、那么期望正常的数字 GPIO 行为/回读时、您可能会看到“奇数“行为。

    所以添加:

    EALLOW;
    GpioCtrlRegs.GPAAMSEL.bit.GPIO28 = 0;
    GpioCtrlRegs.GPAAMSEL.bit.GPIO29 = 0;
    EDIS;

    在 LaunchPad 上、GPIO28 (SCIA_RX) 和 GPIO29 (SCIA_TX) 默认路由到板载 XDS110 虚拟 COM 端口、而路由由由由由板载开关 S2 控制。 这在调试时绝对会混淆“GPIO 行为“预期。

    此致、

    Masoud

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

    尊敬的 Masoud:

    > 但您永远不会清除 GPAAMSEL.bit.GPIO29。 如果 GPIO29 仍处于模拟模式、那么期望正常的数字 GPIO 行为/回读时、您可能会看到“奇数“行为。

    GPIO29 引脚没有定义为 GPIO 的备选功能、因此我没有写入 GpioCtrlRegs.GPAAMSEL.bit.GPIO29 = 0;

    它是硬件中的定制 PCB GPIO28/29 引脚具有电压 3.2V。 但在 GPIO 配置寄存器(调试中)中、它显示为 0 状态。 即使硬件中的引脚状态发生变化、它也不会改变。

    我对另一个 GPIO (GPIO11、GPIO33) 执行了相同的操作、因为它们运行正常。 在硬件中、当我更改引脚状态时、也会在 GPIO 配置寄存器中反映同样的情况。

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

    尊敬的 Rani:

    我有两个问题:

    您在任意位置调用 Board_init ()/sysconfig init?

    您是在 CCS 中读取 GPADAT 还是“GPIO status“视图?

    我们有 单独的寄存器组、分别用于  将 GPIO_DATA_REGS 与输出数据锁存 器(您上次写入的内容) 相关联、并将 GPIO_DATA_READ_REGS 与实际引脚状态(焊盘所看到的内容)相关联。  因此、如果 GPIO29 配置为输入、输出锁存器将不会跟随外部 3.2V 电平、它将保持上次写入的值(通常为 0)、看起来它在调试中没有变化。

     如果您在 CCS(对于 GPIO29)中共享以下内容的屏幕截图、将会很有帮助:GPAMUX/GPAGMUX、GPADIR 和您正在查看的值 (DATA 与 DATA_READ)。

    此致、

    Masoud