 |
思澈科技软件开发工具包
2.20
|
|
PDM (Pulse Density Modulation)模块是用于将外部pdm麦克风输出的pdm信号进行滤波转化为PCM信号并提供给CPU进行后续的处理.
支持的配置
- 单声道(左/右), 立体声
- 采样率 8/12/16//24/32/48KHz
- 24bit 采样深度
- 左右声道 增益调节
- 循环buffer/ 单次buffer
输出数据格式
- 8bit + 单声道
- 16bit + 单声道
- 32bit + 单声道 : 高8位为0, 实际有效数据为低24bit
- 16bit + 双声道 : 左右声道各占16bit组成一个32bit数据(支持左右声道对换)
- 32bit + 双声道 : 仅支持左右声道分开2个buffer存储
示例
PDM1单声道16KHz , 16bit位深,用DMA读取1024字节数据
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.