• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

有没有人做过IMXRT1052的串口DMA接收

donatello 2018-11-18 浏览量:1942

参考了官方给的SDK,它的串口DMA接收例程很奇怪,是定长接收的,并且还需要同时开启DMA发送才可以正常使用DMA接收功能,每次接收到数据之后,DMA通道的数据长度都会累加,加到用户设定的定长接收的值之后又归零再重新加,我想要实现串口开启DMA接收之后能记录每次刷新过的数据长度和数据内容并提取出来,不要用累加的方法,应该怎么写程序?


懂的或者做过类似项目的大佬来答,能解决问题的立刻采纳不墨迹,严禁水回答,敷衍回答见一个举报一个。

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • rt1052的lpuart的eDMA的接收确实是定长接收的,话说串口接收dma只能定长接收吧,有其他方式吗?

    如果你想记录每次刷新的数据和内容的话,我建议你发的数据加上明显的头尾,这样就能判断了。除此之外,还真没有特别好的的办法。

    或者你可以利用一个新的io作为中断触发,数据每发送完一次就置位一次,这样也能实现这个功能

    • 发布于 2018-11-18
    • 举报
    • 评论 4
    • 0
    • 0
donatello 回复了 奇迹12:串口接收DMA可以不定长接收,你看看我在社区写的关于STM32串口DMA+空闲中断实现的不定长接收就知道了,它的方法是定义一个足够大的DMA缓存,如长度255的缓存,然后在每次发送完毕之后在空闲中断里面提取接收到的数据,然后通过CNDTR寄存器来获得缓存区里面的有效数据长度,请问1052没有类似的功能? 回复
奇迹12 回复了 donatello:没看见你的文章,你说得是不是利用串口空闲中断来实现,这样确实可以。你可以看一下RT1052的kLPUART_IdleLineInterruptEnable中断,看看能不能实现你的要求,有时间我也写一下试试 回复
donatello 回复了 奇迹12:这个空闲中断我已经实现并可以正确响应了,关键就是串口DMA接收那里不是很懂 回复
奇迹12 回复了 donatello:飞凌RT1052——12.纪念贴与eDMA不定长接收 http://www.nxpic.org/module/forum/forum.php?mod=viewthread&tid=615541&fromuid=3469866 (出处: 恩智浦技术社区) 回复

其他答案 数量:0

相关问题

问题达人换一批

有没有人做过IMXRT1052的串口DMA接收