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/MSP-EXP430FR5969:连接到目标时出错:器件的调试接口已被保护

Guru**** 2589280 points
Other Parts Discussed in Thread: MSP-EXP430FR5969, MSP430FR5969

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/723968/ccs-msp-exp430fr5969-error-connecting-to-the-target-the-debug-interface-to-the-device-has-been-secured

器件型号:MSP-EXP430FR5969
主题中讨论的其他器件: MSP430FR5969

工具/软件:Code Composer Studio

下午好。
我使用了 CCS 6.2.0并通过 USB 端口对 MSP-EXP430FR5969进行编程。 我正在测试端口 A1 (P2.5和 P2.6)后面的串行通信程序。 通信工作正常。 写入后、IDE 返回以下消息:"Error connecting to the target:the Debug Interface to the device has been secured"。 直到那时、该卡才能够被记录。 如何解锁录音?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    如果 JTAG 保护在没有密码的情况下启用、则意味着完全不可逆转。
    但您必须在 IDE 中显式激活他的功能。 但我可能会误解您对问题的描述。
    您是否已通过 BSL 测试编程? 但 BSL UART 通信引脚是 P2.0/P2.1。
    您在写过之后说过、这是否意味着在成功下载一个代码后尝试下载另一个代码时、您收到错误消息? 还是在串行通信正常后首次尝试下载代码?

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

    早上好。
    如下图所示、我将通过 USB 端口在 MSP430上下载。 我已经通过超过1000倍的 USB 端口在板上下载了该程序、并且一直工作。 IDE 在某个时候出现此故障。
    当我说我正在进行 UART 测试时、我指的是与另一个器件的通信;但与 MSP430的记录无关。
    如何解锁 MSP430?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    非常感谢作出进一步澄清。 遗憾的是、答案仍然不容易、因为可能有许多不同的原因、即您为什么会收到此消息。
    1、器件可能处于锁定状态、但情况可能并非如此。 可能只是由于任何原因而导致调试通信失败。
    调试通信失败可能与调试器部分有关。
    故障可能与 MSP430器件有关。
    4.如果由于 MSP430而发生故障、JTAG 实际上已经被锁定、或者无意中在 IDE 中设置相应的设置、或者由于调试接口的一些临时故障。
    5.对于 MSP430,您下载到器件的最后一个代码也可以非常快地将器件切换到 LPM,关闭 MCLK/SMLK。 在这种情况下、工具有时难以设置 JTAG 连接、因此需要器件上的内部时钟。
    也可能是调试器部分或 MSP430被 ESD 等"损坏"。

    因此、为了解决问题、我们首先需要找出上述哪种情形适用于您的案例。 因此、还有一个问题。 您是否有其他 MSP430编程工具、可以是 Launchpad、也可以是 USB 调试器工具、例如 UIF、新的 MSP430-FET 或其他配备 MSP430的电路板、您可以在其中访问未锁定器件的 Spy-Bi-Wire 连接?

    我提出这一问题的原因基本上是检查您是否可以使用外部编程工具或外部 MSP 来检查 LP 的调试器部分或 LP 上的 MSP430的功能。

    此致
    Peter
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    服从他的解释。
    如果项目5为真、应采取什么措施? 但事实并非如此、因为在程序中、我没有访问任何 LPM 模式。
    是否建议我卸载并随后安装 CCS 6.2.0或其他版本?
    我没有其他编程工具、也没有其他 MSP430器件可供测试。

    谢谢你。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    如果情况5适用、那么在器件进入 LPM 之前、由于目标是实现 JTAG 同步、因此即使不是不可能、也会变得很困难。 过去、我们在工具上做了一些改进来解决这一问题、但这涉及 RST 信号的时序和尝试通信的后续 JTAG 同步。
    给定一组工具、您可以应用的主要更改是、如您所示更新 CCS、因为 Launchpad 上的调试接口肯定还会有 DLL 和固件更新。
    最新版本为 CCS8.1。 完整的编译器版本可完全免费提供。 因此、请尝试下载并安装它。 当您启动它并首次尝试将代码下载到 LP 时、它将要求您更新固件、从而为您提供在弹出窗口中单击"更新"按钮的选项。 请单击更新并等待更新完成。 这可能需要一些时间。 之后、应开始向您的器件下载代码。 也许这已经解决了整个问题。

    为了解决您在解锁具有锁定 JTAG 的器件时遇到的问题、用户指南 www.ti.com/.../slau367o.pdf 中有一些部分 、请参阅第1.13节使用电子保险丝的 JTAG 和 SBW 锁定机制
    遗憾的是、如果您使用密码锁定了 JTAG、则在没有其他工具的情况下、您可以解决的唯一可用选项情况就是这种情况。 但是、要解锁、您需要知道密码。 正如您所说的、没有故意锁定器件、我假设您不知道密码。
    因此、唯一的其他选项是通过 BSL 访问擦除器件、但这需要其他工具。

    因此、让我们看看在安装并测试最新的 CCS 版本后会发生什么情况。

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

    早上好。
    正如你所说的那样,我做了,但我没有成功。 我卸载了 CCS 6.2.0并安装了 CCS 8.1.0、但未成功。 误差保持不变。 我在另一台计算机上安装了程序,但错误仍然存在。 我认为这是板上的东西。
    有了这种确定性,我想知道我如何才能继续。 要解锁我的卡、我应该购买哪款 BSL 器件? 如何解锁?
    如果可能、向我发送链接、以便您可以购买合适的产品。
    谢谢你。

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

    对于 BSL、可使用任何 USB 转串行桥接芯片或 G2 LP (基于 slaa535 LaunchPad 的 MSP430 UART BSL 接口)。

    http://sustburbia.blogspot.com/2016/02/the-great-msp430-bootloader-swindle.html

    http://www.kerrywong.com/2013/03/27/schmartboard-msp430f5172-development-kit/

    https://forum.43oh.com/topic/2972-sbw-msp430f550x-based-programr/?do=findComment&comment=43889

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    非常感谢您对此进行了更新。 很抱歉,它没有解决。 我不想让您无法获得 BSL 硬件。 我只想尽可能减少你的失望和努力。
    当您收到器件已锁定的消息时、存在一定的风险、例如电路板上的器件已损坏、在这种情况下、甚至 BSL 尝试也可能不起作用。 因此、我想购买另一个 LP。 这很可能是最简单、最便宜的问题解决方案。
    使用新的 LP、您甚至可能有机会修复第一个 LP、但希望能够立即再次严峻地工作。 只是我的想法。

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

    [引用用户="Peter Spevak"]
    当您收到设备已锁定的消息时、存在一定的风险、例如电路板上的某些东西已损坏、在这种情况下、甚至 BSL 尝试也可能不起作用

    通过使用另一个外部(任何 MSP430)目标器件、通过移除跳线断开 eZ-FET Lite 和 LP 目标器件(FR5969)之间的默认连接、可轻松验证板载 eZ-FET Lite 功能。

    [引用 user="Peter Spevak"]我想购买另一个 LP。 这很可能是最简单、最便宜的问题解决方案。
    使用新的 LP、您甚至可能有机会修复第一个 LP、但希望能够立即再次严峻地工作。 只是我的想法。[/引述]

    器件可能被下载的错误代码锁定、或下载的固件自行覆盖保险丝值。 全新的 LP 也会出现同样的情况、因此购买一个或十个新的 LP 将无法解决问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Zrno、
    非常感谢您的评论。 上周已经提到了这些要点。 遗憾的是、这不是该用户的选择、因为他没有其他 MSP430或其他工具。

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

    早上好。
    我将购买另一张卡、看看错误是否会继续。
    感谢您的观看。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我们希望新工具能够按预期运行。 在任何情况下、我都建议使用最新的 CCS 版本。 首次下载时、可能会要求您对调试器部分进行固件更新。 在这种情况下、请进行确认、并等待其完全完成。
    如果您需要进一步的支持、请打开一个新主题。 非常感谢并取得了很大的成功。

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

    早上好。
    它遵循在卡上编译和运行的最后一个代码。
    通过查看它、您能识别出可能导致电路板故障的因素吗?

    #include "driverlib.h"
    #include
    #include

    //******* 可配置 ES DA 标签**
    #define tipo STA // define O Modelo DA 标记
    #define COLETOR "homolog.senfio.com.br"// base do COLETOR
    #define PORTA "80"//Porta de ENVIO
    #define FW_VERSION "7.1.0"// vers?o do firmware

    //******* 「定义」
    #define FLAG_LOG 2//FLAG DE MEM?RIA QUIDE 指示器 QUANTIDADE DE 数据记录器
    #define MAC_MEM 4 //POSI???o inicial DA MEM?RIA de ALOCA???o do MAC
    #define LOG_MEM 40 //POSI??o inicial DA MEM?RIA de ALOCA??o DOS Dataloggers
    #define LIM_DTLGR 50 //LIMITA???o ESP para ENVIO de Dados (M?X 536 CARACTEES = 21数据记录器)

    #define erro 0x32 //VARI?VEIS para utiliza?O no programa
    #define OK 0x33 //VARI?VEIS para utiliza?o no programa
    #define on true //VARI?VEIS para utiliza?O no programa
    #define off fals//VARI?VEIS para utiliza?O no programa
    #define NONE 00 //VARI?VEIS para utiliza?O no programa
    #define ODD 01 //VARI?VEIS para utiliza?o no programa
    #define even 10//VARI?VEIS para utiliza?O no programa

    #define STA 100//VARI?VEIS para utiliza?o no programa (tipo DA 标记)
    #define STB1 101 //VARI?VEIS para utiliza?o no programa (tipo DA 标签)
    #define STB2 102//VARI?VEIS para utiliza?O no programa (tipo DA 标签)
    #define STC 103//VARI?VEIS para utiliza?O no programa (tipo DA 标签)
    #define STA2 104//VARI?VEIS para utiliza?O no programa (tipo DA 标签)

    //******* 马奎纳-德埃斯特多斯·伊斯特斯·伊斯格斯·

    #define WDT 98//VARI?VEIS para utiliza?O no programa (切换用例-状态机)
    #define START 0//VARI?VEIS para utiliza?O no programa (开关用例-状态机)
    #define WAKE 1//VARI?VEIS para utiliza?O no programa (开关用例-状态机)
    #define DISASSOCIATE1 2//VARIRegisteredVEIS para utiliza?o no programa (切换用例-状态机)
    #define READ_MAC 3 //VARIRegisteredVEIS para utiliza?o no programa (开关用例-状态机)
    #define RESDATA_MAC 4 //VARI?VEIS para utiliza?o no programa (切换用例-状态机)
    #define CONFERE_LOG 5//VARI?VEIS para utiliza?o no programa (切换用例-状态机)
    #define tetste_wifi 6//VARI?VEIS para utiliza?o no programa (切换用例-状态机)
    #define tete_Colet 7 //VARI?VEIS para utiliza?o no programa (切换用例-状态机)
    #define SEND 8//VARI?VEIS para utiliza?O no programa (切换用例-状态机)
    #define ENVIA_log 9 //VARI?VEIS para utiliza?o no programa (切换用例-状态机)
    #define Receive 10//VARI?VEIS para utiliza?O no programa (开关用例-状态机)
    #define RECEIVE_FIVE_LOG 11 //VARI?VEIS para utiliza?o no programa (切换用例-状态机)
    #define ARMZENA 12//VARI?VEIS para utiliza?o no programa (切换用例-状态机)
    #define SLEEP 13/VARI?VEIS para utiliza?O NO 可编程(开关用例-状态机)
    #define tetste_RSSI 14 //VARI?VEIS para utiliza?o no programa (切换用例-状态机)
    #define tetste_WIFI2 15 //VARI?VEIS para utiliza?o no programa (开关用例-状态机)
    #define tete_COLET2 16 //VARI?VEIS para utiliza?o no programa (切换用例-状态机)
    #define end 17 //VARI?VEIS para utiliza?O no programa (切换用例-状态机)

    字符串1[120];
    字符串2[120];
    unsigned int i、z、flag;//计数器
    volatile unsigned int j;
    char recebe_mac[30];// VARIÁVEL Ω de ALOCAÇÃO Ω de Dados RECEBIDOS via UART (MAC)
    char recebe_wifi[15];// VARIÁVEL de ALOCAÇÃO ó n de Dados RECEIDOS via UART (RESOTA DE CONEXÃO ó n)
    char recebe_wifi2[15];// VARIÁVEL de ALOCAÇÃO de Dados RECEIDOS via UART (RESTOTA DE CONEXÃO)
    char recebe_wifi3[15];// VARIÁVEL de ALOCAÇÃO de Dados RECEIDOS via UART (RESOTA DE CONEXÃO)
    char recebe_RSSi[8];// VARIÁVEL de ALOCAÇÃO de Dados RECEIDOS via UART (RESOTA DE CONEXÃO)
    char msgok[22]="XHTML TP/1.1 200 OKZ\0";//string para comparaTM?o COM O dado RECEBIDO (RESPOSTA Web)
    char wifiok[10]="XOK\0";//string para compara??o com o dado RECEBIDO (RESOTA DE CONEX?O)
    CHAR MAC1[30];
    字符 RSSI[4];
    易失性字符 Estado;

    void sendUART (char string123[50]);
    void receiveUART (void);
    void setup();
    void delayReceive();


    void main (void)

    Setup();
    I = 0;
    Z = 0;

    Estado = start;//Estado inicial do switch case
    while (1)//loop Infiniband

    开关(Estado)//开关外壳 DA M?QUINA DE Estados

    案例开始:


    Estado = DISASSOCIATE1;//PR?XIMO Estado 切换外壳

    中断;

    案例 DISASSOCATE1:
    Estado = Read_MAC;//PR?XIMO Estado 切换用例
    中断;

    案例 READ_MAC:
    strcpy (string1、"MAC");
    sendUART (string1);
    标志= 0;
    while (flag!= 1)//loop ENQUANTO N?O RECEBE OS Dados via UART

    J = 500;// SW 延迟
    执行 j-;
    while (j!= 0);

    对于(I = 0;I < 17;I++)//M?TODO DE REALOCAMENTO DOS Dados NUMA VARI?Vel

    MAC1[i]= recbe Mac[i];//Salva O MAC NA VARI?Vel CORRETA

    MAC1[2]= MAC1[3];
    MAC1[3]= MAC1[4];
    MAC1[4]= MAC1[6];
    MAC1[5]= MAC1[7];
    MAC1[6]= MAC1[9];
    MAC1[7]= MAC1[10];
    MAC1[8]= MAC1[12];
    MAC1[9]= MAC1[13];
    MAC1[10]= MAC1[15];
    MAC1[11]= MAC1[16];
    MAC1[12]='\0';//TERMINADOR DOS Dados DA VARI?Vel


    if (((MAC!=NULL))//Verifica SE O MAC EST? CORRETO (POSI??O DOS ":")

    Estado = teste_wifi;//PR?XIMO Estado do 开关外壳
    } else //CASO MAC ESTEJA INCORRETO

    Estado = Read_MAC;//RETORNA para O MESMO Estado

    中断;

    案例 tetst_wifi:
    _DELAY_CYCLES (1200000);
    strcpy (string1、"string1");
    sendUART (string1);
    标志= 0;
    while (flag!= 1)//loop ENQUANTO N?O RECEBE OS Dados via UART

    J = 500;// SW 延迟
    执行 j-;
    while (j!= 0);

    recbe _wifi [3]='\0';//TERMINADOR DOS Dados DA VARI?Vel
    if (strcmp (wifok、recibe_wifi)==0)//Verifica SE A RESPOSTA FOI positiva (CONEX?O OK)

    Estado = teste_RSSI;//PR?XIMO Estado 切换用例

    else //CASO A CONEX?O N?O FOI positiva

    Estado = teste_wifi;//PR?XIMO Estado do 开关外壳

    中断;

    案例 tete_RSSI:
    _DELAY_CYCLES (1200000);
    strcpy (string1、"RSSI");
    sendUART (string1);
    标志= 0;
    while (flag!= 1)//loop ENQUANTO N?O RECEBE OS Dados via UART

    J = 500;// SW 延迟
    执行 j-;
    while (j!= 0);

    对于(I = 0;I < 2;I++)//M?TODO DE REALOCAMENTO DOS Dados NUMA VARI?Vel

    RSSI[i]= recbe _RSSI[i+2];//Salva O RSSI NA VARI?Vel CORRETA

    RSSI[3]='\0';//TERMINADOR DOS Dados DA VARI?Vel

    Estado = teste_Colet;

    中断;

    案例 tetst_Colet:
    _DELAY_CYCLES (1200000);
    strcpy (string1、"conect");
    sendUART (string1);
    标志= 0;
    while (flag!= 1)//loop ENQUANTO N?O RECEBE OS Dados via UART

    J = 500;// SW 延迟
    执行 j-;
    while (j!= 0);

    recbe _wifi2[3]='\0';//TERMINADOR DOS Dados DA VARI?Vel
    if (strcmp (wifok、receibe_wifi2)==0)//Verifica SE A RESPOSTA FOI positiva (CONEX?O OK)

    Estado = CONFERE_LOG;//PR?XIMO Estado 切换案例

    else //CASO A CONEX?O N?O FOI positiva

    Estado = teste_Colet;//PR?XIMO Estado do switch case

    中断;

    案例 CONFERE_LOG:

    Estado = SEND;//PR?XIMO Estado do switch case

    中断;

    案例发送:
    _delay_cycles (1300000);
    strcpy (string1、"end3");
    sendUART (string1);
    _DELAY_CYCLES (1000000);
    strcpy (string1、"内容长度:23\r\n");
    sendUART (string1);
    _delay_cycles (10000);
    strcpy (string1、"User-Agent:STA+\r\n");
    sendUART (string1);
    _delay_cycles (10000);
    strcpy (string1、"制造商:Senfio\r\n");
    sendUART (string1);
    _delay_cycles (10000);
    strcpy (string1、"Tipo-Evento:Novo_evento_ATUALIZACAo\r\n");
    sendUART (string1);
    _delay_cycles (10000);
    strcpy (string1、"FW-Version:");
    sendUART (string1);
    sendUART (FW_VERSION);
    strcpy (string1、"\r\n");
    sendUART (string1);
    _delay_cycles (10000);
    strcpy (string1、"来自:DC4F2211E20a\r\n");
    sendUART (string1);
    _delay_cycles (10000);
    strcpy (string1、"连接:关闭\r\n");
    sendUART (string1);
    _delay_cycles (10000);
    strcpy (string1、"\r\n");
    sendUART (string1);
    _delay_cycles (10000);
    strcpy (string1、"6DC4F2211E20A3161273608");
    sendUART (string1);
    _delay_cycles (10000);
    strcpy (string1、"\r\n");
    sendUART (string1);

    Estado = End;//PR?XIMO Estado 切换外壳

    中断;
    案例结束:

    J = 120;// SW 延迟
    执行 j-;
    while (j!= 0);

    中断;

    默认值:
    中断;



    void setup()

    PM5CTL0 &=~LOCKLPM5;

    //时钟配置
    WDTCTL = WDTPW + WDTHOLD;//停止 WDT
    CSCTL0 = CSKEY;//super secret password
    CSCTL1 &= 0x0000;//将 DCOCLK 设置为1MHz
    CSCTL2 |= 0x0030;//将 SMCLK 连接到 DCOCLK
    CSCTL3 &= 0x0000;//CLK 分频器设置为/1

    _enable_interrupt ();

    //UART A0配置
    UCA0CTLW0 |= UCSWRST;//设置复位
    UCA0CTLW0 |= 0x0091;// 0000000010010000
    UCA0BRW = 0x0006;//设置9600的波特率
    UCA0MCTLW = 0x0081;//000000001000

    //端口配置
    P2DIR |= 0xFF;//所有 P2.x 输出
    P2OUT &= 0x00;//所有 P2.x 复位
    P1DIR |= 0x01;//将 P1.0设置为输出方向

    //UART A1配置
    UCA1CTLW0 |= UCSWRST;//设置复位
    UCA1CTLW0 |= 0x0081;// 0000000010010000
    UCA1BRW = 0x0006;//设置9600的波特率
    UCA1MCTLW = 0x0081;//000000001000

    //端口配置
    P2SEL0 |= 0x00;// P2.5 = TXD、P2.6=RXD
    P2SEL1 |= 0x60;// P2.5 = TXD、P2.6=RXD

    UCA1CTLW0 &= 0xFFFE;//清除复位
    UCA1IE |= UCRXIE;//启用 UART A1中断(RX 和 TX)
    UCA1IE |= UCTXIE;
    UCA1IE |= UCTXCPTIE;


    void sendUART (字符串123[50])

    volatile unsigned int j;
    int strsize = 0;
    strsize = strlen (string123);
    I = 0;


    while (<strSize)

    UCA1TXBUF = string123[i];
    i++;
    J = 200;// SW 延迟
    执行 j-;
    while (j!= 0);

    空 delayReceive()

    volatile unsigned int j = 120;// SW 延迟
    执行 j-;
    while (j!= 0);

    void receiveUART (void)

    Z = 0;
    while (UCA1RXBUF!='Z')

    String2[z]= UCA1RXBUF;
    Z++;
    delayReceive();

    if (Estado =Read_MAC)

    strcpy (rec应该_Mac、string2);
    FLAG = 1;

    if (Estado =teste_wifi)

    strcpy (recbe _wifi、string2);
    FLAG = 1;

    if (Estado =teste_RSSI)

    strcpy (rec应该_RSSI、string2);
    FLAG = 1;

    if (Estado =teste_Colet)

    strcpy (receibe_wifi2、string2);
    FLAG = 1;


    //中断向量
    #pragma vector = USCI_A1_vector
    _interrupt void USCI_A1_ISR (void)

    switch (__evo_in_range (UCA1IV、18))

    情况0x00://向量0:无中断
    中断;
    情况0x02://向量2:UCRXIFG

    receiveUART();
    // sendUART (string2);
    P1OUT ^= 0x01;//使用异或切换 P1.0

    中断;
    情况0x04://向量4:UCTXIFG


    // P1OUT ^= 0x01;//使用异或切换 P1.0

    中断;
    默认值:break;


  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    在我对该代码的初始视图中、我看到的唯一一点是、在解锁和初始化之后、您不会锁定时钟系统的控制寄存器。 这不一定是一个问题、但好的做法是在解锁相关模块进行配置后重新锁定所有配备此功能的控制寄存器。 这无疑提高了操作的安全性。
    与通信故障相关的问题可能是、如果由于对这些寄存器的错误访问而导致时钟设置更改为超出规格的值、这可能会影响 JTAG 的可访问性和同步性。

    此致
    Peter
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    早上好。
    感谢您的解释、但具体而言、您会在哪里建议我更改代码? 我该如何处理您的要求?

    谢谢你。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    很抱歉,没有对此作进一步解释。 那么、让我从一个关于 MSP430模块初始化方法的通用建议开始。 TI 通常为每个模块提供多个代码示例、对于时钟系统也是如此。 在处理更复杂的模块时、如与包括状态机在内的通信模块处理时、最好查看这些模块并复制通用序列和指令、例如 PW 保护控制寄存器、指令序列。 您可以在 CCS 环境中的 TI Resource Explorer 中找到这些示例、适用于 MSP430系列的所有受支持的衍生产品。
    现在回到您的特定问题、MSP430FR5969时钟系统的解锁-初始化-锁定序列可能看起来像
    //时钟系统设置
    CSCTL0_H = CSKEY >> 8; //解锁 CS 寄存器
    CSCTL1 = DCOFSEL_6; //将 DCO 设置为8MHz
    CSCTL2 = SELA_VLOCLK | SELESS__DCOCLK | SELM_DCOCLK;//设置 SMCLK = MCLK = DCO
    // ACLK = VLOCLK
    CSCTL3 = DIVA__1 | DIVS__1 | DIVM__1; //将所有分频器设置为1
    CSCTL0_H = 0; //锁定 CS 寄存器

    此致
    Peter
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    只是一个想法... 如果您有已写入器件的确切二进制文件、请将其发布以便我们查看。 JTAG 密钥部分可能有一些内容。 某种程度上。 不太可能,但值得一试
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我认为,这方面没有进一步的活动。 因此、我将很快关闭该线程。 如果您需要有关此方面的进一步支持、请告知我们。 如果您在不同情况下需要支持、请打开单独的主题。 非常感谢。

    此致

    Peter