 |
思澈科技軟件開發(fā)工具包
2.20
|
|
PDM (Pulse Density Modulation)模塊是用于將外部pdm麥克風(fēng)輸出的pdm信號進(jìn)行濾波轉(zhuǎn)化為PCM信號并提供給CPU進(jìn)行后續(xù)的處理.
支持的配置
- 單聲道(左/右), 立體聲
- 采樣率 8/12/16//24/32/48KHz
- 24bit 采樣深度
- 左右聲道 增益調(diào)節(jié)
- 循環(huán)buffer/ 單次buffer
輸出數(shù)據(jù)格式
- 8bit + 單聲道
- 16bit + 單聲道
- 32bit + 單聲道 : 高8位為0, 實(shí)際有效數(shù)據(jù)為低24bit
- 16bit + 雙聲道 : 左右聲道各占16bit組成一個(gè)32bit數(shù)據(jù)(支持左右聲道對換)
- 32bit + 雙聲道 : 僅支持左右聲道分開2個(gè)buffer存儲
示例
PDM1單聲道16KHz , 16bit位深,用DMA讀取1024字節(jié)數(shù)據(jù)
static uint32_t DMA_cplt_flag = 0;
void DMAC1_CH3_IRQHandler(void)
{
}
{
if(hpdm == &PDM_Handle)
DMA_cplt_flag = 1;
}
void pdm_recieve(void)
{
PDM_Handle.
hdmarx = &DMA_Handle;
PDM_Handle.Instance = hwp_pdm1;
while(DMA_cplt_flag == 0);
}
...
uint32_t ChannelDepth
Definition: bf0_hal_pdm.h:161
HAL_StatusTypeDef HAL_PDM_DMAStop(PDM_HandleTypeDef *hpdm)
Stop the DMA Transfer.
uint16_t RxXferSize
Definition: bf0_hal_pdm.h:179
uint32_t Request
Definition: bf0_hal_dma.h:85
Definition: bf0_hal_pdm.h:172
DMA_HandleTypeDef * hdmarx
Definition: bf0_hal_pdm.h:181
uint8_t * pRxBuffPtr
Definition: bf0_hal_pdm.h:177
@ PDM_CHANNEL_DEPTH_16BIT
Definition: bf0_hal_pdm.h:136
DMA_InitTypeDef Init
Definition: bf0_hal_dma.h:159
HAL_StatusTypeDef HAL_PDM_Init(PDM_HandleTypeDef *hpdm)
Initialize the PDM according to the specified parameters in the PDM_InitTypeDef and initialize the as...
PDM_InitTypeDef Init
Definition: bf0_hal_pdm.h:175
@ PDM_CHANNEL_LEFT_ONLY
Definition: bf0_hal_pdm.h:115
void HAL_PDM_RxCpltCallback(PDM_HandleTypeDef *hpdm)
Rx Transfer completed callback.
HAL_StatusTypeDef HAL_PDM_Receive_DMA(PDM_HandleTypeDef *hpdm, uint8_t *pData, uint32_t Size)
Read PCM data from PDM module by DMA.
DMA handle Structure definition.
Definition: bf0_hal_dma.h:156
@ PDM_SAMPLE_16KHZ
Definition: bf0_hal_pdm.h:126
DMA_Channel_TypeDef * Instance
Definition: bf0_hal_dma.h:157
uint32_t Channels
Definition: bf0_hal_pdm.h:155
void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma)
Handle DMA interrupt request.
@ PDM_MODE_LOOP
Definition: bf0_hal_pdm.h:109
void HAL_NVIC_EnableIRQ(IRQn_Type IRQn)
Enable a device specific interrupt in the NVIC interrupt controller.
uint32_t SampleRate
Definition: bf0_hal_pdm.h:158
void HAL_NVIC_DisableIRQ(IRQn_Type IRQn)
Disable a device specific interrupt in the NVIC interrupt controller.
uint32_t Mode
Definition: bf0_hal_pdm.h:152
HAL_StatusTypeDef HAL_PDM_DeInit(PDM_HandleTypeDef *hpdm)
DeInitialize the PDM peripheral.