查看: 6136|回复: 4

[求助] DMA的UART传输

[复制链接]

该用户从未签到

5

主题

22

帖子

0

新手上路

Rank: 1

积分
42
最后登录
1970-1-1
发表于 2010-6-2 21:13:19 | 显示全部楼层 |阅读模式
对于发送寄存器和接收寄存器均只有一个字节深度的UART,如果使用DMA来传输,那么数据也是一个一个地通过串口发送出去的吗?跟通过URAT中断来传输数据,速度上是不是一样的?会不会说用了DMA,那么数据就传得快一点?因为我在调试时,发现用串口中断时,收发数据都很正常,但是使用了DMA后,就发现有时候所接收到的一帧数据里面,前部分是A帧数据的前部分,后部分是B帧数据的前部分,也就是说:只接受了A帧的前面几个字节数据,A帧后一部分的数据没有正确被接收到,导致它的下一帧(B帧)的一部分数据来补充,凑够指定的传输个数,然后触发了DMA中断。这种数据丢失会是什么原因引起的呢?用串口中断一个一个字节发和收就没出现过数据丢失。困扰了好久啊!
另外,想问下,用了DMA后,每个字节传完后的空闲时间会不会比通过UART中断传输时的要长一点呢?(根据232协议,每传一个字节都会有一个空闲时间的)
各位大侠请指教啊!
 
 
 
我知道答案 目前已有4人回答
回复

使用道具 举报

该用户从未签到

0

主题

1

帖子

0

新手上路

Rank: 1

积分
0
最后登录
1970-1-1
发表于 2010-10-8 11:26:34 | 显示全部楼层

回复:DMA的UART传输

我最近也被这个问题困扰,用DMA传输肯定比USART高效,也降低了CPU的负荷,希望大师出现,指点一二。

该用户从未签到

2

主题

224

帖子

0

版主

Rank: 7Rank: 7Rank: 7

积分
322
最后登录
1970-1-1
发表于 2010-10-8 13:18:59 | 显示全部楼层

RE:DMA的UART传输

出现传输错误,一定是由于软件问题,或者干脆就是DMA配置有问题。
从你的描述来看,很有可能是你的DMA channel nbyte设置与fifo深度不匹配造成。
  • TA的每日心情
    开心
    2017-9-7 09:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    24

    主题

    130

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    401
    最后登录
    2020-11-3
    发表于 2018-6-8 15:31:38 | 显示全部楼层
    您好,  UART DMA接收数据,232协议
               是这么判断一帧数据接收完成的呢?
    哎...今天够累的,签到来了1...
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-9-7 09:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    24

    主题

    130

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    401
    最后登录
    2020-11-3
    发表于 2019-3-15 15:37:18 | 显示全部楼层
    萱蘇2015 发表于 2018-6-8 15:31
    您好,  UART DMA接收数据,232协议
               是这么判断一帧数据接收完成的呢? ...

    您好   您这么解决一帧结束判断呢?
    哎...今天够累的,签到来了1...
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-20 20:34 , Processed in 0.094829 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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