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.

[参考译文] MSP430FR4133:将代码从 MSP430G2553映射到 MSP430FR4133

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1196006/msp430fr4133-mapping-code-from-msp430g2553-to-msp430fr4133

器件型号:MSP430FR4133
主题中讨论的其他器件: MSP430G2553

我尝试从我找到的现有库映射代码、以便可以驱动 ws2812b LED 条图。 我在 https://github.com/mjmeli/MSP430-NeoPixel-WS2812-Library 上找到了该库。 我尝试将其映射到我的特定器件、但代码似乎仍然无法正常工作。  我需要针对特定器件更改3个小部分、以下是我的尝试。 3个代码块包括原始代码以及我的等效代码。 我需要有关识别问题的帮助或有关如何将代码从一个 MSP 映射到另一个 MSP 的一些提示、因为我没有这样做的经验。

第一部分需要将 UCB0SIMO 配置为 SPI 输出

// ORIGINAL
#define OUTPUT_PIN  (0x80)  // Set to whatever UCB0SIMO is on your processor (Px.7 here)
    
P1SEL |= OUTPUT_PIN;    // configure output pin as SPI output
P1SEL2 |= OUTPUT_PIN;

//My equivalent code

P5SEL0 |= BIT2;    // configure output pin as SPI output

第二个是检查 UCB 中断标志。 我认为问题可能来自哪里? 在我的器件的数据表中、这是数据表中的数据: UCB0RXIFG、UCB0TXIFG (SPI 模式)、但当我使用它们时、我会得到一个未定义的错误。

// Original Code

while (!(IFG2 & UCB0TXIFG))
;    // wait to transmit

// My equivalent code
while (!(SFRIFG1 & UCTXIFG))
;    // wait to transmit

第三部分是初始化16MHz 时钟

//Original Code

    if (CALBC1_16MHZ==0xFF)    // If calibration constant erased
    {
        while(1);              // do not load, trap CPU!!
    }

    // configure clock to 16 MHz
    BCSCTL1 = CALBC1_16MHZ;    // DCO = 16 MHz
    DCOCTL = CALDCO_16MHZ;
    
    
// My equivalent code

void initClockTo16MHz()
{
    // Configure one FRAM waitstate as required by the device datasheet for MCLK
    // operation beyond 8MHz _before_ configuring the clock system.
    FRCTL0 = FRCTLPW | NWAITS_1;

    __bis_SR_register(SCG0);    // disable FLL
    CSCTL3 |= SELREF__REFOCLK;  // Set REFO as FLL reference source
    CSCTL0 = 0;                 // clear DCO and MOD registers
    CSCTL1 &= ~(DCORSEL_7);     // Clear DCO frequency select bits first
    CSCTL1 |= DCORSEL_5;        // Set DCO = 16MHz
    CSCTL2 = FLLD_0 + 487;      // set to fDCOCLKDIV = (FLLN + 1)*(fFLLREFCLK/n)
                                //                   = (487 + 1)*(32.768 kHz/1)
                                //                   = 16 MHz

    __delay_cycles(3);
    __bic_SR_register(SCG0);                        // enable FLL
    while(CSCTL7 & (FLLUNLOCK0 | FLLUNLOCK1));      // FLL locked

    CSCTL4 = SELMS__DCOCLKDIV | SELA__REFOCLK;
}

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

    您好、Christopher、

    您似乎正在为 MSP430G2553使用#defines、这与 MSP430FR4133的#defines 不同、这也是您获取未定义错误的原因。 在您的项目中、查看 msp430fr4133.h 文件(可在项目的 Includes 文件夹下找到)。 您将看到 TXIFG 定义不同、您可以使用那里的 SPI 定义。 此处链接的 FR4133用户指南的第23节对特定标志进行了更详细的描述 。 更改这些定义后、如果仍遇到错误、请告诉我。

    最棒的
    Amruta  

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

    您好、Amruta、

    非常感谢您花时间查看我的问题。 我已经了解了 msp430fr4133头文件、但我很难找到 USCI 发送中断标志的#define。 我还查看了用户指南第23节、但 似乎无法找到可行的解决方案。  我找到了 UCB0IFG、但这似乎无法解决我的问题。 我现在没有任何未定义的错误、但当我尝试监控引脚5.2 (UCB0SIMO)的输出时、没有来自引脚的输出。

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

    您好、Christopher、

    尝试 UCTXIFG 标志;请参阅下面的图像。

    如果您有任何其他问题、请告诉我。

    最棒的
    Amruta