Part Number:MSP430FR6043Other Parts Discussed in Thread:MSPWARE, MSP430FR6041, , MSP430FR5043, MSP430FR5041, EVM430-FR6043
MSP430FR6043C串口接收有时中断,我连续发送十次,也许只会正确接收一次。使用的外部晶振8M的,发送的数据是完全没有问题的。请问是哪儿没有配置上吗?
//UART1
// GPIO Configuration for UART mode
P1SEL0 |= (BIT2 | BIT3);
P1SEL1 &= ~(BIT2 | BIT3);
// Configure USCI_A1 for UART mode, 8-bit data, 1 stop bit
UCA1CTLW0 = UCSWRST; // Put eUSCI in reset
UCA1CTLW0 |= UCSSEL__SMCLK + UCRXEIE; // CLK = SMCLK
// For BRCLK = SMCLK = 8MHz, and Baud rate = 115200 (See UG)
UCA1BRW = 4;
// UCBRSx (bits 7-4) = 0x55, UCBRFx (bits 3-1) = 5, UCOS16 (bit 0) = 1
UCA1MCTLW = 0x5551;
UCA1CTLW0 &= ~UCSWRST; // release from reset
UCA1IE |= UCRXIE; //enable Receive interrupt
接收中断中
__interrupt void hal_uart_ISR(void)
{
switch(__even_in_range(UCA1IV,18))
{
case USCI_NONE:
break;
case USCI_UART_UCRXIFG:
if((UCA1STATW&UCRXERR)==UCRXERR)
{//出现错误且该错误非溢出引起
。。。。。
}
else
{//串口未出错
}
break;
case USCI_UART_UCTXIFG:
break;
case USCI_UART_UCSTTIFG:
break;
case USCI_UART_UCTXCPTIFG:
break;
}
}
Ben Qin:
你好,程序有参考过MSPware中的例程吗?
C:\ti\msp\MSP430Ware_3_80_14_01\examples\devices\MSP430FR5xx_6xx\MSP430FR6043_MSP430FR6041_MSP430FR5043_MSP430FR5041_Code_Examples\C
,
Jason Xu:
是参照的这个文件,我是用的EVM430-FR6043的demo板子,软件就是再UltrasonicGasFR6043_02_30_00_01添加上了问题描述的这一段,其他就是GPIO适配了。就会出现UCRXERR,偶尔能够正常接收。测试工具使用串口工具发出的消息。而且单独测试发送,是没有问题的,就是接收有问题。
,
Ben Qin:
我咨询下资深工程师后回复您。
,
Ben Qin:
代码看起来没有问题。是否使用较低的波特率(例如 9600)仍然能观察到此问题?
如果使用较低的波特率可以解决问题,那么您可能需要在硬件方面进行检查以降低 UAT 引脚上的噪声水平。
,
Ben Qin:
您好,您的问题有进展了吗?
,
Jason Xu:
降低波特率确实可以解决UCRXERR出现,非常奇怪的为什么发送没有错误了,使用115200发出的数据PC都能准确的获取了,校验了数据都是正常的,唯独接收有问题
,
Ben Qin:
好的,已向工程师跟进。
,
Ben Qin:
您可以使用示波器检查 TX 和 RX 引脚上的信号。我们需要检查类比部分的信号。也许信号线中有噪声,PC可以过滤掉噪声并将其转换为正确的数字数据。但是,MCU端无法滤除噪声。并将其视为接收错误。
,
Jason Xu:
我用贵司的demo板子,EVM430FR6043测试依然有同样的问题,这点和板子没有关系吧
,
Ben Qin:
好的,工程师将尝试能否在他自己的板子上复现并解决问题。