最近做了一个项目需要用串口来接收模块端的应答数据,由于使用了实时操作系统,考虑中断嵌套或被打断的问题导致数据接收不完整的问题,使用串口dma接收数据,但实际使用过程中发现串口dma仍有数据丢失,可能存在以下原因:
1、串口DMA配置问题:先初始化dma通道,防止串口接收、溢出等标志位置位导致dma工作异常,dma优先级不够高导致被其他dma打断
2、CACHE的使用:网上能找到很多相关资料,不在此处说明
3、硬件模块的原因:板子是自己做的,模块采用了一个mos管来控制电源管理,实际排查发现这个mos管内阻原因存在压降,使得低电平无法被识别到,从而影响到stm32的数据接收
最近做了一个项目需要用串口来接收模块端的应答数据,由于使用了实时操作系统,考虑中断嵌套或被打断的问题导致数据接收不完整的问题,使用串口dma接收数据,但实际使用过程中发现串口dma仍有数据丢失,可能存在以下原因:
1、串口DMA配置问题:先初始化dma通道,防止串口接收、溢出等标志位置位导致dma工作异常,dma优先级不够高导致被其他dma打断
2、CACHE的使用:网上能找到很多相关资料,不在此处说明
3、硬件模块的原因:板子是自己做的,模块采用了一个mos管来控制电源管理,实际排查发现这个mos管内阻原因存在压降,使得低电平无法被识别到,从而影响到stm32的数据接收
举报