HPM SDK
HPMicro Software Development Kit
PDM driver APIs

PDM driver APIs. More...

Data Structures

struct  pdm_config
 PDM config. More...
 

Macros

#define PDM_EVENT_FILT_CRX_ERROR   (PDM_ST_FILT_CRX_ERR_MASK)
 PDM event. More...
 
#define PDM_EVENT_OFIFO_OVERFLOW_ERROR   (PDM_ST_OFIFO_OVFL_ERR_MASK)
 
#define PDM_EVENT_CIC_OVERLOAD_ERROR   (PDM_ST_CIC_OVLD_ERR_MASK)
 
#define PDM_EVENT_CIC_SAT_ERROR   (PDM_ST_CIC_SAT_ERR_MASK)
 
#define PDM_CIC_SIGMA_DELTA_ORDER_5   (2U)
 PDM CIC sidma-delta filter order. More...
 
#define PDM_CIC_SIGMA_DELTA_ORDER_6   (1U)
 
#define PDM_CIC_SIGMA_DELTA_ORDER_7   (0U)
 

Typedefs

typedef struct pdm_config pdm_config_t
 PDM config. More...
 

Functions

static void pdm_config_hpf (PDM_Type *ptr, uint32_t hpf_coef_ma, uint32_t hpf_coef_b)
 config high pass filter More...
 
static void pdm_enable_hpf (PDM_Type *ptr)
 enable high pass filter More...
 
static void pdm_disable_hpf (PDM_Type *ptr)
 disable high pass filter More...
 
static bool pdm_is_running (PDM_Type *ptr)
 check whether PDM is running More...
 
static void pdm_stop (PDM_Type *ptr)
 stop pdm More...
 
static void pdm_start (PDM_Type *ptr)
 start pdm More...
 
static void pdm_disable_channel (PDM_Type *ptr, uint16_t channel_disable_mask)
 disable channel More...
 
static void pdm_enable_channel (PDM_Type *ptr, uint16_t capture_high_level_mask, uint16_t channel_enable_mask)
 enable channel More...
 
static void pdm_disable_pdm_clock_out (PDM_Type *ptr)
 disable pdm clock out More...
 
static void pdm_enable_pdm_clock_out (PDM_Type *ptr)
 enable pdm clock out More...
 
static void pdm_config_cic (PDM_Type *ptr, uint8_t sigma_delta_order, uint8_t div, uint8_t post_scale)
 pdm config cic More...
 
static void pdm_software_reset (PDM_Type *ptr)
 pdm software reset More...
 
static void pdm_enable_irq (PDM_Type *ptr, uint8_t mask)
 pdm enable irq More...
 
static void pdm_disable_irq (PDM_Type *ptr, uint8_t mask)
 pdm disable irq More...
 
hpm_stat_t pdm_init (PDM_Type *ptr, pdm_config_t *config)
 pdm initialization More...
 
void pdm_get_default_config (PDM_Type *ptr, pdm_config_t *config)
 pdm get default config More...
 

Detailed Description

PDM driver APIs.

Macro Definition Documentation

◆ PDM_CIC_SIGMA_DELTA_ORDER_5

#define PDM_CIC_SIGMA_DELTA_ORDER_5   (2U)

#include <drivers/inc/hpm_pdm_drv.h>

PDM CIC sidma-delta filter order.

◆ PDM_CIC_SIGMA_DELTA_ORDER_6

#define PDM_CIC_SIGMA_DELTA_ORDER_6   (1U)

◆ PDM_CIC_SIGMA_DELTA_ORDER_7

#define PDM_CIC_SIGMA_DELTA_ORDER_7   (0U)

◆ PDM_EVENT_CIC_OVERLOAD_ERROR

#define PDM_EVENT_CIC_OVERLOAD_ERROR   (PDM_ST_CIC_OVLD_ERR_MASK)

◆ PDM_EVENT_CIC_SAT_ERROR

#define PDM_EVENT_CIC_SAT_ERROR   (PDM_ST_CIC_SAT_ERR_MASK)

◆ PDM_EVENT_FILT_CRX_ERROR

#define PDM_EVENT_FILT_CRX_ERROR   (PDM_ST_FILT_CRX_ERR_MASK)

#include <drivers/inc/hpm_pdm_drv.h>

PDM event.

◆ PDM_EVENT_OFIFO_OVERFLOW_ERROR

#define PDM_EVENT_OFIFO_OVERFLOW_ERROR   (PDM_ST_OFIFO_OVFL_ERR_MASK)

Typedef Documentation

◆ pdm_config_t

typedef struct pdm_config pdm_config_t

#include <drivers/inc/hpm_pdm_drv.h>

PDM config.

Function Documentation

◆ pdm_config_cic()

static void pdm_config_cic ( PDM_Type ptr,
uint8_t  sigma_delta_order,
uint8_t  div,
uint8_t  post_scale 
)
inlinestatic

#include <drivers/inc/hpm_pdm_drv.h>

pdm config cic

Parameters
[in]ptrPDM base address
[in]sigma_delta_ordersidma-delta filter order
[in]divRate of down sampling
[in]post_scaleoutput value post scale

◆ pdm_config_hpf()

static void pdm_config_hpf ( PDM_Type ptr,
uint32_t  hpf_coef_ma,
uint32_t  hpf_coef_b 
)
inlinestatic

#include <drivers/inc/hpm_pdm_drv.h>

config high pass filter

Parameters
[in]ptrPDM base address
[in]hpf_coef_mahigh pass filter a coefficient's complement
[in]hpf_coef_bhigh pass filter b coefficient

◆ pdm_disable_channel()

static void pdm_disable_channel ( PDM_Type ptr,
uint16_t  channel_disable_mask 
)
inlinestatic

#include <drivers/inc/hpm_pdm_drv.h>

disable channel

Parameters
[in]ptrPDM base address
[in]channel_disable_maskchannel mask

◆ pdm_disable_hpf()

static void pdm_disable_hpf ( PDM_Type ptr)
inlinestatic

#include <drivers/inc/hpm_pdm_drv.h>

disable high pass filter

Parameters
[in]ptrPDM base address

◆ pdm_disable_irq()

static void pdm_disable_irq ( PDM_Type ptr,
uint8_t  mask 
)
inlinestatic

#include <drivers/inc/hpm_pdm_drv.h>

pdm disable irq

Parameters
[in]ptrPDM base address
[in]maskpdm irq mask in ST register

◆ pdm_disable_pdm_clock_out()

static void pdm_disable_pdm_clock_out ( PDM_Type ptr)
inlinestatic

#include <drivers/inc/hpm_pdm_drv.h>

disable pdm clock out

Parameters
[in]ptrPDM base address

◆ pdm_enable_channel()

static void pdm_enable_channel ( PDM_Type ptr,
uint16_t  capture_high_level_mask,
uint16_t  channel_enable_mask 
)
inlinestatic

#include <drivers/inc/hpm_pdm_drv.h>

enable channel

Parameters
[in]ptrPDM base address
[in]capture_high_level_maskcapture when PDM_CLK is high
[in]channel_enable_maskchannel mask

◆ pdm_enable_hpf()

static void pdm_enable_hpf ( PDM_Type ptr)
inlinestatic

#include <drivers/inc/hpm_pdm_drv.h>

enable high pass filter

Parameters
[in]ptrPDM base address

◆ pdm_enable_irq()

static void pdm_enable_irq ( PDM_Type ptr,
uint8_t  mask 
)
inlinestatic

#include <drivers/inc/hpm_pdm_drv.h>

pdm enable irq

Parameters
[in]ptrPDM base address
[in]maskpdm irq mask in ST register

◆ pdm_enable_pdm_clock_out()

static void pdm_enable_pdm_clock_out ( PDM_Type ptr)
inlinestatic

#include <drivers/inc/hpm_pdm_drv.h>

enable pdm clock out

Parameters
[in]ptrPDM base address

◆ pdm_get_default_config()

void pdm_get_default_config ( PDM_Type ptr,
pdm_config_t config 
)

#include <drivers/inc/hpm_pdm_drv.h>

pdm get default config

Parameters
[in]ptrPDM base address
[out]configpdm_config_t

◆ pdm_init()

hpm_stat_t pdm_init ( PDM_Type ptr,
pdm_config_t config 
)

#include <drivers/inc/hpm_pdm_drv.h>

pdm initialization

Parameters
[in]ptrPDM base address
[in]configpdm_config_t
Return values
hpm_stat_tstatus_invalid_argument or status_success

◆ pdm_is_running()

static bool pdm_is_running ( PDM_Type ptr)
inlinestatic

#include <drivers/inc/hpm_pdm_drv.h>

check whether PDM is running

Parameters
[in]ptrPDM base address
Return values
truein PDM is running

◆ pdm_software_reset()

static void pdm_software_reset ( PDM_Type ptr)
inlinestatic

#include <drivers/inc/hpm_pdm_drv.h>

pdm software reset

Parameters
[in]ptrPDM base address

◆ pdm_start()

static void pdm_start ( PDM_Type ptr)
inlinestatic

#include <drivers/inc/hpm_pdm_drv.h>

start pdm

Parameters
[in]ptrPDM base address

◆ pdm_stop()

static void pdm_stop ( PDM_Type ptr)
inlinestatic

#include <drivers/inc/hpm_pdm_drv.h>

stop pdm

Parameters
[in]ptrPDM base address