[求助]
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;
}
有个简单的办法做UART的实验,买一个USB转串口的模块,比如CP2102的模块,不到10块钱的样子,就可以实现PC到MSP430的串行通信。PC上用串口调试助手可以发送或者查看接收到数据。
直接用板载USB转串口就可以进行UART实验。先将J3那两个跳线帽按SW UART接,下载编译好的程序,运行,再将跳线帽按HW UART接,打开电脑调试助手,然后(不用说了,你懂的),(使用板载方法,波特率上限9600,一开始我也不知道)。
回复 板凳风的世界 的帖子
sw UART HW uart,这两个是什么个意思呀,不懂???求详细说明下,最好上图呀
回复 板凳风的世界 的帖子
按照你说的怎么弄不成功呀。。。要不加个QQ聊,我再把设置图片给你让你看看。
回复 4楼SF很厉害 的帖子
SW UART 软件UART,HW UART 硬件UART。其实使用板子上的直接接成HW UART 那样就可以。那不是有个表示嘛,你拿着板子,USB那个朝上,那两个跳线帽横着插。你再试试,一定可以的
回复 5楼SF很厉害 的帖子
有参考书书上说先接成SW,在接成HW,我发现直接接成HW也可以下载程序,调试。不过波特率最大只能设置成9600bps,另外说一下,我是用IAR。CCS不知道是不是这样
回复 6楼风的世界 的帖子
其实我不喜欢说横啊竖的,看怎么拿板子了。 J3跳线帽那,2553芯片上方有SW UART 和HW UART 标识,边上有接插方式,你按HW UART 左方那个标识接就可以了,另外保证程序没问题,串口助手中COM口、波特率都要选对。
就说这么多了,说多了
回复 8楼风的世界 的帖子
按照你说的,我明白了HW和SW,但是还是没有成功,难道是我代码的问题,还得研究研究。。。。
单片机UART输出的是TTL电平,usb转232 接头是不能够辨别TTL电平,需要接232外围电路,这样电脑串口程序才能接收码值
加一句 P1SEL2|=BIT1+BIT2; 试试
是不是你的波特率设置错了啊,1M Hz/9600=104(十进制),是不是要把它转换为十六进制啊,你把他改成68(十六进制)试一下。还有,如果改成12M Hz的似乎可以整除,就不要那句调节余数的代码了
刚才遗漏了,这样改 UCA0BR0=ox68; 这样看看可不可以,之前就是在实验室发现发送不出来东西,然后别人告诉我是没有设置好,改了就好了,楼主试试/
我之前说的你试试,但是我确实看到了和你那句话一模一样的代码,等于104或许可以,总之你试试呗,学习嘛!
这个程序看着就有些问题,首先用于串口功能的IO并没有正确的进行配置,根本无法输出数据,其次既然是已经使用查询发送,就可以不用打开接收和发送的中断使能
你好!我最近也在用USB转串口的方式获得测量数据,但是我向直接把数据通过UART,通过430 launchpad开发板上烧录程序,直接将测量数据通过nokia5110显示出来,但源程序不解,可否帮忙解决。谢谢!