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.

[参考译文] MSP430F5529:msp430f5529

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/890846/msp430f5529-msp430f5529

器件型号:MSP430F5529

我是嵌入式产品的新用户、我了解如何使用 i2c、UART、SPI。

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

    您好、Manoj、

    我认为、除了学习用户指南、尤其是串行通信的 eUSCI 章节、没有其他方法。

    如果您完全不熟悉 MSP430微控制器、以下幻灯片组也可以提供帮助:

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

    我已经学习了这两个文档、并且在示例代码中看到了 UART 的示例。

    以及如何了解传输和接收哪些数据。

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

    写入 UCAxTXBUF (发送缓冲器)的数据将在被写入后被发送

    一旦 UCAxIFG 寄存器内的接收中断标志 UCRXIFG 被置位、被读取的数据就可以在 UCAxRXBUF 中找到

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

    SIR、您能给我提供用于显示 TX 和 RX 数据的任何 UART 示例代码吗?

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

    您可以在网站上的产品文件夹中找到代码示例:

    下面是使用 ACLK 时波特率为9600的 UART 回波的示例代码。 它只是将接收到的内容发回。 因此、如果您在 PC 上使用超级终端程序并将其连接到 RS232或 USB UART 桥接器、您就可以与超级终端通信了。


    //  MSP430F552x 演示- USCI_A0、超低功耗 UART 9600回波 ISR、32kHz ACLK
    //
    //  说明:回显接收到的字符,使用 RX ISR。 正常模式为 LPM3、
    //  USCI_A0 RX 中断触发 TX 回波。
    //  ACLK = 32768Hz 晶振、MCLK = SMCLK = DCO ~1.045MHz
    //  具有32768Hz XTAL @9600 = 32768Hz/9600 = 3.41的波特率分频器
    //  请参阅用户指南以了解波特率分频器表
    //
    //               MSP430F552x
    //            ------------
    //       /|\|             XIN|-
    //        |                 || 32kHz
    //        --|RST         XOUT|-
    //           |                |
    //           |    P3.3/UCA0TXD|--- >
    //           |                | 9600 - 8N1
    //           |    P3.4/UCA0RXD|<---
    //
    //  Bhargavi Nisarga
    //  Texas Instruments Inc.
    //  2009年4月
    //  使用 CCSv4和 IAR Embedded Workbench 构建版本:4.21
    //

    #include

    int main (空)

     WDTCTL = WDTPW + WDTHOLD;                //停止 WDT

     P3SEL = BIT3+BIT4;                       // P3.4、5 = USCI_A0 TXD/RXD
    //
    // P5SEL |= BIT4+BIT5;                      //选择 XT1
    //
    // UCSCTL6 &=~(XT1OFF);                    // XT1打开
    // UCSCTL6 |= XCAP_3;                       //内部负载电容
    // UCSCTL3 = 0;                             // FLL 参考时钟= XT1
    //
    // //循环直到 XT1、XT2和 DCO 稳定-在本例中循环直到 XT1和 DCO 稳定
    // 执行
    // {
    //   UCSCTL7 &=~(XT2OFFG + XT1LFOFFG + DCOFFG);
    //                                           //清除 XT2、XT1、DCO 故障标志
    //   SFRIFG1 &=~OFIFG;                     //清除故障标志
    // while (SFRIFG1&OFIFG);                  //测试振荡器故障标志
    //  
    // UCSCTL6 &=~(XT1DRIVE_3);                // XTAL 现已稳定,降低了驱动强度
    //
    // UCSCTL4 |= SELA_0 + SELS_4 + SELM_4;     // ACLK = LFTX1
    //                                           //// SMCLK =默认 DCO
    //                                           // MCLK =默认 DCO
    //  
     //..........
     UCA0CTL1 |= UCSWRST;                     //**将状态机置于复位状态**
     UCA0CTL1 |= UCSSEL_1;                    // CLK = ACLK
     UCA0BR0 = 0x03;                          // 32kHz/9600=3.41 (请参阅用户指南)
     UCA0BR1 = 0x00;                          //
     UCA0MCTL = UCBRS_3+UCBRF_0;              //调制 UCBRSx=3、UCBRFx=0
     UCA0CTL1 &=~UCSWRST;                    //**初始化 USCI 状态机**
     UCA0IE |= UCRXIE;                        //启用 USCI_A0 RX 中断

     _bis_SR_register (LPM3_bits + GIE);      //输入 LPM3、中断被启用
     __no_operation();                        //用于调试器


    //回显 RXed 字符,确认 TX 缓冲区已准备就绪
    #if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
    #pragma vector=USCI_A0_Vector
    _interrupt void USCI_A0_ISR (void)
    #Elif defined (_GNU_)
    void __attribute__((中断(USCI_A0_Vector)) USCI_A0_ISR (void)
    其他
    错误编译器不受支持!
    #endif

     switch (__evo_in_range (UCA0IV、4))
     {
     情况0:中断;                            //向量0 -无中断
     情况2:                                  //向量2 - RXIFG
       while (!(UCA0IFG&UCTXIFG));            // USCI_A0 TX 缓冲器准备就绪?
       UCA0TXBUF = UCA0RXBUF;                 // TX -> RXED 字符
       中断;
     情况4:中断;                            //向量4 - TXIFG
     默认值:break;  
     }