查看: 4574|回复: 9

[其他] 关于MCF52259DMA的问题

[复制链接]

该用户从未签到

5

主题

22

帖子

0

新手上路

Rank: 1

积分
42
最后登录
1970-1-1
发表于 2010-5-19 21:05:56 | 显示全部楼层 |阅读模式
请教:
如果使能了UART的中断功能和UART的DMA请求功能,那么当接收到一个字节时会产生UART中断请求还是DMA请求?还是两个请求依次先后产生?
我知道答案 目前已有8人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2010-5-20 09:46:05 | 显示全部楼层

    RE:关于MCF52259DMA的问题

    看你的配置了。如果你配置使用DMA方式,优先使用DMA,如果你使用普通的串口方式就是普通串口使用。
    该会员没有填写今日想说内容.

    该用户从未签到

    5

    主题

    22

    帖子

    0

    新手上路

    Rank: 1

    积分
    42
    最后登录
    1970-1-1
     楼主| 发表于 2010-5-20 13:19:28 | 显示全部楼层

    回复:关于MCF52259DMA的问题

    回复第 2 楼 安 于2010-05-20 01:46:05发表:
    看你的配置了。如果你配置使用DMA方式,优先使用DMA,如果你使用普通的串口方式就是普通串口使用。 

    如果,配置了使用UART,又配置了使用DMA方式(包括置位了EEXT位),那到底在接收到一个字符时是跳进UART中断服务程序里,还是跳进相应通道的DMA中断里?当发送保持寄存器为空时,它又会跳进UART中断里,还是跳进相应通道的DMA中断里呢?
    当然,这种冲突不是故意构造的,而是在程序中不同情况下需要使用UART或UART的DMA请求,当要使用UART时忘了禁止UART的DMA请求,从而导致莫名其妙的现象。所以我想知道,理论上,如果出现同时使能了UART中断又使能了UART的DMA请求的情况,那会怎么办?
    请版主赐教!
  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2010-5-20 17:08:05 | 显示全部楼层

    RE:关于MCF52259DMA的问题

    没有试过,如果你设置同一优先级,那么就看硬件部分的优先级了。你查查手册,上面硬件优先级是否有区别。
    不过,你也可以试试,都开同一优先级,看看先进哪个中断。
    该会员没有填写今日想说内容.

    该用户从未签到

    5

    主题

    22

    帖子

    0

    新手上路

    Rank: 1

    积分
    42
    最后登录
    1970-1-1
     楼主| 发表于 2010-5-20 19:12:10 | 显示全部楼层

    回复:关于MCF52259DMA的问题

    谢谢版主热心回答!

    该用户从未签到

    5

    主题

    22

    帖子

    0

    新手上路

    Rank: 1

    积分
    42
    最后登录
    1970-1-1
     楼主| 发表于 2010-5-21 20:11:18 | 显示全部楼层

    RE:关于MCF52259DMA的问题

    还有,想请问下,使用UART的DMA时,对于UART的传输速率有限制吗?DMA的传输速率又是怎么样的呢?

    该用户从未签到

    33

    主题

    441

    帖子

    0

    新手上路

    Rank: 1

    积分
    7703
    最后登录
    1970-1-1
    发表于 2010-5-22 11:22:41 | 显示全部楼层

    回复:关于MCF52259DMA的问题

     DMA只是把要收发的数据从ram中搬到uart寄存器,这个跟uart本身的速度没有什么关系。通常DMA总是快的,UART的速度总是不会超过DMA,因此,基本上是DMA要等UART
     
    另外,DMA中断和UART中断的优先级是不能设成一样的,coldfire的手册中明确的写道,不同的中断源不能设成同一个interrupt level的同一个interrupt priority,否则结果是不可预料的
     
    DMA中断和UART中断都打开,他们都会触发,但代表的含义不一样,DMA中断是指从UART发送接收寄存器到 SRAM的搬运完成了,而UART中断是指发送或者接收完成了。两码事

    该用户从未签到

    5

    主题

    22

    帖子

    0

    新手上路

    Rank: 1

    积分
    42
    最后登录
    1970-1-1
     楼主| 发表于 2010-5-23 20:37:52 | 显示全部楼层

    回复:关于MCF52259DMA的问题

    回复第 7 楼 冷火团队--bluehacker于2010-05-22 03:22:41发表:
     DMA只是把要收发的数据从ram中搬到uart寄存器,这个跟uart本身的速度没有什么关系。通常DMA总是快的,UART的速度总是不会超过DMA,因此,基本上是DMA要等UART
     
    另外,DMA中断和UART中断的优先级是不能设成一样的,coldfire的手册中明确的写道,不同的中断源不能设成同一个interrupt level的同一个interrupt priority,否则结果是不可预料的
     
    DMA中断和UART中断都打开,他们都会触发,但代表的含义不一样,DMA中断是指从UART发送接收寄存器到 SRAM的搬运完成了,而UART中断是指发送或者接收完成了。两码事
     

    那如果DMA中断和UART中断都打开,是不是可以肯定地说“UART中断先发生,因为DMA要传输完一定的数据才触发中断,而UART是一个字符就触发中断”?另外,这种情况下,如果UART中断发生了,取走了接收寄存器的数据,那会不会造成DMA没有数据可传输(从接收寄存器到内部SRAM)?还是DMA照样能够从接收寄存器复制数据到SRAM中?

    该用户从未签到

    2

    主题

    224

    帖子

    0

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    322
    最后登录
    1970-1-1
    发表于 2010-5-25 21:30:16 | 显示全部楼层

    RE:关于MCF52259DMA的问题

    动手试试就明白了
    都散了吧

    该用户从未签到

    6

    主题

    45

    帖子

    0

    新手上路

    Rank: 1

    积分
    105
    最后登录
    1970-1-1
    发表于 2010-6-6 10:59:23 | 显示全部楼层

    回复:关于MCF52259DMA的问题

     楼主这是个错误的用法。
    DMA本来就是为了让CPU少参与数据搬运的工作,而能去专心处理自己的事情,你现在用了DMA又用串口的接收、发送中断,非正常使用。
     
    DMA可以设成接收到数据触发一次DMA,也可以设成发送一个数据触发一次DMA,所以触发DMA与收、发中断是同时发生的。中断程序是CPU运行的,但DMA是Coldfire的一个设备,他搬运数据时可以说是独立于CPU的,所以我觉得串口中断与DMA同时进行也是可能的。
     
    至于楼主提的那古怪问题,自己写代码验证下就好了。
    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-20 20:35 , Processed in 0.107689 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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