串口接收用中断方式实现,收满一定数目之后通过udp协议无线发走,但是在测试中遇到问题,当串口发送端给3200发送串口数据的时候,每隔10ms发送一包,实际测试速度达到50kb/s(波特率2Mbps),但是查看接收到的数据会有丢包,为了排除是UDP协议的问题,我关闭串口功能,让3200自己产生递增数然后udp发走,实测无丢包,且速度在200kb/s以上,附上串口函数与发送函数,请教各位老师分析一下原因,谢谢!
void uart0_handle()
{
int lRetVal = MAP_UARTIntStatus(UARTA0_BASE, true);
if(lRetVal & UART_INT_RT) //串口空闲中断
{
while(UARTCharsAvail(UARTA0_BASE))
{
tempdata1[cnt1++] = MAP_UARTCharGet(UARTA0_BASE);
}
MAP_UARTIntClear(UARTA0_BASE, UART_INT_RT);
}
if(lRetVal & UART_INT_RX) //串口接收中断
{
while(UARTCharsAvail(UARTA0_BASE))
{
tempdata1[cnt1++] = MAP_UARTCharGet(UARTA0_BASE);
}
MAP_UARTIntClear(UARTA0_BASE, UART_INT_RX);
}
MAP_UARTIntClear(UARTA0_BASE,UART_INT_RT|UART_INT_RX); //清中断
}
while(1){
if(cnt1 == PACKAGE)
{
for(t=0;t<cnt1;t++)
MAP_UARTCharPut(UARTA0_BASE,tempdata1[t]);
// iStatus1 = sl_SendTo(iSockID, tempdata1, PACKAGE, 0,(SlSockAddr_t *)&sAddr, iAddrSize);
cnt1 = 0;
}
}