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与PC机通信的串口调试助手



我用的板子是F5529LP就是他的那个下载线跟串口线是一根线,然后,求一个串口助手,谢谢!

  • James,

      这个串口助手,我们没有官方的软件。

    你可以自己到网上下载一个,串口助手之类的软件一大把。

    谢谢

  • 恩,好的,谢谢

  • 您有那个5529与PC机通信的代码吗?能否给一段我参考一下,我之前以为是串口调试助手有问题结果换了好几个还是收发不了数据,觉得是代码的问题。。。      谢谢

  • James,

    你是需要中断的还是查询接收或发送的。

    另外有一个小问题需要提到的是,如果用我们的EVM板做串口通信,波特率尽量设在9600以内。因为有些版本的lunchpad上面的调试芯片定死了串口的波特率不能超过9600.

  • James,

      你试下下面这个这个例程,它实现的是将串口助手上发来的数据在发回回去:

    #include <msp430.h>
    
    int main(void)
    {
      volatile unsigned int i;
    
      WDTCTL = WDTPW+WDTHOLD;                   // Stop WDT
      FLL_CTL0 |= XCAP11PF;                     // Configure load caps
    
      do
      {
        IFG1 &= ~OFIFG;                         // Clear OSCFault flag
        for (i = 0x47FF; i > 0; i--);           // Time for flag to set
      }
      while ((IFG1 & OFIFG));                   // OSCFault flag still set?
    
      P6SEL |= BIT5+BIT6;                       // P6.5,6 = USCI_A0 RXD/TXD
      UCA0CTL1 |= UCSSEL_1;                     // CLK = ACLK
      UCA0BR0 = 0x03;                           // 32k/9600 - 3.41
      UCA0BR1 = 0x00;                           //
      UCA0MCTL = 0x06;                          // Modulation
      UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
      IE2 |= UCA0RXIE;                          // Enable USCI_A0 RX interrupt
    
      __bis_SR_register(LPM3_bits + GIE);       // Enter LPM0, interrupts enabled
    }
    
    //  Echo back RXed character, confirm TX buffer is ready first
    #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
    #pragma vector=USCIAB0RX_VECTOR
    __interrupt void USCIA0RX_ISR (void)
    #elif defined(__GNUC__)
    void __attribute__ ((interrupt(USCIAB0RX_VECTOR))) USCIA0RX_ISR (void)
    #else
    #error Compiler not supported!
    #endif
    {
      while(!(IFG2&UCA0TXIFG));
      UCA0TXBUF = UCA0RXBUF;                    // TX -> RXed character
    }

    谢谢

  • 我把你的这段代码编译,报了好多错误,这个应该不是F5529的例程吧?                  谢谢

  • james,

      是5529的啊,我这边编译没问题。你用的是CCS还是IAR?我这边的CCS没问题。

    方便的话,你可以把你的编译的错误贴上来我看一下。

    谢谢

  • 恩恩,我用的是IAR,还有就是我开了两个帖子,谢谢您的耐心解答,我就专门在这个帖子里问您吧,然后,我用的是IAR,还有就是那个F5529的PM—UART跟UART有什么区别?     谢谢了

  • James,

      PM_UART 端口是指它能通过芯片内部的Port mapping功能,来实现UART的管脚功能。这是它的第二个功能,它默认是做SPI的管脚用的。

    而UART口本身的第一功能就是用来做UART的。

    芯片之所以这样做是为了增加管脚分配的灵活性,很多时候你的UART口有可能因为PCB走线的问题,而不好做为UART来用,或是说它被用作了类似于GPIO的之类的其他功能。这个时候如果你还需要UART的话,就可以选择这些可以通过PORT Mapping实现UART功能输出或输入的管脚了。

    谢谢

  • 这个问题我好像找到了,

    这应该是编译器对头文件的定义不对,

    即使是ccs ,v5.5和v6.0的头文件也不一样,ware不同版本区别也很大

    从上面两张图片就可以看出来

    程序是直接copy的,头文件来于msp430ware还是其他的范例包我已经忘了,

    但可以确定的是官方例程里面的

  • 恩,好的,非常感谢您耐心的讲解,我又编译了一段官网上提供的5529例程,然后用串口调试助手发送数据,接收不到返回的数据,不知道为什么。附件里面是程序,谢谢了  ken 

  • 非常感谢您的耐心解答,不过我的使用IAR编译的,然后我用了一个IAR    F5529的例程,用串口调试助手给单片机发数据可是他一直不回,程序在上一个回答中,能帮我解答一下吗? 谢谢

  • ken ,

    我用TI官方例程(例程的功能是发送刚刚接收到的信息)下进去,波特率为9600,然后与PC机进行通信,昨天晚上试的时候能够通信,但是今天同样的条件就不能通信了,这是为什么呢?难道是MCU的串口模块不稳定?                               另外,我还发现了一个问题就是在进行ADC12采样的时候ADC12MEMX的值我用同学的MCU试的时候范围会在0--4095这个范围内变,但是同样的代码在我的单片机上只能0--十几,不知道为什么,难道这是MCU的BUG?

  • ken,

    串口的已经解决了,应该是把uart0与uart1弄混了,然后ADC12的问题还没解决,   谢谢