Zephyr Project API 4.0.0
A Scalable Open Source RTOS
|
Abstraction for digital microphones. More...
Data Structures | |
struct | pdm_io_cfg |
PDM Input/Output signal configuration. More... | |
struct | pcm_stream_cfg |
Configuration of the PCM streams to be output by the PDM hardware. More... | |
struct | pdm_chan_cfg |
Mapping/ordering of the PDM channels to logical PCM output channel. More... | |
struct | dmic_cfg |
Input configuration structure for the DMIC configuration API. More... | |
Enumerations | |
enum | dmic_state { DMIC_STATE_UNINIT , DMIC_STATE_INITIALIZED , DMIC_STATE_CONFIGURED , DMIC_STATE_ACTIVE , DMIC_STATE_PAUSED , DMIC_STATE_ERROR } |
DMIC driver states. More... | |
enum | dmic_trigger { DMIC_TRIGGER_STOP , DMIC_TRIGGER_START , DMIC_TRIGGER_PAUSE , DMIC_TRIGGER_RELEASE , DMIC_TRIGGER_RESET } |
DMIC driver trigger commands. More... | |
enum | pdm_lr { PDM_CHAN_LEFT , PDM_CHAN_RIGHT } |
PDM Channels LEFT / RIGHT. More... | |
Functions | |
static uint32_t | dmic_build_channel_map (uint8_t channel, uint8_t pdm, enum pdm_lr lr) |
Build the channel map to populate struct pdm_chan_cfg. | |
static void | dmic_parse_channel_map (uint32_t channel_map_lo, uint32_t channel_map_hi, uint8_t channel, uint8_t *pdm, enum pdm_lr *lr) |
Helper function to parse the channel map in pdm_chan_cfg. | |
static uint32_t | dmic_build_clk_skew_map (uint8_t pdm, uint8_t skew) |
Build a bit map of clock skew values for each PDM channel. | |
static int | dmic_configure (const struct device *dev, struct dmic_cfg *cfg) |
Configure the DMIC driver and controller(s) | |
static int | dmic_trigger (const struct device *dev, enum dmic_trigger cmd) |
Send a command to the DMIC driver. | |
static int | dmic_read (const struct device *dev, uint8_t stream, void **buffer, size_t *size, int32_t timeout) |
Read received decimated PCM data stream. | |
Abstraction for digital microphones.
enum dmic_state |
#include <include/zephyr/audio/dmic.h>
DMIC driver states.
Enumerator | |
---|---|
DMIC_STATE_UNINIT | Uninitialized. |
DMIC_STATE_INITIALIZED | Initialized. |
DMIC_STATE_CONFIGURED | Configured. |
DMIC_STATE_ACTIVE | Active. |
DMIC_STATE_PAUSED | Paused. |
DMIC_STATE_ERROR | Error. |
enum dmic_trigger |
#include <include/zephyr/audio/dmic.h>
DMIC driver trigger commands.
Enumerator | |
---|---|
DMIC_TRIGGER_STOP | Stop stream. |
DMIC_TRIGGER_START | Start stream. |
DMIC_TRIGGER_PAUSE | Pause stream. |
DMIC_TRIGGER_RELEASE | Release paused stream. |
DMIC_TRIGGER_RESET | Reset stream. |
enum pdm_lr |
#include <include/zephyr/audio/dmic.h>
PDM Channels LEFT / RIGHT.
Enumerator | |
---|---|
PDM_CHAN_LEFT | Left channel. |
PDM_CHAN_RIGHT | Right channel. |
|
inlinestatic |
#include <include/zephyr/audio/dmic.h>
Build the channel map to populate struct pdm_chan_cfg.
Returns the map of PDM controller and LEFT/RIGHT channel shifted to the bit position corresponding to the input logical channel value
channel | The logical channel number |
pdm | The PDM hardware controller number |
lr | LEFT/RIGHT channel within the chosen PDM hardware controller |
#include <include/zephyr/audio/dmic.h>
Build a bit map of clock skew values for each PDM channel.
Returns the bit-map of clock skew value shifted to the bit position corresponding to the input PDM controller value
pdm | The PDM hardware controller number |
skew | The skew to apply for the clock output from the PDM controller |
#include <include/zephyr/audio/dmic.h>
Configure the DMIC driver and controller(s)
Configures the DMIC driver device according to the number of channels, channel mapping, PDM I/O configuration, PCM stream configuration, etc.
dev | Pointer to the device structure for DMIC driver instance |
cfg | Pointer to the structure containing the DMIC configuration |
|
inlinestatic |
#include <include/zephyr/audio/dmic.h>
Helper function to parse the channel map in pdm_chan_cfg.
Returns the PDM controller and LEFT/RIGHT channel corresponding to the channel map and the logical channel provided as input
channel_map_lo | Lower order/significant bits of the channel map |
channel_map_hi | Higher order/significant bits of the channel map |
channel | The logical channel number |
pdm | Pointer to the PDM hardware controller number |
lr | Pointer to the LEFT/RIGHT channel within the PDM controller |
|
inlinestatic |
#include <include/zephyr/audio/dmic.h>
Read received decimated PCM data stream.
Optionally waits for audio to be received and provides the received audio buffer from the requested stream
dev | Pointer to the device structure for DMIC driver instance |
stream | Stream identifier |
buffer | Pointer to the received buffer address |
size | Pointer to the received buffer size |
timeout | Timeout in milliseconds to wait in case audio is not yet received, or SYS_FOREVER_MS |
|
inlinestatic |
#include <include/zephyr/audio/dmic.h>
Send a command to the DMIC driver.
Sends a command to the driver to perform a specific action
dev | Pointer to the device structure for DMIC driver instance |
cmd | The command to be sent to the driver instance |