Professional Documents
Culture Documents
在STM32微控制器上的PDM软件音频解码
在STM32微控制器上的PDM软件音频解码
STM32 PDM
1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 PDM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.1 PDM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5 PDM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
5.1 PDM_Filter_Init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.2 PDM_Filter_xx_xx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2/10 ID 022391 1
AN3998
1. STM32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
ID 022391 1 3/10
3
PDM AN3998
2 PDM
(PDM)
PDM PCM
PDM
4/10 ID 022391 1
AN3998
1. STM32
STM32
)ODVK
86%
,6
0(06
069
ID 022391 1 5/10
9
AN3998
1 PDM
PCM IIR
16 (PCM)
/
I2S DAC...
2.
3'0
3'0
069
4.1 PDM
PDM
PDM
80 30 kHz
2.4 MHz
16 (0 dB) [-32768, 32767]
4.2
IIR
IIR
/
(MicGain) G = MicGain/64
6/10 ID 022391 1
AN3998 PDM
5 PDM
uint16_t Fs;
float LP_HZ;
float HP_HZ;
uint16_t Out_MicChannels;
char InternalFilter[34];
} PDMFilter_InitStruct;
Fs Hz
LP_HZ 0
HP_HZ 0
In_MicChannels
PDM u8 8
Out_MicChannels
16
InternalFilter PDM 34
PDM pdm_filter.h /
libPDMFilter_IAR.a IAR
libPDMFilter_Keil.lib ARM
libPDMFilter_GCC.a GNU
STM32F4-DISCOVERY v1.10 Utilities\STM32F4-
Discovery
ID 022391 1 7/10
9
PDM AN3998
5.1 PDM_Filter_Init
Void PDM_Filter_Init (PDMFilter_InitStruct * Filter)
PDMFilter_InitStruct PDM
16 kHz PDM
PDMFilter_InitStruct Filter;
Filter.LP_HZ = 8000;
Filter.HP_HZ = 10;
Filter.Fs = 16000;
Filter.Out_MicChannels = 1;
Filter.In_MicChannels = 1;
5.2 PDM_Filter_xx_xx
PDM PCM
1000 1000
44100 Hz 22050 Hz 1000 44
22
PDM_Filter_XX_XX(uint8_t* data, uint16_t* dataOut, uint16_t MicGain,
PDMFilter_InitStruct * Filter)
data PDM
dataOut PDM_Filter
Volume 0 64
Filter PDM_Filter_Init
64 80 LSB
MSB
8/10 ID 022391 1
AN3998
1.
2011 10 27 1
ID 022391 1 9/10
9
AN3998
ST ST
ST ST
ST ST ST
ST
ST ST ST /
A
BC / D
ESCCQML
JAN
ST/STST
ST
ST ST ST
ST
2013 STMicroelectronics
- - - - - - - - - - - - - - - -
- - - - -
www.st.com
10/10 ID 022391 1