Part Number:MSP430F5438
过年好!
这几天在调试一个UART的问题,配置如下:
UCA1CTL1 |= UCSWRST; // **Put state machine in reset**
UCA1CTL0 = UCMODE_0; // 选择串口功能 UCA1CTL0 &= ~UCPEN; //无校验
UCA1CTL0 &= ~UC7BIT; //8位数据位
UCA1CTL0 &= ~UCSPB; //1位停止位
UCA1CTL1 |= UCSSEL_1; // CLK = ACLK
UCA1BR0 = 0x03; // 32kHz/9600=3.41
UCA1BR1 = 0x00; //
UCA1MCTL = UCBRS_3 + UCBRF_0; // Modulation UCBRSx=3, UCBRFx=0
// UCA1CTL1 &= ~UCDORM;
UCA1CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
UCA1IE |= UCRXIE; // Enable USCI_A0 RX interrupt
接收:
#pragma vector=USCI_A1_VECTOR
__interrupt void USCI_A1_ISR( void )
{
switch( __even_in_range( UCA1IV, 4 ) )
{
case 0:
break; // Vector 0 – no interrupt
case 2: // Vector 2 – RXIFG
at_buf[at_buf_ptr++] = UCA1RXBUF;
if ( UCA1RXBUF == 0x0A )
{
}
break;
case 4:
break; // Vector 4 – TXIFG
default:
break;
}
}
描述:
1,使用的配置是波特率9600,在与其它9600的通讯中,是正常的。比如转为U口后使用串口调试,将串口工具设置为9600,工具及MCU都是正常的;
2,与明确配置为9600的模组进行通信,也是正常的,可收可发;
问题:
3,当模组为自适应波特率时,不能正常通讯,收发均不正常,丢包乱码;
4,不与外界连接,将TX与RX短接后,数据无触发,多数情况下只能收到0D 0A之类的字符。
我这是哪里设置的少一个步骤吗?
谢谢。
Jx Wang:
补充一句:
在写入TXBUF的时候,可看到RXBUF中已经有了这个值,但是USCI_A1_VECTOR没有触发,只有0D及0A才能触发
,
Cherry Zhou:
您好我们已收到您的问题并升级到英文论坛,如有答复将尽快回复您。谢谢!
,
Jx Wang:
仍然是以上的配置,TX与RX短接的情况下,发送数据后,只有最后一个字符被接受,其它的丢失了,是哪里配置不到位吗?
,
Cherry Zhou:
Jx Wang 说:当模组为自适应波特率时,
您好,请问您指的自适应波特率是?当使用不同的波特率时,您可能需要调整时钟源和 UCA1BRx 寄存器。