[STM32F1] STM32 中的AD转换声音信号,DA还原声音,一直实现不了

[复制链接]
 楼主| 伊轩海 发表于 2015-1-14 21:40 | 显示全部楼层 |阅读模式
最近一直在弄用AD转换声音信号,然后用DA还原播放声音,可是一直都实现不了,希望有人指导一下,谢谢!以下是主要的代码(我是采用DMA方式传输的)
AD主要代码(在AD的实验上加了DMA配置和定时器2中断实现AD开始转换):
#define ADC1_DR_Address    0x4001244C
u16 ADC_Value;
//DMA配置

//定时器2配置



DAC1主要代码(利用DMA传输、定时器6定时触发DAC)
#define DAC_DHR12R1_Address      0x40007408
uint16_t DAC_Value;



主函数主要部分
extern u16 ADC_Value;
extern uint16_t DAC_Value;

int main(void)
{
             NVIC_Configuration();                 uart_init(9600);                 //´

        TIM2_Configuration(1663,0x0);//44.1KHz,0x0表示不分频
        TIM2_NVIC_Configuration();
        DMA_Config();
        Adc_Init(ADC_Channel_2);                                  //初始化ADC1通道2         

    DMA_Config(ADC1_DR_Address,(u32)&ADC_Value,1);
   
   while(1)
   {
       DAC_Value = ADC_Value;
   }
}
liuhong198698 发表于 2015-1-14 22:23 | 显示全部楼层
你是用44.1kHZ的采样声音的话,要想DA还原的话必须使用内插函数SINX/X 才能完整地重建声音
你可以先不使用声音,你采样的正弦波,看你这种方法能不能还原正弦波
 楼主| 伊轩海 发表于 2015-1-14 22:35 | 显示全部楼层
liuhong198698 发表于 2015-1-14 22:23
你是用44.1kHZ的采样声音的话,要想DA还原的话必须使用内插函数SINX/X 才能完整地重建声音
你可以先不使用 ...

什么是内插函数?
liuhong198698 发表于 2015-1-14 22:41 | 显示全部楼层
就是你采用44.1Khz的采样,你在周期22us 之间要插入固定的值才能还原原信号,利用你采样得到的值,通过内插函数得出插入的的值DA值
liuhong198698 发表于 2015-1-14 22:45 | 显示全部楼层
这个内插函数 很有名 叫sinc 函数
 楼主| 伊轩海 发表于 2015-1-14 22:46 | 显示全部楼层
liuhong198698 发表于 2015-1-14 22:45
这个内插函数 很有名 叫sinc 函数

呵呵,没用过,也不会用
戈卫东 发表于 2015-1-14 23:29 | 显示全部楼层
电路没有问题吧?
 楼主| 伊轩海 发表于 2015-1-15 09:18 | 显示全部楼层
戈卫东 发表于 2015-1-14 23:29
电路没有问题吧?

我试过把声音采集的电路和播放的电路直接连起来,对着咪头说话,喇叭有声音,应该没问题
 楼主| 伊轩海 发表于 2015-1-15 11:02 | 显示全部楼层
再补充以下,今天用了示波器测量AD输入和DA输出的图形,请各位请帮忙分析分析,

我用一个偏置了的正弦波输入给AD,同时DA输出。接着用示波器同时测AD端和DA端,出现以下的情况,蓝色代表AD输入,黄色代表DA输出,请帮忙分析一下
1、正弦波输入给AD,同时DA输出



2、正弦波输入给AD,同时DA输出,调节示波器上的周期旋钮




3、没有输入正弦波给AD,直接测量DA输出



2545958269 发表于 2015-1-15 18:50 | 显示全部楼层
怎么觉得这还不如用DSP
戈卫东 发表于 2015-1-15 19:16 | 显示全部楼层
方波哪来的?
 楼主| 伊轩海 发表于 2015-1-15 20:07 | 显示全部楼层
戈卫东 发表于 2015-1-15 19:16
方波哪来的?

原来我在while函数中加了延时,产生的,后来去掉延时,DA可以还原声音了,只不过喇叭伴随“沙沙沙...”的声音,很奇怪,请教怎么会有“沙沙沙....” 的声响
戈卫东 发表于 2015-1-15 20:11 | 显示全部楼层
你的数据不连续,有断的地方?
 楼主| 伊轩海 发表于 2015-1-15 21:10 | 显示全部楼层
戈卫东 发表于 2015-1-15 20:11
你的数据不连续,有断的地方?

没有断的地方,就是喇叭发出的声音伴随着“沙沙沙...”的响
戈卫东 发表于 2015-1-15 22:35 | 显示全部楼层
伊轩海 发表于 2015-1-15 21:10
没有断的地方,就是喇叭发出的声音伴随着“沙沙沙...”的响

DAC完全关闭有没有“沙沙”响?
 楼主| 伊轩海 发表于 2015-1-16 09:08 | 显示全部楼层
戈卫东 发表于 2015-1-15 22:35
DAC完全关闭有没有“沙沙”响?

没有:)
戈卫东 发表于 2015-1-16 09:12 | 显示全部楼层
伊轩海 发表于 2015-1-16 09:08
没有

那还是你的数据供给有问题,某些点的数据被延迟了
烽~燧 发表于 2015-12-30 18:39 | 显示全部楼层
戈卫东 发表于 2015-1-16 09:12
那还是你的数据供给有问题,某些点的数据被延迟了

你好,你以前弄的声音采集还原系统调试好了没,
我调了一个多星期了,很好的声音信号采集输出后带有很多杂音,能不能指点一下,谢谢
我的QQ783251895
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

72

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部

23

主题

72

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部