首页 > 评测 > PSoC 6评测第四篇-录音与放音

PSoC 6评测第四篇-录音与放音

PSoC 6   耳机   PDM   PCM   ADC采样   
  • 作者:zhanzr
  • 来源:21ic
  • [导读]
  • 写上一篇关于EInk的文章的时候,就想着要写这一篇了.因为作者本人除了喜欢阅读之外,还比较喜欢音乐.也喜欢听也喜欢唱K,故此对音频相关的技术也较为感兴趣,至于水平只能说稍知一二.看到这个CY8CKIT开发套件上带有数字麦克风,就动了心思.本文使用开发板子上的资源做一个简单的录音与放音实验,研究一下相关知识.

概述

image1_copy.jpg

图 PSoC 6与耳机

写上一篇关于EInk的文章的时候,就想着要写这一篇了.因为作者本人除了喜欢阅读之外,还比较喜欢音乐.也喜欢听也喜欢唱K,故此对音频相关的技术也较为感兴趣,至于水平只能说稍知一二.看到这个CY8CKIT开发套件上带有数字麦克风,就动了心思.本文使用开发板子上的资源做一个简单的录音与放音实验,研究一下相关知识.

录音理论与实践

录音方面,简单来讲就是将声音信号定时采集成数字信号以备后述处理.最常见的当然是驻极体的麦克风:

image2.png

图 驻极体音频采集参考电路

采集出来的信号叫做PCM,数学原理上就一个一维数组,其单元对应每个时刻的声音震动的幅度.播放时将其恢复为介质振动即可还原当初的声音.

信号大致这种样子:

image3.png

图 PCM信号参考例子

注意:上述信号为CY8CKIT板子通过PDM采样转换为PCM的实际例子

至于采样率,采样深度,压缩算法等等,感兴趣的同学可以找一找本人之前发的系列贴子,因为内容较多在此不一一照搬过来了.

今天要使用的录音器件并非驻极体麦克风,而是一个PDM格式的麦克风SPK0838HT4H-B,原理图:

image4.png

图 数字麦克风原理图

这种麦克风出来的信号并非直接的PCM, 而是所谓的PDM信号,类似于下图所示:

image5.png

图 PDM信号参考例子

简单来讲,PDM信号就是1 bit的ADC采样出来的结果.

之所以使用PDM,不使用PCM输出,理论上有很多依据.简而言之,是因为声音在介质中传播是纵向传输,亦即传播方向与振动方向是相同的,故此用脉冲密度能比脉冲幅度更忠实地反映真实的情形.当然这种麦克风还有其余的优点,如体积比驻极体的麦克风小很多,功耗也更低,稳定性,一致性之类的参数都要强不少.目前的趋势是驻极体形式的麦克风逐步被这种麦克风取代,如智能手机中都是使用这种麦克风.

由于采集进来的第一手数据为PDM形式,故此需要首先将其转换为PCM格式以便进一步的处理与播放.处理的方法一般是通过软件抽样+滤波,Cypress的PSoC 6器件的方式较为特殊,可以使用UDB资源对PDM进行硬件解码转换为PCM信号,省去软件上的处理.此处在后文详述.

放音理论与实践

对于PCM信号,播放起来较为直观,直接将其输出到DAC,再经过可选的滤波/放大,输出到放音设备即可播放.

但是很多微型控制器没有DAC外设,此时可以通过PWM+低通滤波器来模拟DAC进行播放.这也是所谓的D类放大器的原理.

image6.png

图 PWM+滤波器模拟DAC

这两种方法本文都会使用,DAC与PWM分别作为一个通道进行输出.

顶层设计与硬件连接

image7.png

图 顶层设计

其中有三个模块(PDM_PCM,VDAC,UART)有Prototype水印,表示该模块只是做演示之用,还没有到达能应用到产品的成熟度.本文也的确是仅仅作演示之用,故此可以不加理会.

首先看PDM_PCM模块几个参数的计算:

最终想要达到的采样率为8KHz, Sinc抽样率为64, HFClk1计算为16.384MHz.

下面的Audio Timer用作播放更新,故此也设定为8 KHz产生一次ISR:

  • 本文系21ic原创,未经许可禁止转载!

网友评论