用AD转换声音信号,DA还原声音,一直实现不了,论坛里有人做过吗?

2019-07-20 23:10发布

最近一直在弄用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;

DMA_Config(ADC1_DR_Address,(u32)&ADC_Value,1);
再初始化其他函数后
while(1)
{
DAC_Value = ADC_Value;
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
49条回答
xuande
2019-07-23 23:56
回复【23楼】伊轩海:
---------------------------------

1、前面问过你采样定理的事,你可以查查,即:采样速率必须大于信号最高频率的两倍,才能无失真重现原信号。
   对于音频,40K采样率,已经是最低要求了。高保真的设备,可以达到上百K。
2、你的程序。
  我做过类似定时器触发AD的设计,根本不用开溢出中断,溢出信号直接在CPU内部触发AD,开始转换。
  就是说,完全是硬件实现触发,无需软件干预。所以,开中断无用,反而误事。
  有了软件参与,这软件实现的“时钟”可能就不准确了。
  DA,也是同样,完全用内部硬件实现。

  想想,看怎么实现。做到这一点,水平是个大提高。


一周热门 更多>