首页 > 编程知识 正文

西门子300dp通讯详解,pdm转tdm芯片

时间:2023-05-06 21:07:19 阅读:165820 作者:2715

数字麦克风采用MEMS技术,将声波信号转换为数字采样信号,实现单片机采样量化编码。 一般来说,数字传声器的输出有PDM传声器和PCM传声器,由于PDM传声器的结构、工艺简单且大量使用,在使用中应注意两者的区别。 特别是STM32 MCU的文档位于I2S接口一章中,这种差异很模糊。 例如,采样率配置、WS管脚的使用、单声道正文是对这些问题的研究笔记。

一.数字麦克风通信方式

数字麦克风的管教很简单。 如下图所示。

通过电源和接地、时钟脚CLK、左右通道选择L/R,用信号引导SD或DOUT。 区别在于WS管教。 这个管教会对数据收集和分辨率配置产生很大的影响。 STM32芯片手册中这样描述了相应的这三种管教方式。 信号的时序图如下。

以上说明了与I2S麦克风相关的STM32芯片的数据读取时机,但麦克风制造商如何处理输出信号有自己的方式。 这里是I2S接口APP的第一个主要点。

示例1:INMP441

INMP441是具有WS管脚的数字麦克风,其时序图如下,在立体模式中WS=0时输出左通道,WS=1时输出右通道。

单声道模式下,LR=0时,在1个WS周期内仅输出低电平的输出信号,在另一半周期内输出高电平,LR=1时输出时间相反。

示例2:MP45DT02

MP45DT02是没有WS管脚的数字麦克风,其时序图如下,该装置根据LR电平,分别在CLK的低电平和高电平的时间输出左声道和右声道的信号,实现信号的时分复用。

二.采样时钟配置

使用这些麦克风的单声道APP应用时,必须考虑在WS的其他半高周期内数据收集的影响。 以下是这个麦克风的STM32F407芯片下方的配置。

复制代码

/* I2S2 init function /

voidMX_I2s2_init(void ) )。

{

hi2s2.Instance=SPI2;

hi2s2. init.mode=i2s _ mode _ master _ rx;

hi2s2. init.standard=i2s _ standard _ msb;

hi2s2. init.data format=i2s _ data format _ 16b;

hi2s2. init.mclkoutput=i2s _ mclkoutput _ disable;

hi2s2. init.audio freq=i2s _ audio freq _ 16k;

hi2s2.Init.CPOL=I2S_CPOL_LOW;

hi2s2. init.clock source=i2s _ clock _ PLL;

hi2s2. init.fullduplexmode=i2s _ fullduplexmode _ disable;

if(Hal_I2s_init ) hi2s2)!=HAL_OK )

{

Error_Handler (;

}

}

复制代码

在此模式下,麦克风的输出信号图如下所示。 由于LR=0,在WS低电平的半周期中输出信号,在高电平的半周期中没有数据。 可以看出CLK时钟是512khz。 我们配置了16位数据模式,16khz采样。 为什么CLK输出为512khz呢? 原因是左右通道分别占用半个周期。 当WS信号为16khz时,时钟频率为16bit16khz*2=512khz。 实际上,对于单麦克风系统,有效采样时间是一半,其在一个采样周期中对应于一半休息时间。 有必要通过实验来验证其语音特性像这样被切掉一半会怎么样。

上述问题由WS引脚引起,选择没有WS引脚的其他信号,例如MP34DT04,将变为其他时间。 芯片手册的时序图如下所示。 如果LR引脚接地,则在CLK的低电平的半周期上输出信号;如果LR连接到VCC上,则在CLK的高电平的半周期上输出信号,通过一条数据线实现两个信道的捕获。 这个麦克风对于单声道APP应用程序,在CLK的一半时间内输出信号,成为另一半高度的组。 在立体APP中,通过使用一条数据线传输左右信道并且通过时分复用传输信号。

麦克风芯片要求的时钟频率范围一般为1—3Mhz,如果将上面代码的采样率设置为32Khz,采集信号如下图所示。 CLK时钟频率为1Mhz,为什么会发生这种情况呢? 麦克风输出PDM信号,并且PDM调制器将经缓冲的模拟信号转换为串行脉冲密度调制信号。 时钟输入(CLK )用于控制PDM调制器。 典型的数字麦克风时钟频率在1 MHz到3.25 MHz之间。 该频率定义了产生离散时间表示(PDM比特流)的放大器模拟输出信号的采样频率。 用类似的分析方法,ST芯片是以每两个信道WS区分左右信道配置的芯片,WS的低电平是左信道,高电平是右信道。 因此,为了配置16it采样信号,软件在一个周期中需要2 * 16比特=32个时钟,但是配置的采样率为32khz,从而CLK输出为32比特* 32k Hz=1024 k Hz 这里是数字麦克风计算PDM采样率的另一个容易出错的地方。 以上计算方法是,对于有SW针脚的麦克风传感器,对于没有SW针脚的麦克风芯片,实际的PDM采样率是STM32 MCU配置分辨率的2倍。 参考文档:

1、如何将PDM数字麦克风连接到STM32单片机

AN5027使用STM32 32位Arm Cortex MCU连接到PDM数字麦克风

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。