SYSBIOS下EDMA3传输问题 - TMS320C6748 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2550|回复: 3
打印 上一主题 下一主题

SYSBIOS下EDMA3传输问题

[复制链接]

9

主题

19

帖子

128

积分

注册会员

Rank: 2

积分
128
跳转到指定楼层
楼主
发表于 2016-12-20 11:16:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     TMS320C6748光盘目录demo\SYSBIOS\Application\EDMA3这个工程中,调试出现问题。
1,原例程调试正常,改成MAX_ACOUNT=100,MAX_BCOUNT=100也正常。
把MAX_ACOUNT改成32,MAX_BCOUNT改成512,函数EDMA3Test()运行完之后,查看数组_dstBuff发现有连续几十个元素值是0

// 最大 ACOUNT
#define MAX_ACOUNT        (10u)
// 最大 BCOUNT
#define MAX_BCOUNT        (10u)
// 最大 CCOUNT
#define MAX_CCOUNT        (1u)


2, 原例程调试正常,改成MAX_ACOUNT=100,MAX_BCOUNT=100也正常。它的传输次数umenabled = bcnt * ccnt=100;
原例程的
unsigned int syncType   = EDMA3_SYNC_A;
改成:unsigned int syncType   = EDMA3_SYNC_AB; //希望它只传输一次。
运行之后,程序死在函数EDMA3Test()里:
        // 等待中断服务函数执行完成
        while(irqRaised == 0u){}
然后在中断服务函数Void EDMA3CCComplIsr(UArg arg)里插入断点,发现程序不进入这个中断。

3, 原例程调试正常,改成MAX_ACOUNT=100,MAX_BCOUNT=100也正常。它的传输次数umenabled = bcnt * ccnt=100;
原例程的

        // 使能 Intermediate & Final 传输完成中断
        paramSet.opt |= (1 << EDMA3CC_OPT_ITCINTEN_SHIFT);
        paramSet.opt |= (1 << EDMA3CC_OPT_TCINTEN_SHIFT);

改成:
     paramSet.opt &= ~(1 << EDMA3CC_OPT_ITCINTEN_SHIFT);  //希望全部传输完成后只中断一次
        paramSet.opt |= (1 << EDMA3CC_OPT_TCINTEN_SHIFT);

运行之后,程序死在函数EDMA3Test()里:
        // 等待中断服务函数执行完成
        while(irqRaised == 0u){}
然后在中断服务函数Void EDMA3CCComplIsr(UArg arg)里插入断点,发现程序不进入这个中断。




请试一下,我的这三种情况。看看是怎么回事

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
沙发
发表于 2016-12-21 08:25:55 | 只看该作者
1. 没发现存在这个问题
2. 没发现存在这个问题
3. A类传输,必须使能BCOUNT次
回复 支持 反对

使用道具 举报

9

主题

19

帖子

128

积分

注册会员

Rank: 2

积分
128
板凳
 楼主| 发表于 2016-12-21 09:22:37 | 只看该作者
本帖最后由 bjx1234 于 2016-12-21 09:24 编辑

第一个问题,我把L2改成 L2 is all sram后,正常了。这是什么原因?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

9

主题

19

帖子

128

积分

注册会员

Rank: 2

积分
128
地板
 楼主| 发表于 2016-12-21 09:26:26 | 只看该作者
本帖最后由 bjx1234 于 2016-12-21 09:32 编辑
Lewis 发表于 2016-12-21 08:25
1. 没发现存在这个问题
2. 没发现存在这个问题
3. A类传输,必须使能BCOUNT次 ...

1,2两个情况,确定是按我说的试过了?
3.A类传输,必须使能BCOUNT次,没有疑问,我也理解。不是传输总次数问题,是想只在全部传输完后一次中断
发生多少次同步事件,与发生多少中断是能配置的。请看一下这个改法的意义。EDMA3视频教程里讲了。
最好是能在开发板上试一下。

     // 使能 Intermediate & Final 传输完成中断
        paramSet.opt |= (1 << EDMA3CC_OPT_ITCINTEN_SHIFT);
        paramSet.opt |= (1 << EDMA3CC_OPT_TCINTEN_SHIFT);

改成:
     paramSet.opt &= ~(1 << EDMA3CC_OPT_ITCINTEN_SHIFT);  //希望全部传输完成后只中断一次
        paramSet.opt |= (1 << EDMA3CC_OPT_TCINTEN_SHIFT);



回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-5-15 23:28 , Processed in 0.038790 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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