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/MSP430FR6989:CCS/MSP430FR6989:

Guru**** 2583475 points
Other Parts Discussed in Thread: MSP430FR6989, MSP430F5437, MSP430G2553, MSPBSL, MSP430F5529, MSP-EXP430F5529LP, MSP-EXP430FR6989, MSP430F5659, MSP-GANG

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/609881/ccs-msp430fr6989-ccs-msp430fr6989

器件型号:MSP430FR6989
主题中讨论的其他器件: REP430FMSP430F5437MSP430G2553MSPBSLMSP430F5529MSP-EXP430F5529LPMSP-EXP430FR6989MSP430F5659MSP-GANG

工具/软件:Code Composer Studio

你(们)好

我正在尝试将复制器从 msp430fr6989 launchpad (主机端)作为 目标创建到 ms430g2553 launchpad。

我按照 slau320z 文档中的说明进行操作、随附项目 slau320y.zip (在第2章中)。  

由于某种原因,程序被捕获了一个函数 void SetVCoreUp (字级)、  LowLevelFunc430X.c 。

函数 调用: SetVCoreUp (2);

void SetVCoreUp (字级)

//打开 PMM 寄存器进行写访问
PMMCTL0_H = 0xA5;
//将 SVS/SVM 高电平设置为新的电平
SVSMHCTL = SVSHE + SVSHRVL0 *电平+ SVMHE + SVSMHRRL0 *电平;
//将 SVM 低电平设置为新的电平
SVSMLCTL = SVSLE + SVMLE + SVSMLRRL0 *电平;


//等待 SVM 稳定
while ((PMMIFG & SVSMLDLYIFG)=0);


//清除已设置的标志

PMMIFG &=~(SVMLVLRIFG + SVMLIFG);
//将 VCORE 设置为新的电平
PMMCTL0_L = PMMCOREV0 *电平;
//等待达到新级别
IF (((PMMIFG 和 SVMLIFG))
while ((PMMIFG & SVMLVLRIFG)=0);
//将 SVS/SVM 低电平侧设定为新的电平
SVSMLCTL = SVSLE + SVSLRVL0 *电平+ SVMLE + SVSMLRRL0 *电平;
//锁定 PMM 寄存器以进行写访问
PMMCTL0_H = 0x00;

 这是程序被捕获的循环:

//等待 SVM 稳定
while ((PMMIFG & SVSMLDLYIFG)=0);

 

提前感谢、

Avraham

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

    您好、Avraham、

    感谢您发帖。 您发布的代码是指 MSP430F5xx/6xx 闪存器件中的 PMM 寄存器和设置。 但是、MSP430FR5xx/6xx FRAM 器 件、如您正在使用的 MSP430FR6989、具有完全不同的 PMM 模块、它们没有相同的寄存器和位。 您正在构建的复制器代码是为带有 MSP430F5437器件的 REP430F 电路板编写的、 它来自不同的器件系列、与您使用的 MSP430FR6989器件不具有100%代码兼容性(它们具有不同的内核模块、如时钟系统和 PMM、即使计时器等其他模块是兼容的)。 如果 MSP430FR6989的复制器代码构建没有错误、我会感到惊讶-您是否已将项目设置中的器件更改为 MSP430FR6989? 然后  、将复制器代码移植到此 FRAM 器件需要进行大量的代码移植工作。
     
    此外、您能否分享您需要在 MSP430FR6989上实施复制器代码来对 MSP430G2553进行编程的原因? MSP430G2553 Launchpad 已包含板载仿真器。 或者、如果您需要将此示例用作现场固件更新的示例、通常更容易为 MSP430G2553实现 BSL 引导加载程序主机、因为它基于简单的 UART 接口、而不是复杂的 JTAG/SBW 编程。 如果可能、我会建议为您的应用使用 BSL。 有关 MSPBSL 工具文件夹和 BSL 用户指南文档 www.ti.com/.../slau319中的更多信息

    此致、
    Katie

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Katie
    感谢详细的重播,并对地雷反应延误表示遗憾。
    我的目标是创建一个与 MSP430 REP 相似的器件、以便在没有 PC 主机的情况下刷写 msp430g2553 MCU。
    我给人的印象是 JTAG 接口更适合此用途、但由于我不需要调试 MCU、我将尝试您的建议并检查 BSL 接口选项。
    我会尽快寻求指引:)
    此致、
    Avraham
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好 Katie

    我最近订购并收到了 msp430f5529 LP。
    我假设它需要更灵活地调整 MSP430复制器代码(来自 slau320y.zip)并将其用作主机来刷写 msp430g2553 (正如我之前发布的那样)。
    然而、我却在为此付出很大的努力。
    我使用的是 CCS V6.2和复制器430 (用于原始 MSP430架构设计)代码。
    我打算在主机(msp430f5529lp)和目标(msp430g2553)之间使用 SBW 连接。
    当前的情况是程序被捕获在的 InitController (void)函数中

    循环-->//循环直到 XT1、XT2和 DCO 稳定

    //! \brief 初始化控制器板
    空 InitController (空)

    //停止看门狗计时器以防止超时复位
    WDTCTL = WDTPW + WDTHOLD;

    //设置更高的 Vcoree、以便能够处理 MCLK 频率= 18MHz
    SetVCoreUp(2);

    /***** 设置 XT1时钟-晶振12MHz ********

    // P7SEL = 3; //端口选择 XT1
    P5SEL |= BIT4+BIT5; //端口选择 XT1
    UCSCTL5 = 0;// DIVPA、DIVA、DIVS、DIVM ->全部直接(DIV=1)
    UCSCTL6 = XT2OFF+XT1DRIVE_1+XTS;
    // XT2关闭,XT1打开
    //驱动强度- 8-16MHz LFXT1 HF 模式


    //循环直到 XT1、XT2和 DCO 稳定
    执行{
    //清除 XT2、XT1、DCO 故障标志
    UCSCTL7 &=~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);
    //清除故障标志
    SFRIFG1 &=~OFIFG;
    }while (SFRIFG1 & OFIFG);



    //选择 ACLK = LFXT1 = 12MHz
    // SMCLK = LFXT1 = 12MHz
    // MCLK = LFXT1 = 12MHz
    UCSCTL4 = SEL_0+SELS_0+SELM_0;

    #ifdef MCLK_18MHz
    // DCo-freq 范围最大为39MHz (必须高于18MHz*2=36MHz)
    UCSCTL1=6*DCORSEL0_L;
    // DCO-DIV/2、PLL multi*(23+1)、freq = 24*0.75 = 18MHz
    UCSCTL2 = FLLD0 + 23*FLLN0;
    //参考- XT1-CLK、XT1/16 = 0.75MHz
    UCSCTL3 = FLLREFDIV_5;
    //循环直到 XT1、XT2和 DCO 稳定
    执行{
    //清除 XT2、XT1、DCO 故障标志
    UCSCTL7 &=~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);
    //清除故障标志
    SFRIFG1 &=~OFIFG;
    }while (SFRIFG1 & OFIFG);

    UCSCTL4 = SELA_XT1CLK + SELESS__DCOCLKDIV + SELM_DCOCLKDIV;
    #endif

    //针对硬件延迟设置 TIMER_A
    TA0CTL = 0; //停止计时器
    TA0CTL = ID_3+TASSEL_1; // Timer_A 源:ACLK/8 = 1.5MHz
    TA0CCR0 = ONEMS; //加载 CCR0有延迟... (延迟1ms)

    /***** 时钟设置完成

    可以为 TEST /DEBUG 启用#if (0)//
    // S1开关上的 SMCLK (18或12MHz)频率测试(开路)-测试时间~ 10ms
    P1SEL = 0x40; // SMCLK -至 P1.6 (S1 -按钮)
    P1DIR = 0x40; //仅用于 clk 测试-必须在以后禁用
    MsDelay (5);

    P1SEL = 0;
    //结束 S1交换机上的 SMCLK 频率测试
    #endif

    TRSLDIR = 0;
    //将端口设置为从 MSPF5437到 I/O 转换器的输出
    TRSL_CDIR = TEST_DIR + RST_DIR + TCK_DIR + TMS_DIR + TDOI_DIR + TDI_DIR;
    //设置从 I/O 转换器到 MSP430F5437的所有方向
    //(到输入的所有 I/O JTAG 线路)
    TRSLDIR = TEST_DIR + RST_DIR + TCK_DIR + TMS_DIR + TDOI_DIR + TDI_DIR;

    //设置 LED 端口方向
    LED_DIR |= LED_YEL+LED_GREEN + LED_RED;
    //启动时打开所有 LED
    LED_OUT |= LED_Yellow + LED_GREEN + LED_RED;

    //设置 SW 端口上拉电阻
    SW_PULLUP |= SW_MODE0+SW_MODE1+SW_1; //设置上拉/下拉
    SW_OUT |= SW_MODE0+SW_MODE1+SW_1; //选择上拉

    SetTargetVcc (0);
    SetVpp(0);




    我已将 XT1晶振配置为 msp430f5529 LP
    // P7SEL = 3; //端口选择 XT1
    P5SEL |= BIT4+BIT5; //端口选择 XT1

    我希望我们能找到一种方法来将该程序实施到该 MCU (msp430f5529)中、因为它对我们的应用非常重要

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

    您好、Avraham、

    您正在使用的代码似乎是为12MHz 的高频晶振选择 XT1。 如果您使用的是 MSP430F5529 Launchpad、请查看用户指南 www.ti.com/lit/pdf/slau533中包含的原理图、该 Launchpad 在 XT1上具有32kHz 低频晶体。 因此、这就是出现晶体故障的原因。  查看 MSP430F5529器件、XT1不支持该器件上的高频晶体。 为了继续使用 MSP-EXP430F5529LP Launchpad、我建议只更改时钟初始化代码。

    应更改时钟初始化代码。 由于复制器代码与频率非常相关、因此您可能应保持预期的12或18MHz MCLK 速度。 您可以将代码更改为初始化 DCO + FLL 至12MHz MCLK、其中 FLL 以 XT1上的低速32kHz 为基准。 或者、您可以参考 XT2 Launchpad 上所载4MHz 陶瓷谐振器的 FLL。 由于只有4MHz、因此您仍然需要使用代码将 DCO + FLL 设置为12MHz、以4MHz 为基准。

    代码示例 http://dev.ti.com/tirex/#/?link=Software%2FMSP430Ware%2FDevices%2FMSP430F5XX_6XX%2FMSP430F5529%2FPeripheral%20Examples%2FRegister%20Level%2FMSP430F55xx_UCS_03.c 包含将 DCO 设置为12MHz 的代码。 该代码从内部32kHz REFO 引用 FLL、但由于您已填充 XT1 、因此您可能希望将其用于 FLL、以获得可能更精确的时钟。 您也可以改用 Driverlib、或将代码从 driverlib 中的 UCS_initFLSettle 函数中删除:

    我希望这有助于为您的前进道路提供一些想法。

    此致、

    Katie

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

    非常感谢您的快速而详细的回答、对此我非常感激。
    我将尝试更改代码(根据您的建议)、我将立即进入代码。
    我只想与您确认另外一件事。
    我对将 Replicator 代码实现到 msp420lp 的假设是否正确?
    因为我找不到任何理由不这样做。
    我很快会更新...
    再次感谢、

    Avraham
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的假设是关于将 Replicator 代码实现到 msp430f5529 LP (而非 msp420lp)...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好

    我只想`s Katie 的评论: 在 Msp430F5529 - XT1 -不支持高 频晶振、 只有 XT2

    谢谢

    AVI

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

    Avi、您好!

    感谢您的更正。 我通常想到的是 F5xx/6xx 系列 器   件、其中一些器件可以支持 XT1上的高频晶体、但现在我查看了 F5529数据表、专门只支持 XT1上的低频、您是对的。 我将更新我的原始帖子、以便阅读此主题的人更清楚。

    此致、

    Katie

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

    我不确定您所指的假设是什么。 您是否询问将 Replicator 代码移植到 MSP-EXP430F5529LP 是否比移植到 MSP-EXP430FR6989更容易? 由于代码最初是为 MSP430F5437器件编写的、而 MSP430F5437器件与 MSP430F5529属于同一系列、因此它们具有相似的时钟系统、PMM 模块等 但是、您仍然需要进行一些您已经发现的时钟初始化更改、以及可能需要对使用的端口引脚进行一些更改等

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

    是否有任何与复制器类似的代码、但仅适用于2线(SBW)、更简单的代码。 我们还希望使用主机控制器作为多个 msp430g2553器件的编程器。

    如果你能这样做,那就很棒了。 我们未来的主机 MCU 将是 MSP430F5659 /或类似器件

    我们的项目将需要大量的`s 产品。

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

    正如我在第一个帖子中之前提到的、复制器 SBW 代码本身(即使它只是实现了 SBW) 非常复杂、因为它通过时分多路复用将3个 JTAG 信号多路复用到单个双向通信线路上-它对时间非常敏感、并且它基本上是位拆裂信号。 我强烈建议改用引导加载程序 BSL 作为一种更好的编程解决方案、因为它是在基本9600波特 UART 接口上实现的命令列表。 有关 MSP430G2553 BSL 的更多信息、请参阅 BSL 用户指南 www.ti.com/.../slau319 、其中应包含为 G2553创建主机接口所需的所有信息。 您只需生成进入序列、其余的是通过 UART 发出的所有命令、如文档中所述。

    此致、
    Katie
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此外、您是否知道 MSP-GANG 编程器工具可以独立对多达8个 MSP430进行编程(不必连接到 PC)? 如果您只是需要生产编程解决方案、这可能比必须创建自己的解决方案得到更好的支持。
    -Katie
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Katie、

    您必须了解更好的项目。 我不想为生产线构建工具-这就是`s MSP-GANG 不相关的原因。

    我们有一个具有8个器件的系统。 每个器件由 msp430g2553控制。 我们正在构建一个器件(背板主机控制器)、用作数据记录器、事件记录器等。 我们希望能够上传与 MSP430G2553器件相关的固件 binary.txt 文件、主机控制器将逐个更新 msp430G2553器件。 我们没有时序问题。 我们只希望能够从主主机位置刷写 msp430g2553器件。

    请尽可能提供建议。

    谢谢
    AVI

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

    我也阅读了 slau319和其他指南(包括 e2e 支持中的文档),我有几个问题要完成我们针对 msp430g2553的成本编程器项目。
    为了通过 BSL 对 msp430g2553 MCU 进行编程、我只能使用 custum BSL methode。
    首先、我需要使用 BSL 命令将目标编程到其闪存中(因为我无法在 MSP430G2553 ROM 中调用 BSL)、而不是通过正确的 BSL 序列从外部(从主机)调用它、而是将我所需的代码编程到可用的闪存中 (与 BSL 命令一起进行下一个编程)?
    我是第一个创建这样一个项目的人、还是有什么类似的东西、我可以通过某种方式为我们的目标而努力?

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

    您不必为 G2器件创建自定义引导加载程序、只需创建与器件已内置 ROM BSL 进行通信的主机软件。 如果在 TEST 和 RST 引脚上使用正确的序列、您应该能够调用 MSP430G2553上的内置 ROM BSL。 BSL 用户指南 www.ti.com/.../slau319 第1.3节"标准复位和 BSL 进入序列"中介绍了该序列。 请参阅器件数据表 www.ti.com/.../msp430g2553 中标题为"引导加载程序(BSL)"的部分、其中说明了该器件上用于 BSL TX 和 RX 的引脚。 BSL 用户指南 SLAU319在第2章中解释了 G2xx 器件实现 BSL 主机时应遵循的协议。

    BSL Scripter 下载包中包含有名为 BSLDEMO 的 PC 软件(请参阅 MSPBSL 页面)、其中包含源代码。 但这是为了在 PC 上运行而编写的、因此它可能不是最容易适应的。 BSL Scripter Download 中也包含此内容、在您解压缩后、即包含文档和源代码的 BSL Replicator 代码位于弃用文件夹中。

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

    Katie、

    为什么没有可以简化 BSL/UART 的简单代码示例-主机控制器和目标控制器刷写代码。

    我确信这是在过去多次进行的。

    如果有、请告诉我。

    谢谢!

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

    请参阅上述文章中提到的 BSL Scripter 下载中包含的 BSL 复制器-它实际上只是一个 C 文件、非常简单。 此外、我相信 TI 的某个人可能已经在论坛之外与您的公司合作、为您提供一个功能更全面的示例、该示例已经移植到您使用的特定主机控制器-您可以检查吗?

    此致、
    Katie