[讨论] MSP430F5438A串口测试,都出来的都是乱码,而且PC接收到的数据比发送的少字节

young2000   2016-8-14 11:17 楼主
小弟初来乍到,望各位大神多多指点。先谢谢各位
  • TI官方测试例程
  • 串口线端口波特率设置
  • 串口调试出来是乱码

回复评论 (13)

我新到的一个MSP430F5438A最小系统开发板,用测试例程测试串口时波特率115200和9600都试过了,串口调试出来的数据都是乱码。是板子的原因还是我调试错误?
点赞  2016-8-14 11:34
波特率不匹配啊,一个9600,一个115200
点赞  2016-8-14 11:47
把串口助手波特率改成115200试试
点赞  2016-8-14 11:48
也不知道你发送的数据是什么,如果发送的不是英文字母和符号,显示出乱码也是正常的。
点赞  2016-8-15 10:30
引用: lcofjp 发表于 2016-8-15 10:30
也不知道你发送的数据是什么,如果发送的不是英文字母和符号,显示出乱码也是正常的。

发送的就是abcdefg
点赞  2016-8-15 10:40
引用: 15369350004 发表于 2016-8-14 11:47
波特率不匹配啊,一个9600,一个115200

那是一开始用的多115200,因为对于32768Hz来说有点太大,后来改成9600了,调试时候都是匹配的
点赞  2016-8-15 10:42
引用: 15369350004 发表于 2016-8-14 11:48
把串口助手波特率改成115200试试

调试时候都是匹配的,那是一开始程序用的是115200波特率,因为对于32768Hz来说有点太大,后来改成9600了
点赞  2016-8-15 10:43
引用: lcofjp 发表于 2016-8-15 10:30
也不知道你发送的数据是什么,如果发送的不是英文字母和符号,显示出乱码也是正常的。

你好,我用的是官方例程中的msp430x54xA_uscia0_uart_03,
#include

int main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  P3SEL = 0x30;                             // P3.4,5 = USCI_A0 TXD/RXD
  UCA0CTL1 |= UCSWRST;                      // **Put state machine in reset**
  UCA0CTL1 |= UCSSEL_1;                     // CLK = ACLK
  UCA0BR0 = 0x03;                           // 32kHz/9600=3.41 (see User's Guide)
  UCA0BR1 = 0x00;                           //
  UCA0MCTL = UCBRS_3+UCBRF_0;               // Modulation UCBRSx=3, UCBRFx=0
  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  UCA0IE |= UCRXIE;                         // Enable USCI_A0 RX interrupt

  __bis_SR_register(LPM3_bits + GIE);       // Enter LPM3, interrupts enabled
  __no_operation();                         // For debugger
}

// Echo back RXed character, confirm TX buffer is ready first
#pragma vector=USCI_A0_VECTOR
__interrupt void USCI_A0_ISR(void)
{
  switch(__even_in_range(UCA0IV,4))
  {
  case 0:break;                             // Vector 0 - no interrupt
  case 2:                                   // Vector 2 - RXIFG
    while (!(UCA0IFG&UCTXIFG));             // USCI_A0 TX buffer ready?
    UCA0TXBUF = UCA0RXBUF;                  // TX -> RXed character
    break;
  case 4:break;                             // Vector 4 - TXIFG
  default: break;  
  }
}
点赞  2016-8-15 11:01
引用: young2000 发表于 2016-8-15 11:01
你好,我用的是官方例程中的msp430x54xA_uscia0_uart_03,
#include

int main(void)
{
  WDTCTL = ...

这是我换了一个串口助手调试的截屏,麻烦大神给看一下
  • 2.jpg
点赞  2016-8-15 11:23
自己调试,插上仿真器,把低功耗设置屏蔽掉,改成while(1); 然后设置断点观察收到的数据。
点赞  2016-8-15 11:24
频率高,波特率稍微有点不匹配就会出现乱码
点赞  2016-8-15 11:58
你好,我也遇到这个问题,是如何解决的啊
点赞  2018-4-9 21:03
引用: young2000 发表于 2016-8-15 11:23
这是我换了一个串口助手调试的截屏,麻烦大神给看一下

楼主如何解决的
点赞  2018-4-9 21:58
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复