打印

USCI UART的波特率问题..

[复制链接]
1826|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gexingyouxian|  楼主 | 2013-5-27 09:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
UART, se, ST, dc, RS
4M晶振,要9600波特率...

用波特率计算工具算得:UBR1=0X01;UBR0=0XA0;UCA0MCTLW=0XC000;

怎么不对呢...和PC联系不上...
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // stop watchdog

  // XT1 Setup
  
  PJSEL0 |= BIT4 + BIT5;
  
  CSCTL0_H = 0xA5;
  CSCTL1 |= DCOFSEL0 + DCOFSEL1;             // Set max. DCO setting
  CSCTL2 = SELA_0 + SELS_3 + SELM_3;        // set ACLK = XT1; MCLK = DCO=smlk
  CSCTL3 = DIVA_2 + DIVS_0 + DIVM_0;        // set all dividers  1MHZ
  CSCTL4 |= XTS;                //high speed mode
  CSCTL4&=~XT1DRIVE_3;
  CSCTL4 &= ~XT1OFF;
  
  do
  {
    CSCTL5 &= ~XT1OFFG;
                                            // Clear XT1 fault flag
    SFRIFG1 &= ~OFIFG;
  }while (SFRIFG1&OFIFG);                   // Test oscillator fault flag
  
  // Configure UART pins
  P2SEL1 |= BIT0 + BIT1;
  P2SEL0 &= ~(BIT0 + BIT1);
  
  P3OUT=0;
  P3DIR|=BIT4+BIT5+BIT6+BIT7;
  // Configure UART 0
  UCA0CTL1 |= UCSWRST;
  UCA0CTL1 = UCSSEL_1;                      // Set ACLK = 4MHZ as UCBRCLK
  UCA0BR0 = 0xa0;                              // 9600 baud
  UCA0BR1 = 0x01;
  UCA0MCTLW |= 0xc000;                     
                                            
  UCA0CTL1 &= ~UCSWRST;                     // release from reset
  UCA0IE |= UCRXIE;                         // Enable RX interrupt
  
  _EINT();

相关帖子

沙发
gexingyouxian|  楼主 | 2013-5-27 09:15 | 只看该作者
我估计是波特率设置有问题...
那个MCTLW到底怎么设置...按书上说小数5应该设置为0X6B才是...怎么是0XC0呢..

使用特权

评论回复
板凳
realmcu| | 2013-5-27 23:30 | 只看该作者
估计是经验值....

使用特权

评论回复
地板
51xlf| | 2013-5-29 00:14 | 只看该作者
最好配置整数的

使用特权

评论回复
5
banalmaster| | 2013-5-29 01:02 | 只看该作者
从以下几方面找一下问题:
1.MCU的时钟频率是否选择正确;
2.串口引脚是否发出数据,条件允许的话,让发送端发送数据,用示波器测一下,顺便可以测试波特率;
3.串口通信工具的驱动是否正常;

使用特权

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

本版积分规则

197

主题

1530

帖子

2

粉丝