您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> BF533音频播放的问题
本帖共有678个阅读者
发表帖子 发表投票 回复主题
BF533音频播放的问题
fly(论坛新手)
fly
头衔:社区公民
帮派:无帮无派
帖数:2
金钱:119
积分:3
注册时间:2015/7/25
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
BF533音频播放的问题
在BF533的开发板上,我利用教程bf53x_audio_pcm的代码读取了2M的格式为wav的音频文件存在名为buffer的数组中,我应该怎么讲这个音频播放出来呢,bf53x_audio_pcm里的链表DMA太复杂了,能不能有简单的方式呢,我试着把DMA初始化成
*pDMA4_PERIPHERAL_MAP = 0x4000; //设置SPORT传输接口DMA
*pDMA4_CONFIG = WDSIZE_32 | DI_EN |FLOW_1; //设置DMA工作模式
*pDMA4_START_ADDR = (void *)buffer; //设置DMA 传输数据起始地址
*pDMA4_X_COUNT = 1024*1024*2/4; //设置DMA传输次数
*pDMA4_X_MODIFY = 4; //设置DMA每次地址增量变化
但是使能DMA之后根本播放不出想要的音频,能不能帮我解决一下啊,万分感谢!

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2015/7/25 22:12:06
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
DMA4_X_COUNT  寄存器的长度只有16位, 最大值为65535 ,你设置的
1024*1024*2/4  已经超过这个范围了。

简单的话,可以开一个二维DMA,这样一次能传输的数据多一点,你可以先读取一定量的数据,再进行传输。

代码中液晶屏传输采用的是2维DMA。你可以参考一下。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2015/7/26 16:37:55
fly(论坛新手)
fly
头衔:社区公民
帮派:无帮无派
帖数:2
金钱:119
积分:3
注册时间:2015/7/25
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
andy,你好,我现在想做一个通过按键控制音频播放的工作,意思是当我按up时播放音频1,播放完音频1之后,再按left键播放音频2,这个不使用按键中断的方式是可以实现的,但是我想当我按下按键时通过进入中断来控制音频的播放,我试着写了下程序,当我按下按键时可以进入按键中断,也可以使能DMA传输,但是进不了DMA的传输中断,这是什么原因呢,是中断优先级的问题吗,你可以帮忙解答一下吗,谢谢

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2015/8/10 21:44:24
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
当代码中出现两个中断时,不管等级高低,两个中断会有冲突的,解决方法时,不要同时开两个中断,比如DMA完成传输后,屏蔽中断,开按键中断,监测按键按下。

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2015/9/9 22:44:50
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159313 Call, 1 Queries, Processed in 0.048828 second(s),