您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> BF533 DMA中断问题
本帖共有389个阅读者
发表帖子 发表投票 回复主题
BF533 DMA中断问题
睡衣人(论坛新手)
睡衣人
头衔:社区公民
帮派:无帮无派
帖数:28
金钱:353
积分:37
注册时间:2012/1/17
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
BF533 DMA中断问题
你好andy!

BF533自带的audio样例程序的中断采集语音信号的代码如下

EX_INTERRUPT_HANDLER(Sport0_RX_ISR)
{
*pDMA1_IRQ_STATUS = 0x0001;

iChannel0LeftIn = iRxBuffer1[INTERNAL_ADC_L0];
iChannel0RightIn = iRxBuffer1[INTERNAL_ADC_R0];
iChannel1LeftIn = iRxBuffer1[INTERNAL_ADC_L1];
iChannel1RightIn = iRxBuffer1[INTERNAL_ADC_R1];

Process_Data();
iTxBuffer1[INTERNAL_DAC_L0] = iChannel0LeftOut;
iTxBuffer1[INTERNAL_DAC_R0] = iChannel0RightOut;
iTxBuffer1[INTERNAL_DAC_L1] = iChannel1LeftOut;
iTxBuffer1[INTERNAL_DAC_R1] = iChannel1RightOut;
}
请问
这里每次中断一个通道只采集一个样本点,这样是不是会比较占用CPU时间?
有没有办法累积采集到128个信号的时候触发中断,将信号送入处理器?这样是否能提高cpu处理速度呢?
如果可行,具体要怎么做?



「该帖子被 睡衣人 在 2014-04-22 12:04:28 编辑过」

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2014/4/22 12:03:48
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
这个代码是把收到的数据再送出去,如果数据量太大,交换数据会占用更长的时间,可能会导致听到的声音断断续续的。
如果改为128数据,把接收和传输的DMA配置改为128数据大小就可以了。
你找到接收和传输的DMA配置代码,弄清楚DMA传输次数,DMAx修改,DMA位宽。明白这些就能修改了。

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2014/4/22 23:43:13
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159320 Call, 1 Queries, Processed in 0.015625 second(s),