打印

G2553开发板与PC机的rs232串口通信

[复制链接]
1851|41
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
各路大神,本人MCU小白,近期要用MSP430G2553与PC机进行UART通信,程序是TI的官方例程,但首发的字符对不上,比如在串口助手里输入字符a,显示接受的是7F,输入abcde,显示7F 7F FD FF F5 FF,这是什么原因?
#include  "msp430g2553.h"

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  BCSCTL1 = CALBC1_1MHZ;                    // Set DCO
  DCOCTL = CALDCO_1MHZ;
  P1SEL = BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXD
  P1SEL2 = BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXD
  UCA0CTL1 |= UCSSEL_2;                     // SMCLK
  UCA0BR0 = 104;                            // 1MHz 9600
  UCA0BR1 = 0;                              // 1MHz 9600
  UCA0MCTL = UCBRS0;                        // Modulation UCBRSx = 1
  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  IE2 |= UCA0RXIE;                          // Enable USCI_A0 RX interrupt
  __bis_SR_register(LPM0_bits + GIE);       // Enter LPM0, interrupts enabled
}

//  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
}

相关帖子

沙发
dirtwillfly| | 2016-7-9 11:09 | 只看该作者
以16位格式发送看看

使用特权

评论回复
板凳
基一一本国策|  楼主 | 2016-7-11 09:01 | 只看该作者
dirtwillfly 发表于 2016-7-9 11:09
以16位格式发送看看

是Hex格式吗?我都试过了,波特率还有8N1这些设置都没错,串口助手这个软件也换了两个,结果都一样,我现在只能怀疑是那个usb转串口线的质量问题了

使用特权

评论回复
地板
dirtwillfly| | 2016-7-11 10:15 | 只看该作者
基一一本国策 发表于 2016-7-11 09:01
是Hex格式吗?我都试过了,波特率还有8N1这些设置都没错,串口助手这个软件也换了两个,结果都一样,我现 ...

换一条试试。
另外,msp430接收到字符串之后,判断一下是否正确,正确就点个led
这样能判断是从上位机到msp430出问题了,还是msp430到上位机出问题了

使用特权

评论回复
5
angerbird| | 2016-7-11 11:56 | 只看该作者
这个是按照ASCII码的进行的么?

使用特权

评论回复
6
smilingangel| | 2016-7-11 17:28 | 只看该作者
这个看下是不是波特率的设计问题的

使用特权

评论回复
7
基一一本国策|  楼主 | 2016-7-11 17:46 | 只看该作者
dirtwillfly 发表于 2016-7-9 11:09
以16位格式发送看看

我换了一条线试了,结果还是不行,说明不是usb转串口线的问题,如果连续重复发同样的字符,接收到的是乱码,这是不是能断定是由于串口和单片机之间电平不匹配引起的?(max3232芯片的质量问题?)

使用特权

评论回复
8
基一一本国策|  楼主 | 2016-7-11 17:54 | 只看该作者
angerbird 发表于 2016-7-11 11:56
这个是按照ASCII码的进行的么?

是ASCII码发出去的,Hex根本就发不出去,接收如果也设置成ASCII,那么有一半左右是收不到,另一半是乱码,接收如果设置成Hex,也是有将近一半收不到,另一半也是乱码,不过在那堆乱码中FF 出现的频率很高

使用特权

评论回复
9
基一一本国策|  楼主 | 2016-7-11 17:57 | 只看该作者
smilingangel 发表于 2016-7-11 17:28
这个看下是不是波特率的设计问题的

如何看波特率的设计?CCS自带的程序例程9600的波特率不会有错吧,串口助手我也选了9600的那个选项,在这种情况下我要怎么考虑波特率的设计

使用特权

评论回复
10
Bjorn| | 2016-7-12 22:03 | 只看该作者
查看一下寄存器,接收到的数据是多少

使用特权

评论回复
11
基一一本国策|  楼主 | 2016-7-13 12:00 | 只看该作者
Bjorn 发表于 2016-7-12 22:03
查看一下寄存器,接收到的数据是多少

无论发什么英文字符,UCA0RXBUF和UCA0TXBUF始终是0x80

使用特权

评论回复
12
pmp| | 2016-7-13 16:44 | 只看该作者
你是用的什么来显示的?

使用特权

评论回复
13
pmp| | 2016-7-13 16:47 | 只看该作者
不是用的字符串来显示的吗?

使用特权

评论回复
14
基一一本国策|  楼主 | 2016-7-13 17:47 | 只看该作者
pmp 发表于 2016-7-13 16:47
不是用的字符串来显示的吗?

不是很懂你什么意思,串口助手上只有ASCII和Hex两种显示可选

使用特权

评论回复
15
zhangbo1985| | 2016-7-13 22:04 | 只看该作者
这个首先是需要电平信号的匹配的啦

使用特权

评论回复
16
基一一本国策|  楼主 | 2016-7-14 08:48 | 只看该作者
zhangbo1985 发表于 2016-7-13 22:04
这个首先是需要电平信号的匹配的啦

MSP430G2553引脚出来的是3.3V的电平,那usb转串口出来的是多少V(里面的芯片是HL340),该用什么电平转换器?

使用特权

评论回复
17
迪卡| | 2016-7-14 19:23 | 只看该作者
能读出寄存器的值的吗,看看是否发送/接收成功

使用特权

评论回复
18
基一一本国策|  楼主 | 2016-7-26 10:01 | 只看该作者
本帖最后由 基一一本国策 于 2016-7-26 10:04 编辑

今天买的新板子到了,同样的程序,通信正常。呵呵,心中一万只草泥马在奔腾这半个月来改程序,换串口助手,重装系统,重装CCS,用示波器测波形,细查各寄存器的配置,G2553自发自收,单片机之间相互通信等等都干过,就是不能正常进入接收中断,一直查不出问题,直到现在我也不知道旧板的问题出在哪,如果说是板子烧坏了,那为什么其他IO口实验中断实验都是正常的?

使用特权

评论回复
19
dirtwillfly| | 2016-7-26 11:27 | 只看该作者
基一一本国策 发表于 2016-7-26 10:01
今天买的新板子到了,同样的程序,通信正常。呵呵,心中一万只草泥马在奔腾这半个月来改程序,换 ...

新买的开发板吗?
有没有可能板载的msp430遇到水货

使用特权

评论回复
20
Varus| | 2016-7-27 08:47 | 只看该作者
CCS自带的程序例程9600的波特率

这个还是检查一下,还有时钟,算一下配置出来的是9600吗

使用特权

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

本版积分规则

1

主题

14

帖子

0

粉丝