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.

[参考译文] MSP430F5359:如何将所有四个"端口 J"(JTAG)引脚配置为用作 GPIO?

Guru**** 1138100 points
Other Parts Discussed in Thread: MSP-FET, MSP430F5359
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1338931/msp430f5359-how-do-i-configure-all-four-port-j-jtag-pins-for-use-as-gpios

器件型号:MSP430F5359
主题中讨论的其他器件:MSP-FET

如果我正确阅读了文档(数据表和系列用户指南)、MPS430F5359的四个 JTAG 引脚(TDO、TDI/TCLK、TMS 和 TCK)也可被配置为 GPIO 引脚 PJ.0、PJ.1、PJ.2和 PJ.3。

那么、我编写了一些代码来尝试执行该重新配置、然后操纵引脚。 (您可以轻松地猜测我的各种宏的功能。)

// set_bits (PJOUT,(bit_3 | bit_2 | bit_1 | bit_0));
// SET_BITS( PJDIR,( bit_3| bit_2 | bit_1 | bit_0 ));

PJOUT = 0xFFFFU;
PJDIR = 0xFFFFU;

for (uint16 i = 0;i < 10u;i++)
{
CLR_BIT (PJOUT、BIT_0);
DELAY_US(10UL);

CLR_BIT (PJOUT,BIT_1);
DELAY_US(10UL);

CLR_BIT (PJOUT,bit_2);
DELAY_US(10UL);

CLR_BIT (PJOUT,bit_3);
DELAY_US(10UL);

PJOUT = 0x0000U;
DELAY_US(10UL);

Set_Bit (PJOUT,bit_0);
DELAY_US(10UL);

Set_bit (PJOUT,bit_1);
DELAY_US(10UL);

Set_Bit (PJOUT,bit_2);
DELAY_US(10UL);

Set_bit (PJOUT,bit_3);
DELAY_US(10UL);

PJOUT = 0xFFFFU;
DELAY_US(10UL);

但当我运行代码时、只有 TDO (PJ.0)会摆动。

这些文档说明 TEST/SBWTCK 信号对此具有一定的控制、但是当那个引脚被下拉至 VSS 时、GPIO 应该可用;我在电路板上有一个外部逻辑、  IS 下拉该引脚。

本文档还讨论了 SYSCTL 寄存器中的 SYSJTAGPIN 位、但重点是禁用 GPIO、因此我要让该寄存器保持默认 BOR 状态(设置该位似乎会禁用我成功使用 PJ.0)。

注:

端口 J 没有"SEL"寄存器来选择管脚是 GPIO 还是外设功能引脚。

有人知道为什么我只能得到 PJ.0作为 GPIO 工作、而不能得到 PJ.1、PJ.2或 PJ.3?

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

    尊敬的 Atlant:

    请尝试以下代码并验证其是否正常工作、在正确执行该测试时、除了示波器/LA 连接到 JTAG 引脚之外、是否没有任何其他连接?  

    int main(void)
    {
      volatile unsigned int i;
    
      WDTCTL = WDTPW+WDTHOLD;                   // Stop WDT
      PJDIR |= BIT3 | BIT2 | BIT1 |BIT0;
    
      while(1)                                  // continuous loop
      {
        PJOUT ^= BIT3;
        PJOUT ^= BIT2;
        PJOUT ^= BIT1;
        PJOUT ^= BIT0;
        for(i=50000;i>0;i--);                   // Delay
      }
    }

    此致、
    布兰登·费舍尔

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

    布兰登:

    >当您正确执行此测试时、除了示波器/LA 外、没有任何其他东西连接到 JTAG 引脚?

    感谢您提出这个问题;它打破了我松散的问题!

    简而言之、就是"是的、 我想拔下连接到多个 MSP430F5359s 的 MSP-FET 编程仓体"、但深入思考之后、我意识到在我们的测试板上还有 SN74LVC8T245DWR"具有可配置电压电平转换和三态输出的8位双电源总线收发器"能够缓冲内向 (从 MSP-FET 到 MSP430)从3.3V MSP-FET 电压域到 MSP430 2.5V 电压域的 TDI/TCLK、TMS 和 TCK 信号。 我们在电平转换器的 MSP-FET 侧提供了上拉电阻、并将 OE ("输出使能")引脚硬接地、因此即使拔下 MSP-FET 推进器、电平转换器仍能以极其坚硬的图腾柱高电平驱动这三个信号。

    (另一方面、TDO 通过 SN74LVC2T45DCTR 电平转换器从 MSP430 "向外"路由到 MSP-FET。)

    使用模拟示波器查看这三个信号、我可以确切地看到 MSP430试图将这些信号拉低、但无法通过电平转换器提供的硬上拉电阻将其拉低。

    我没早点意识到这一点、因为我们的测试装置 上还有一些神奇的双向电平转换缓冲器、我忘记了 JTAG 端口的电平转换器是单向的。

    因此" 谢谢! "、您的问题一直在我的存储器上、我现在可以确认使用 MSP430F5359、且将其 JTAG 位用作 GPIO 端口时一切正常。

    然后我将让 EES 修改我们的测试装置、以便在未插入 MSP-FET 时自动禁用入站电平转换器、或者至少在电平转换器的 OE 引脚上提供软下拉、以便在我想使用 四个 GPIO。

    此问题现已解决、再次感谢您的帮助!