[求助] MSP430G2553做UART怎么搞??

SF很厉害   2013-11-24 21:51 楼主
我做了好几天的UART,但是总是搞不出来,就用MSP430G2553裸单片机,是不是只要把J3的跳线帽前两个竖着连起来,P1.1连接TXD,P1.2连接RXD;就可以了,还是要搭建232外围电路才能实现,仅仅靠430G2553裸单片机不能实现。。。。。。就仅仅有一个单片机,没有别的东西了,求大神帮忙指点指点。。。。
我的430代码如下:大神看下有没有什么错误。。。。
/*T-->transmit(发送)      R-->receive(接收)*/
/* P1.1-->RXD(接收端口)       P1.2-->TXD(发送端口)*/
#include
#define uchar unsigned char
#define uint  unsigned int
void uart_init();
void main()
{
WDTCTL=WDTHOLD+WDTPW;          //关闭看门狗
uart_init();
_BIS_SR(LPM0_bits+GIE);       //进入低功耗模式,并且等待中断
}
void uart_init()
{
UCA0CTL1|=UCSWRST;
BCSCTL1 = CALBC1_1MHZ;                    // Set DCO
DCOCTL = CALDCO_1MHZ;                     //DCO-->1MHZ
P1SEL|=BIT1+BIT2;                        //设置P1.1,P1.2,为外围模块
UCA0CTL1|=UCSSEL_2;                     // SMCLK
UCA0BR0=104;                            // 1MHz 9600
UCA0BR1=0;                              // 1MHz 9600
UCA0MCTL|=UCBRS0;   
UCA0CTL1&=~UCSWRST;                   //清除UCSRST,清除所有的复位
IE2|=UCA0RXIE;                  //开TXD,RXD的中断
}
#pragma vector=USCIAB0RX_VECTOR
__interrupt void UART0RXD()
{
while (!(IFG2&UCA0TXIFG));   // USCI_A0中的TXbuffer是否空位,当有数据的时候标志为0
UCA0TXBUF=UCA0RXBUF;   
}
  • 2553.jpg

回复评论 (18)

有个简单的办法做UART的实验,买一个USB转串口的模块,比如CP2102的模块,不到10块钱的样子,就可以实现PC到MSP430的串行通信。PC上用串口调试助手可以发送或者查看接收到数据。
《MCU工程师炼成记》作者之一
点赞  2013-11-24 23:36
直接用板载USB转串口就可以进行UART实验。先将J3那两个跳线帽按SW  UART接,下载编译好的程序,运行,再将跳线帽按HW UART接,打开电脑调试助手,然后(不用说了,你懂的),(使用板载方法,波特率上限9600,一开始我也不知道)。
点赞  2013-11-24 23:52

回复 板凳风的世界 的帖子

sw  UART    HW  uart,这两个是什么个意思呀,不懂???求详细说明下,最好上图呀
点赞  2013-11-25 10:47

回复 板凳风的世界 的帖子

按照你说的怎么弄不成功呀。。。要不加个QQ聊,我再把设置图片给你让你看看。
点赞  2013-11-25 11:27

回复 4楼SF很厉害 的帖子

SW UART 软件UART,HW UART 硬件UART。其实使用板子上的直接接成HW UART 那样就可以。那不是有个表示嘛,你拿着板子,USB那个朝上,那两个跳线帽横着插。你再试试,一定可以的
点赞  2013-11-27 10:21

回复 5楼SF很厉害 的帖子

有参考书书上说先接成SW,在接成HW,我发现直接接成HW也可以下载程序,调试。不过波特率最大只能设置成9600bps,另外说一下,我是用IAR。CCS不知道是不是这样
点赞  2013-11-27 10:24

回复 6楼风的世界 的帖子

其实我不喜欢说横啊竖的,看怎么拿板子了。 J3跳线帽那,2553芯片上方有SW UART 和HW UART 标识,边上有接插方式,你按HW UART 左方那个标识接就可以了,另外保证程序没问题,串口助手中COM口、波特率都要选对。
    就说这么多了,说多了
点赞  2013-11-27 10:35

回复 8楼风的世界 的帖子

按照你说的,我明白了HW和SW,但是还是没有成功,难道是我代码的问题,还得研究研究。。。。
点赞  2013-11-28 19:06
显示串口被占用,已经竖着插了
点赞  2015-9-25 17:54
单片机UART输出的是TTL电平,usb转232 接头是不能够辨别TTL电平,需要接232外围电路,这样电脑串口程序才能接收码值
点赞  2015-9-28 17:36
加一句 P1SEL2|=BIT1+BIT2; 试试
点赞  2015-12-7 19:28
是不是你的波特率设置错了啊,1M Hz/9600=104(十进制),是不是要把它转换为十六进制啊,你把他改成68(十六进制)试一下。还有,如果改成12M Hz的似乎可以整除,就不要那句调节余数的代码了
点赞  2015-12-9 21:03
刚才遗漏了,这样改 UCA0BR0=ox68;   这样看看可不可以,之前就是在实验室发现发送不出来东西,然后别人告诉我是没有设置好,改了就好了,楼主试试/
点赞  2015-12-9 21:10
要不要给你一个我个人测试好的程序给你?
刻苦学习,共同进步
点赞  2015-12-9 21:23
我之前说的你试试,但是我确实看到了和你那句话一模一样的代码,等于104或许可以,总之你试试呗,学习嘛!
点赞  2015-12-9 21:25
这个程序看着就有些问题,首先用于串口功能的IO并没有正确的进行配置,根本无法输出数据,其次既然是已经使用查询发送,就可以不用打开接收和发送的中断使能
刻苦学习,共同进步
点赞  2015-12-9 21:37
引用: 风的世界 发表于 2013-11-27 10:35
其实我不喜欢说横啊竖的,看怎么拿板子了。 J3跳线帽那,2553芯片上方有SW UART 和HW UART 标识,边上有 ...

你好!我最近也在用USB转串口的方式获得测量数据,但是我向直接把数据通过UART,通过430 launchpad开发板上烧录程序,直接将测量数据通过nokia5110显示出来,但源程序不解,可否帮忙解决。谢谢!
点赞  2016-5-28 19:53
引用: SF很厉害 发表于 2013-11-28 19:06
按照你说的,我明白了HW和SW,但是还是没有成功,难道是我代码的问题,还得研究研究。。。。

楼主这个问题解决了没
点赞  2016-7-14 10:09
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复