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

Guru**** 2553810 points
Other Parts Discussed in Thread: MSP430F5529, USB2ANY, MSP430F5528

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

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

器件型号:MSP430F5529
主题中讨论的其他器件: USB2ANYMSP430F5528

工具/软件:Code Composer Studio

在 MSP430F5529中、我尝试通过 UART 发送数据、并希望将 RXBUF 中接收的数据传回。 但中断未启用、我无法接收数据。 我尝试了 TI 示例代码、但中断仍然无法正常工作。 了解一些有关接收中断部分的知识将会非常有帮助。

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

    您的硬件连接是什么? 您是否使用示波器监测 RX 线路中的信号?

    B.R
    冬季
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是通过示波器进行监控时、我们接收到数据、但通过 UCA1RXBUF 读取数据时、它显示0x00。
    我将附上 UART 代码供参考。
    我是端口 P4.4、4.5。


    #include
    #include
    字符数据;
    int main (空)


    WDTCTL = WDTPW + WDTHOLD; //停止 WDT
    // P1SEL |= BIT2;
    P4SEL |= BIT4+BIT5; // P3.3、4 = USCI_A1 TXD/RXD
    UCA1CTL1 |= UCSWRST; //**将状态机置于重置中**
    UCA1CTL1 |= UCSSEL_2; // SMCLK
    UCA1BR0 = 10; // 1MHz 115200 (请参阅用户指南)
    UCA1BR1 = 0; // 1MHz 115200
    UCA1MCTL |= UCBRS_1 + UCBRF_0; //调制 UCBRSx=1、UCBRFx=0
    UCA1CTL1 &=~UCSWRST; //**初始化 USCI 状态机**
    // UCA1IE |= UCRXIE; //启用 USCI_A1 RX 中断

    // printf ("Main");
    UCA1TXBUF ='A';

    // UCA1TXBUF = UCA1RXBUF; // TX -> RXed 字符
    // fflush (stdout)
    // fflush (stdout);
    //_ bis_SR_register (LPM0_bits + GIE); //输入 LPM0、中断被启用
    //__no_operation(); //用于调试器


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

    switch (__evo_in_range (UCA1IV、4))

    情况0:中断; //向量0 -无中断
    案例2: //向量2 - RXIFG
    while (!(UCA1IFG&UCTXIFG)){ // USCI_A1 TX 缓冲器就绪?
    数据= UCA1RXBUF;
    UCA1TXBUF = UCA1RXBUF; // TX -> RXed 字符
    printf ("%c"、data);
    fflush (stdout);}
    中断;
    案例4:中断; //向量4 - TXIFG
    默认值:break;

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

    您能否注释所有 printf()和 fflush()并设置 UCRXIE 中断使能标志。 如果仍然有问题、请尝试使用示例代码和 UCA0模块(P3.4/P3.5)。

    B.R
    冬季
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我使用的是 MSP430F5529实验板、硬件中的 P3.4和3.3无法访问、因此无法将其用于调试目的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、我正在使用 MSP430F5529 EVM。 我将使用 UART 通过基于 Qt 的 GUI 向 MSP 发送数据。 通过 Qt 串行端口、我能够回读我发送的 throgh GUI 数据、但当我尝试通过 CCS 通过 RXBUF 查看数据时、它始终显示0x00。 我需要保存通过 GUI 在 MSP 中发送的数据。

    读回 RXBUF 的逻辑是正确的? 或者是否有其他方法可以读取和保存数据?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Srinivasan、

    您忘记对其进行开机自检、或者我看不到它、但您需要在 P4.4和 P4.5上启用辅助功能、否则这些引脚配置为具有输入功能的通用 GPIO。

    正如 Winter 所说、您可以检查 MSP430F55xx_uscia0_uart_02.c 代码示例、同时还配置了 P3.3和 P3.4

    int main (空)

     WDTCTL = WDTPW | WDTHOLD;         //停止 WDT

     P3SEL = BIT3+BIT4;             // P3.4、5 = USCI_A0 TXD/RXD

     UCA0CTL1 |= UCSWRST;            //**将状态机置于重置中**

     UCA0CTL1 |= UCSSEL_1;           // CLK = ACLK

     UCA0BR0 = 0x0D;              // 2400 (请参阅用户指南)

     UCA0BR1 = 0x00;              //

     UCA0MCTL |= UCBRS_6+UCBRF_0;        //调制 UCBRSx=6、UCBRFx=0

     UCA0CTL1 &=~UCSWRST;           //**初始化 USCI 状态机**

     UCA0IE |= UCRXIE;             //启用 USCI_A1 RX 中断

     _bis_SR_register (LPM3_bits + GIE);   //输入 LPM3、中断被启用

     __no_operation();             //用于调试器

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    char data[20];
    int i=0;
    int main (void)
    {
    
    WDTCTL = WDTPW + WDTHOLD; //停止 WDT
    P4SEL |= BIT4+BIT5; // P4.4、5 = USCI_A1 TXD/RXD
    UCA1CTL1 |= UCSWRST; //**将状态机复位**
    UCA1CTL1 |= UCSSEL_2; // SMCLK
    UCA1BR0 = 9; // 1MHz 115200 (请参阅用户指南)
    UCA1BR1 = 0; // 1MHz 115200
    UCA1MCTL |= UCBRS_1 + UCBRF_0; //调制 UCBRSx=1、UCBRFx=0
    UCA1CTL1 &=~Ω UCSWRST; //**初始化 USCI 状态机**
    UCA1IE |= UCRXIE; //启用 USCI_A1 RX 中断
    
    
    __bis_SR_register (LPM0_bits + GIE); //输入 LPM0,启用中断
    _no_operation (); //对于调试
    器}
    
    //回显 RXed 字符,确认 TX 缓冲区已准备就绪#if
    defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
    #pragma vector=USCI_A1_vector
    __interrupt void USCI_A1_ISR (void)
    #Elif defined (__GNUCI_ COMPUCI_
    )(void
    
    )(void USCI_A1_ISR (void)(void)(void)(void)(USCI_I_ COMPLER_A1)(void USC_I_)(void)(void)
    #endif
    {
    switch (__even_in_range (UCA1IV、4))
    {
    case 0:break; //向量0 -无中断
    情况2: //向量2 - RXIFG
    while (!(UCA1IFG&UCTXIFG)){ // USCI_A1 TX 缓冲器就绪?
    
    DATA[i]= UCA1RXBUF;
    UCA1TXBUF = UCA1RXBUF; // TX -> RXed 字符
    i++;
    printf ("%c"、data);
    fflush (stdout);}
    中断;
    案例4:中断; //向量4 - TXIFG
    默认值:break;
    }
    
    

    您好、Walther、

    我正面临着与 Srinivasan 所提到的类似的问题。 我正在使用 MSP430EXPF5529。

    为了实现与 GUI 的 UART 通信、我将使用 P4.4和 P4.5、并启用 P4.4和 P4.5的辅助功能。 我正在通过 eZ-USB 连接 MSP430板、 当我从 GUI 向 MSP 发送数据时、我无法看到从 GUI 发送的数据。

    我是否缺少任何硬件连接? 我将 TI 的示例代码用于我的测试用例、并附上相同的代码片段供您参考。

    提前感谢。

    此致、

    Vinayak

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你们俩都在下面使用的是 MSP430F5529 USB 实验板,对吧?
    www.ti.com/.../MSP-EXP430F5529

    您是否正确连接了 P4.4和 P4.5引脚接头 J4引脚#10和#12?
    您可以在 MSP (来自 PC 的 TXD)上的 RXD 线路上看到数据、但您的 PC 不会立即接收到数据?
    您是否检查了 MSP 的 TXD 以确保数据回显并执行中断?

    您是否确定与 PC 的连接正确且您在 PC 工具上使用的是正确的 COM 接口?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的,我正在使用您提到的板,我没有在 P4.4和 P4.5、J4接头上连接任何东西,但我在 J4 (P4.5)的 RXD 引脚上获取数据,已使用示波器进行检查。 中断未被触发当我从 GUI 应用程序发送数据时、我正在使用具有正确波特率的正确 COM 端口。  

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

    但是、如果您没有将引脚连接到您的 PC 应用、那么通信应该如何工作呢?
    如果您使用 MSP 的 P4.4和 P4.5、则必须使用电平转换器逻辑将其连接到 PC 上的 RS232 COM 端口。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Walther、
    我通过 USB 端口从 GUI 发送的数据来自 P4.5 (MSP430EXPF5529的 RX)、我正在尝试读取该数据、但无法读取。
    当我将 P4.4和 P4.5连接到 USB2ANY 并发送数据时、MSP430EXPF5529中将生成中断。 我无法理解这一点。

    在我的电路板中、使用 MSP430F5528、我有一个 USB、根据 TI 的参考设计连接到 DP 和 DM、现在我想将 USB 连接到 GUI、我能否获得通过 USB 读取和写入的示例代码、 我之前没有做过 USB 编码、因此如果有任何相关的文档、如果我明白、将会有所帮助。

    此致、
    Vinayak
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Walther、
    我通过 USB 端口从 GUI 发送的数据来自 P4.5 (MSP430EXPF5529的 RX)、我正在尝试读取该数据、但无法读取。
    当我将 P4.4和 P4.5连接到 USB2ANY 并发送数据时、MSP430EXPF5529中将生成中断。 当 MSP430的 RX 引脚上存在数据时、为什么我需要使用 RS232。 我无法理解这一点。

    当我将 MSP430EXPF5529与用户界面 USB 端口 i.e、MSP430EXPF5529上的 USB1连接时、PC 上的端口未检测到、当我尝试按住 BSL 按钮时、我会收到通知、因为无法识别该端口。

    在我的电路板中、使用 MSP430F5528、我有一个 USB、根据 TI 的参考设计连接到 DP 和 DM、现在我想将 USB 连接到 GUI、我能否获得通过 USB 读取和写入的示例代码、 我之前没有做过 USB 编码、因此如果有任何相关的文档、如果我明白、将会有所帮助。



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

    Vinayak、

    如果您想使用 USB、请使用已准备好所有堆栈的 USB 开发套件:

    或者在 CCS 中从 Resource Explorer 中更好地使用它、有一个用户指南和代码示例:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回复 Walther,我尝试了 TI 提供的 USB 开发示例,这里的问题是,我的计算机无法识别 MSP430端口(用户 USB 端口,不调试 USB 端口),我是否需要手动为此端口安装驱动程序?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Vinayak、

    例如、如果您尝试使用 C1_LedOnOff 示例、并通过实验板上的 CCS 对其进行编程。
    将 USB 端口连接到 PC 并启动应用程序(在通过运行按钮进行调试或通过 RST 进行自由运行) CDC 器件(应显示虚拟 COM 端口)不需要安装驱动程序。

    希望您之间没有可能干扰功能的 USB 集线器。
    如果您在调试中运行、直到部件执行时、会令人感兴趣。 也许您可以检查是否运行到 USB 处理程序(main 函数中的 while (1)循环)中。 如果发生这种情况、则 enumaration 过程 shoudl start。