TI中文支持网
TI专业的中文技术问题搜集分享网站

求助:MSP430F2272的UART口通信问题!!!

最近用msp430f2272写一个uart的通信,波特率配置正确了,可以发送,可以接收,但是当我使能了接收中断的时候,才发现发送数据时的数据居然更新了接收缓存器里的内容,导致了我每发送一个数据就进一次接收中断,我也在仿真时检查过我的寄存器配置,在寄存器USCI_Ax_Status 中的位UCLISTEN = 0;根本就没开监听模式,求解!!!

step by step:

楼主,

   请参考如下代码:

#include <msp430.h>

int main(void){ WDTCTL = WDTPW + WDTHOLD; // Stop WDT if (CALBC1_1MHZ==0xFF) // If calibration constant erased { while(1); // do not load, trap CPU!! } DCOCTL = 0; // Select lowest DCOx and MODx settings BCSCTL1 = CALBC1_1MHZ; // Set DCO DCOCTL = CALDCO_1MHZ; P3SEL = 0x30; // P3.4,5 = USCI_A0 TXD/RXD UCA0CTL1 |= UCSSEL_2; // SMCLK UCA0BR0 = 8; // 1MHz 115200 UCA0BR1 = 0; // 1MHz 115200 UCA0MCTL = UCBRS2 + UCBRS0; // Modulation UCBRSx = 5 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}

Adrian gan:

回复 step by step:

你好,

我把上述你给的程序编译了一遍,下载到板子上,通过PC机的串口助手进行调试,用串口助手发送一字节数据到mcu,数据是可以发成功的,但是muc收到数据后却一直把接收到的数据发送出去,也就是说,接收中断不断的进入,而UCA0TXBUF = UCA0RXBUF;已经把接收中断标志位清零了,所以得到的结论是mcu发送数据的时候把接收缓冲器里的内容更新了,导致接收中断的不断产生

Adrian gan:

回复 step by step:

你好,

我把上述你给的程序编译了一遍,下载到板子上,通过PC机的串口助手进行调试,用串口助手发送一字节数据到mcu,数据是可以发成功的,但是muc收到数据后却一直把接收到的数据发送出去,也就是说,接收中断不断的进入,而UCA0TXBUF = UCA0RXBUF;已经把接收中断标志位清零了,所以得到的结论是mcu发送数据的时候把接收缓冲器里的内容更新了,导致接收中断的不断产生

step by step:

回复 Adrian gan:

你好,

    上面的代码应该不会出现你说的那种情况。你的板子是开发板还是自己做的?建议用示波器观察RXD脚,看看是否是该脚上存在低电平触发了接收中断。

 

Adrian gan:

回复 step by step:

你好,

板子是自己做的,但是我个人认为这应该不关板子的事吧,我先用示波器看看Rx脚是否有低电平产生,谢谢了

Adrian gan:

回复 step by step:

你好,我用示波器看过了,我用串口助手发送的数据是0x55,而Rx引脚上观察到的数据就是Tx引脚上所发送的数据,两者波形只相差一个bit的时间,如图示(蓝色为Tx引脚,黄色为Rx引脚),这是芯片的问题吗

step by step:

回复 Adrian gan:

你好,

   串口调试助手是不断发0x55吗?如果是这样的话确实会不断进入接收中断的,如果串口调试助手只发一个字节的话就只会进一次中断了。另外示波器黄色波形是430的TX脚吗?

Adrian gan:

回复 step by step:

不是,串口助手我只发了一次0x55,其他都是芯片直发进行的,黄色是Rx引脚

Adrian gan:

回复 step by step:

不是,串口助手我只发了一次0x55,其他都是芯片自发进行的,黄色是Rx引脚

赞(0)
未经允许不得转载:TI中文支持网 » 求助:MSP430F2272的UART口通信问题!!!
分享到: 更多 (0)