查看: 1513|回复: 1

[原创] 通过eDMA半满中断实现RT LPUART串口可靠接收

[复制链接]

该用户从未签到

30

主题

61

帖子

0

高级会员

Rank: 4

积分
980
最后登录
2025-7-28
发表于 2024-9-13 11:54:56 | 显示全部楼层 |阅读模式
通过eDMA半满中断实现RTLPUART串口可靠接收
1. 实际应用场景
   客户实际应用场景:使用eDMA收发LPUART数据,串口波特率2Mbps。实际测试发现大数据通信压力测试时存在数据丢包现象。问题原因在处理DMA完成中断ISR时短暂关闭了eDMA的接收。在关闭DMA的短暂过程中,如果有新数据到来,无法接送数据从而造成串口丢包。
2. eDMA半满中断
为了实现高可靠串口收发,解决的办法是整个处理过程不关闭DMA。IMX RT的 eDMA支持半满中断 (DMA_CSR_INTHALF_MASK)和 全满中断 (DMA_CSR_INTMAJOR_MASK)功能。可以在接收数据过半时将已收到的前半部分数据写入fifo,然后产生满中断时将后半部分数据写入fifo,此时eDMA会自动将写指针移动到接收缓存的头部继续接收,循环这个过程,就不必关闭DMA。

通过eDMA半满中断实现RT LPUART串口可靠接收.pdf (117.07 KB, 下载次数: 33)
回复

使用道具 举报

  • TA的每日心情
    奋斗
    昨天 11:07
  • 签到天数: 859 天

    连续签到: 2 天

    [LV.10]以坛为家III

    69

    主题

    3264

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    10357
    最后登录
    2025-7-31
    发表于 2024-9-13 23:31:45 | 显示全部楼层
    感谢分享   
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-8-1 08:47 , Processed in 0.079885 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表