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

TM4C129EN 串口接收数据堆积

大家好,我用TM4C129芯片的RS232串口通讯,波特率115200bps,100ms的数据刷新速率,20个字,在串口接收判断帧头和校验,如果正确则全部接收,但出现如下问题:在串口端用串口调试助手测试数据包接收正常,但在TM4C芯片中会出现数据包接收不完整的情况。还请遇到类似问题战友不吝赐教。

Susan Yang:

“但在TM4C芯片中会出现数据包接收不完整的情况” 能否请您详细说明下?是固定的字缺失吗?

xyz549040622:

为啥用串口助手就好了,还是你检测没做好,你接收到,然后再用别的串口发出去,看看是否完全呢?

pei gong:

回复 xyz549040622:

是我软件中的检测没有做好,在出口调试助手接收到的报文大概1s会出现一包数据分开接收的情况,如下:

上述情况时间在1s内,但是在软件中的串口接收会出现3s左右刷新一次数据的情况,在线仿真时在软件的Rx_buffer中可以看到大量持续的上述数据分开进中断的情况。您说的这个方法我测试下。

pei gong:

回复 Susan Yang:

不是固定的,是接收到的一包数据在软件中的串口接收Rx_buffer中会被分开接收,如果不考虑一条数据的完整性的话,在软件中的串口上接收到的数据都是正确的数据,只是每次接收数据的顺序和接收的字数不对。

pei gong:

回复 xyz549040622:

我认为是软件中的检测没有做好,但是我不太清楚怎么来处理?

xyz549040622:

回复 pei gong:

你把其他中断关掉试试,是否有更高优先级的中断打断了呢?

pei gong:

回复 xyz549040622:

您好啊,我在软件中初始化串口配置,将FIFO使能去掉了,处理串口数据时采用定时处理的方式(之前采用的是串口中断),测试了大概快4个小时,收发100ms,很正常。

void InitUART1(void){

ROM_GPIOPinConfigure(GPIO_PB0_U1RX); ROM_GPIOPinConfigure(GPIO_PB1_U1TX); ROM_GPIOPinTypeUART(GPIO_PORTB_BASE, GPIO_PIN_0| GPIO_PIN_1); ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_UART1); ROM_UARTConfigSetExpClk(UART1_BASE, ui32SysClock, 115200,//SysCtlClockGet() (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE));// ROM_UARTFIFOEnable(UART1_BASE);// ROM_UARTFIFOLevelSet(UART1_BASE, UART_FIFO_TX2_8, UART_FIFO_RX2_8); ROM_UARTIntEnable(UART1_BASE, UART_INT_TX |UART_INT_RX | UART_INT_RT); ROM_IntEnable(INT_UART1); ROM_UARTEnable(UART1_BASE); // ??UART?? }

如上,但是屏蔽掉FIFO使能,串口中断应该是多少个字节中断一次呢?是一个字节中断一次吗?

赞(0)
未经允许不得转载:TI中文支持网 » TM4C129EN 串口接收数据堆积
分享到: 更多 (0)