您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> 关于BF533及AD1836的语音采集和转存问题2
本帖共有669个阅读者
发表帖子 发表投票 回复主题
关于BF533及AD1836的语音采集和转存问题2
ReedXu(论坛新手)
ReedXu
头衔:社区公民
帮派:无帮无派
帖数:6
金钱:160
积分:10
注册时间:2013/3/14
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
关于BF533及AD1836的语音采集和转存问题2

之前将DMA设置成2维后确实能播放语音了,但是我又遇到了几个问题,1.首先语音还是很短,我怀疑是不是我算的数据量出错了,我看程序应该是把AD1836设置为48Khz采样及24bit量化,数据数据没有压扩(就是零填充),那理论上是不是48K*5=240K,也就是一个int[240K]的buff能储存5s的语音数据,对么?但是我将这个240K的buff(均有数据) 输出成dat文件后,进行播放,貌似是只有1s左右的声音,AD1836的初始化函数如下:

volatile short sCodec1836TxRegs[CODEC_1836_REGS_LENGTH] =
{        
     DAC_CONTROL_1 | 0x000,
     DAC_CONTROL_2 | 0x000,
     DAC_VOLUME_0 | 0x3ff,
     DAC_VOLUME_1 | 0x3ff,
     DAC_VOLUME_2 | 0x3ff,
     DAC_VOLUME_3 | 0x3ff,
     DAC_VOLUME_4 | 0x000,
     DAC_VOLUME_5 | 0x000,
     ADC_CONTROL_1 | 0x000,
     ADC_CONTROL_2 | 0x000,
     ADC_CONTROL_3 | 0x000
    
};

第二个问题是,我将iRxBuffer1[240000],iTxBuffer1[240000],将DMA1和DMA2的enable函数分开写之后,我将pDMA1_CONFIG配置成stop模式并且传完产生中断,终端服务子程序里用for循环将iRxBuffer1[24000]的数据全部赋给iTxBuffer1[240000]后再enableDMA2,但是程序RUN完后,我没有听到声音,查看memory里发现只有iRxBuffer1[24000]里有数据,iTxBuffer1[240000]的数据全为0,不知道是为什么


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/3/14 23:10:36
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

48K 是音频的采样率,还分为左声道和右声道,数据量还需要乘2.你检查一下你的DMA,配置采集的数据量是否为你期望的。

单步在这里运行一下,看接收数据通过for循环填入传输Buffer时,数据是否被填入,如果没有,看一下数据Buffer是否开在SDRAM区域,SDRAM的配置和容量设置是否正确,SDRAM内存是否可用。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2013/3/15 10:34:51
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159143 Call, 1 Queries, Processed in 0.015625 second(s),