打印

MSP430 usci串口通信

[复制链接]
3723|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
msp430launchpad开发板配置UART使用外部晶振32768,波特率为9600,并且利用串口调试工具收发数据,接收出现乱码。将波特率改为4800或者其他,更加无法接收到数据,请哪位高手指点下。


程序:
#include  "msp430g2553.h"
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT

  P1SEL = BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXD
  P1SEL2 = BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXD
  UCA0CTL1 |= UCSSEL_1;                     // 选择ACLK,对应默认时钟源为LFXT1

  ///LFXT1= 32768 波特率为9600
  UCA0BR0 = 0x03;                            // 32768 9600   
  UCA0BR1 = 0;                              // 32768 9600
  UCA0MCTL = 0x4A;                        // Modulation UCBRSx = 1
  ///LFXT1= 32768 波特率为9600

  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  IE2 |= UCA0RXIE;                          // Enable USCI_A0 RX interrupt

  P1DIR = 0x41;   //LED 配置为输出
  P1OUT = 0x09;   //LED1输出高电平,选择为上拉方式
  P1REN = 0x08;   //使能上拉电阻

  for(;;)
  {
    __bis_SR_register(LPM3_bits + GIE);
  }
}
//  Echo back RXed character, confirm TX buffer is ready first
#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
  while (!(IFG2&UCA0TXIFG));                // USCI_A0 TX buffer ready?
  UCA0TXBUF = UCA0RXBUF;                    // TX -> RXed character
  P1OUT ^= 0x41;
}

调试如下:出现乱码
file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/465524381/QQ/WinTemp/RichOle/FK2E(2Z%25SQ__%7DQJYP11HH67.jpg

相关帖子

沙发
lasbell2012| | 2012-10-13 20:25 | 只看该作者
波特率必须一致才行

使用特权

评论回复
板凳
雨落沉轩|  楼主 | 2012-10-13 20:31 | 只看该作者
这个知道,都是9600,可不知道为何出现乱码,如下

使用特权

评论回复
地板
hwk612167| | 2012-10-14 15:22 | 只看该作者
有示波器没?测下MCU的TXD 看波形,用32768  产生9.6kbps,err百分比很大,你可以用MCLK做UCSI时钟源试试

使用特权

评论回复
5
杜专| | 2012-10-14 16:18 | 只看该作者
有一个 用 32K 时钟的

改成外部晶振 不分频...

肯定可以是对的

使用特权

评论回复
6
杜专| | 2012-10-14 16:23 | 只看该作者
ACLK 时钟是经过 外部时钟 或者内部RC 时钟 分频得到的

误差还是很大的

我以前验证过用 用ACLK 做 430串口 也乱码  好像430 有一个 ACLK频率输出叫 你可以配置一下

用示波器看看 频率..

使用特权

评论回复
7
hwk612167| | 2012-10-14 18:12 | 只看该作者
给LZ贴张手册截图

无标题.jpg (99.33 KB )

无标题.jpg

使用特权

评论回复
8
杜专| | 2012-10-14 18:48 | 只看该作者
32768        0X 00 92

使用特权

评论回复
9
雨落沉轩|  楼主 | 2012-10-14 20:29 | 只看该作者
7# hwk612167
多谢提醒,找到了数据手册的Typical Baud Rates and Errors这部分,按照其配置将
UCA0MCTL=0x09,串口数据能基本正常收发。但还是有一小点不太明白,发送单个数据的时候接收就会不稳定,发送多个则能正常接收。

Typical Baud Rates and Errors的部分如下:

使用特权

评论回复
10
happy啦啦啦| | 2012-10-14 20:47 | 只看该作者
串口设置都改为16进制发送 16进制接收试试

使用特权

评论回复
11
tianm| | 2012-10-15 09:30 | 只看该作者
注意波特率和发送内容的制式

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

250

帖子

0

粉丝