《单片机串口丢数据的常见原因.docx》由会员分享,可在线阅读,更多相关《单片机串口丢数据的常见原因.docx(7页珍藏版)》请在优知文库上搜索。
1、UARTiUniversa1.AsynchronousReceiver/Transaitter-通刖异步收发传输器,即我们通常说的串口。串口是工程师最常用的一种串行外设,但在实际应用中还是会经常遇到各种问题.比如:丢失一字节数据,今天我们就结合STM32来讲讲UART相关内容,以及容易丢失一字节数据的问题.UART几个标志位这里亚点说一下UART状态寄存器中的几个标志位:TXE、TC.RXNB.ORE.Statusregister效,但某些场合就会导致数据丢失.比如,使用此函数发送之后进入休眠、关闭接收端设备电源等情况下.解决办法:等待发送完成:voidUART-Sed6yte(uint8_t
2、Data).hiIe(RESET-USART_GetFIagStatUS(USART1,USART_F1.AG_TXE);SART-Se11dData(USART1.,Data);Kh二1.e(RESET=USAR1.GetFIagStatIJS(USART1,USART_F1.AG_TC);如果使用标准外设库,要根据实际情况封装函数,比如发送超时C或者使用HA1.封装的接口,代码包含判断传输完成:HA1.eStatusTypeDefHA1._UART_Trasmit(UARTeHand1.eTypeDef*huart,u1.11t8t*pData,uint1.6-tSize,Uint32tTimeout)UART通常会使用232或者485以增加传输距离和增强干扰.但是一旦数据线路太长就存在侬输延时的情况,特别是485侬输长距圈.并使用MCU控制传输方向的情况下.解决办法:软件增加延时处理使用通信协议培加应答机制3.其他原因UART应用的场景比较多,有些应用在发杂的工厂,干扰较大从而导致数据丢失:有些应用在对差较大的环境,时钟偏移较大导致数据丢失。解决办法需要根据实际情况,有针对性解决问题.比如:使用更好的通信线,软件做好容错处理等”