打印

MSPP430F2619串口求助!!!

[复制链接]
925|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
往事随风丶|  楼主 | 2014-7-24 21:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
调了一整天,串口有数据但是波特率不对,求大神帮帮忙。程序如下:
#define uint  unsigned int
#define uchar unsigned char

void SysCtlClockInit()
{
    DCOCTL=0;
    BCSCTL1=CALBC1_16MHZ;
    DCOCTL =CALDCO_16MHZ;
    BCSCTL1 |=DIVA_1;    //ACLK =MCLK/2=8M
    BCSCTL2 |=DIVS_1;    //SMCLK=MCLK/2=8M
}

void UartInit()
{
   
    P3SEL |=BIT4+BIT5;         //发送和接收引脚为第2功能
    UCA0CTL1 |=UCSWRST;      //reset UART module,as well as enable UART module
    UCA0CTL1 |=UCSSEL_2;     //UART clock is SMCLK
    UCA0BR0  |=0x41;           //Baud N=BCLK/rate,rate=9600,BCLK=SMCLK=8M
    UCA0BR1  |=0x03;
    UCA0MCTL  = UCBRS_1;      //UCBRSx=2
    UCA0CTL1 &= ~UCSWRST;
    //IE2 |= UCA0RXIE;           //接收中断使能
}
/************************************************************************
* Function Name : UARTPutChar
* Create Date : 2012/07/27
* Author  :
*
* Description :send a character
*
* Param : cTX is willing to send character
************************************************************************/
void UARTPutChar(unsigned char cTX)
{
    UCA0TXBUF=cTX;
    while (!(IFG2 & UCA0TXIFG));  //waiting UCA0TXBUF is empty
       IFG2 &= ~UCA0TXIFG;           //clear TX interrupt flag
}
/************************************************************************
* Function Name : UARTGetChar
* Create Date : 2012/07/27
* Author  :
*
* Description :get a character
*
* Param : cRX is willing to get character
************************************************************************/
uchar UARTGetChar(void)
{
    uchar GetChar;
    while (!(IFG2 & UCA0RXIFG));  //UCA1RXBUF has received a complete character
    IFG2&=~UCA0RXIFG;           //clear RX interrupt flag
    GetChar  =UCA0RXBUF;
    return GetChar;
}
/************************************************************************
* Function Name : UARTPutstring
* Create Date : 2012/07/27
* Author  :
*
* Description :output string
*
* Param : char *str point send string
* return: the length of string
************************************************************************/
int UARTPutstring( char *str)
{
   unsigned int uCount=0;
   do
   {
    uCount++;
    UARTPutChar(*str);
   }
   while(*++str!='\0');
   UARTPutChar('\n');
   return uCount;
}

相关帖子

沙发
comeon201208| | 2014-7-24 23:30 | 只看该作者
8M的话设置9600的波特率的,我看着没啥问题的啊。

使用特权

评论回复
板凳
往事随风丶|  楼主 | 2014-7-25 09:07 | 只看该作者
comeon201208 发表于 2014-7-24 23:30
8M的话设置9600的波特率的,我看着没啥问题的啊。

但是传到上位机是一堆乱码啊

使用特权

评论回复
地板
dirtwillfly| | 2014-7-25 12:00 | 只看该作者
和上位机上串口软件的波特率设置一致吗?包括停止位、校验位等倒要一样才行

使用特权

评论回复
5
往事随风丶|  楼主 | 2014-7-25 15:04 | 只看该作者
dirtwillfly 发表于 2014-7-25 12:00
和上位机上串口软件的波特率设置一致吗?包括停止位、校验位等倒要一样才行 ...

都一致,示波器测出来频率只有3.8k

使用特权

评论回复
6
dirtwillfly| | 2014-7-25 15:12 | 只看该作者
往事随风丶 发表于 2014-7-25 15:04
都一致,示波器测出来频率只有3.8k

测的哪里的频率?

使用特权

评论回复
7
往事随风丶|  楼主 | 2014-7-25 15:58 | 只看该作者
dirtwillfly 发表于 2014-7-25 15:12
测的哪里的频率?

写了个程序不停向上位机发送字母A,测得发送频率3.8k

使用特权

评论回复
8
往事随风丶|  楼主 | 2014-7-25 16:20 | 只看该作者
SMCLK只有1.093MHz,这是为什么呢?

使用特权

评论回复
9
dirtwillfly| | 2014-7-25 19:58 | 只看该作者
往事随风丶 发表于 2014-7-25 16:20
SMCLK只有1.093MHz,这是为什么呢?

有没有可能是信息flash中  CALBC1_16MHZ和CALDCO_16MHZ两个校准参数丢失了,导致时钟并没有16MHz?

使用特权

评论回复
10
往事随风丶|  楼主 | 2014-7-25 21:01 | 只看该作者
dirtwillfly 发表于 2014-7-25 19:58
有没有可能是信息flash中  CALBC1_16MHZ和CALDCO_16MHZ两个校准参数丢失了,导致时钟并没有16MHz? ...

可能吧,现在用外部晶振,根本没有SMCLK输出

使用特权

评论回复
11
dirtwillfly| | 2014-7-25 21:26 | 只看该作者
往事随风丶 发表于 2014-7-25 21:01
可能吧,现在用外部晶振,根本没有SMCLK输出

点个LED,看看闪不闪

使用特权

评论回复
12
往事随风丶|  楼主 | 2014-7-25 21:56 | 只看该作者
dirtwillfly 发表于 2014-7-25 21:26
点个LED,看看闪不闪

我直接用示波器测的,SMCLK就是一条直线

使用特权

评论回复
13
往事随风丶|  楼主 | 2014-7-25 22:01 | 只看该作者
DCOCTL = DCO0 + DCO1 + DCO2;              // Max DCO
  BCSCTL1 = RSEL0 + RSEL1 + RSEL2;          // XT2on, max RSEL
  BCSCTL2 |= SELS;                          // SMCLK = XT2
  P5DIR |= 0x70;                            // P5.6,5,4 outputs
  P5SEL |= 0x70;                            // P5.6,5,5 options
ACLK;32.7680KHz,MCLK:4.95MHz,SMCLK没有

使用特权

评论回复
14
angerbird| | 2014-7-27 17:37 | 只看该作者
9600的波特率,我看了程序的没啥问题的啊,。。

使用特权

评论回复
15
angerbird| | 2014-7-27 17:37 | 只看该作者
用示波器的看下主频的是不是16MHz的呗。。

使用特权

评论回复
16
往事随风丶|  楼主 | 2014-7-27 21:03 | 只看该作者
问题解决了,是板子的问题,换了一块就好了

使用特权

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

本版积分规则

5

主题

27

帖子

0

粉丝