各路大神,本人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
- }
复制代码
是Hex格式吗?我都试过了,波特率还有8N1这些设置都没错,串口助手这个软件也换了两个,结果都一样,我现在只能怀疑是那个usb转串口线的质量问题了
换一条试试。
另外,msp430接收到字符串之后,判断一下是否正确,正确就点个led
这样能判断是从上位机到msp430出问题了,还是msp430到上位机出问题了
我换了一条线试了,结果还是不行,说明不是usb转串口线的问题,如果连续重复发同样的字符,接收到的是乱码,这是不是能断定是由于串口和单片机之间电平不匹配引起的?(max3232芯片的质量问题?)
一周热门 更多>