Astra MCU SDK Peripheral Driver Library
Loading...
Searching...
No Matches
dmic.h
1
19
20#ifndef DMIC_H
21#define DMIC_H
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
27#include <stdint.h>
28#include <stdbool.h>
29#include <stddef.h>
30#include "syna_device.h"
31#include "pdm_registers.h"
32#include "clk.h"
33#include "timer.h"
34#if CONFIG_MODULE_DMA_ENABLED
35#include "dma.h"
36#endif
37
38/*******************************************************************************
39* Macro definitions
40*******************************************************************************/
41
43
44/***************************************************************************/
558
587
588/*******************************************************************************
589 * Enumerations
590 *******************************************************************************/
613
622
630
649
660
664typedef enum {
669
676typedef uint32_t dmic_cutoff_freq_t;
677
686
698
713
714
716
717/*******************************************************************************
718 * Type Definitions
719 *******************************************************************************/
739
754
768
772typedef struct dmic_dma_config_s {
773 /* Linux-style runtime layout */
774 void *buffer;
775 uint32_t buffer_bytes;
776 uint32_t period_bytes;
777 uint32_t frame_bytes;
779
800
814
835
836
853typedef void (*dmic_event_cb_t)(
854 dmic_instance_en instance,
855 uint8_t channel,
856 dmic_event_en event,
857 uint32_t offset,
858 uint32_t size,
859 void *user_data);
860
862
863/*******************************************************************************
864 * Function Prototypes
865 *******************************************************************************/
872
873/*******************************************************************************
874* Function Name: dmic_init
875****************************************************************************/
892
893/*******************************************************************************
894* Function Name: dmic_get_capability
895****************************************************************************/
913
914/*******************************************************************************
915* Function Name: dmic_config_channel
916****************************************************************************/
937 const dmic_channel_config_t* cfg);
938
939/*******************************************************************************
940* Function Name: dmic_configure_io
941****************************************************************************/
961 const dmic_io_config_t* dmic_config);
962
963/*******************************************************************************
964* Function Name: dmic_enable_interrupts
965****************************************************************************/
979dmic_status_en dmic_enable_interrupts(dmic_instance_en instance, uint32_t mask /* bitmask of dmic_int_en */);
980
981/*******************************************************************************
982* Function Name: dmic_reset
983****************************************************************************/
997
998/*******************************************************************************
999* Function Name: dmic_enable
1000****************************************************************************/
1017
1018/*******************************************************************************
1019* Function Name: dmic_disable
1020****************************************************************************/
1042
1043/*******************************************************************************
1044* Function Name: dmic_isr
1045****************************************************************************/
1059
1060/*******************************************************************************
1061* Function Name: dmic_start
1062****************************************************************************/
1080
1081/*******************************************************************************
1082* Function Name: dmic_stop
1083****************************************************************************/
1107
1108/*******************************************************************************
1109* Function Name: dmic_read
1110****************************************************************************/
1138 int32_t timeout);
1139
1140/*******************************************************************************
1141* Function Name: dmic_read_nonblocking
1142****************************************************************************/
1165
1166/*******************************************************************************
1167* Function Name: dmic_set_channel_volume
1168****************************************************************************/
1183 uint8_t channel, float volume_db);
1184
1185/*******************************************************************************
1186* Function Name: dmic_set_channel_gain
1187****************************************************************************/
1202 dmic_channel_en channel, dmic_gain_ctrl_en gain_ctrl);
1203
1204/*******************************************************************************
1205* Function Name: dmic_set_channel_boost
1206****************************************************************************/
1221 dmic_channel_en channel, dmic_boost_en boost_level);
1222
1223/*******************************************************************************
1224* Function Name: dmic_register_callback
1225****************************************************************************/
1237 dmic_event_cb_t event_cb, void* user_data);
1238
1239
1240/*******************************************************************************
1241* Function Name: dmic_config_data_path
1242****************************************************************************/
1263 const dmic_data_path_config_t *cfg);
1264
1267
1268#ifdef __cplusplus
1269}
1270#endif
1271
1272#endif /* DMIC_H */
dmic_instance_en
DMIC instances for CM52.
Definition sl2610_cm52.h:619
struct dmic_capability_s dmic_capability_t
DMIC instance capability description.
struct dmic_data_path_config_s dmic_data_path_config_t
Unified DMIC data-path configuration.
struct dmic_channel_config_s dmic_channel_config_t
DMIC channel configuration structure.
struct dmic_fifo_config_s dmic_fifo_config_t
DMIC RX FIFO configuration structure.
struct dmic_dma_config_s dmic_dma_config_t
Generic DMA configuration.
struct dmic_io_config_s dmic_io_config_t
DMIC I/O configuration structure.
void(* dmic_event_cb_t)(dmic_instance_en instance, uint8_t channel, dmic_event_en event, uint32_t offset, uint32_t size, void *user_data)
DMIC event callback function type.
Definition dmic.h:853
struct dmic_buffer_context_s dmic_buffer_context_t
DMIC buffer context structure.
dmic_event_en
DMIC event notifications.
Definition dmic.h:574
dmic_gain_ctrl_en
Microphone Gain Control.
Definition dmic.h:634
dmic_decimation_ratio_en
Decimation ratios for DMIC output.
Definition dmic.h:617
dmic_status_en
Error codes for DMIC module.
Definition dmic.h:594
dmic_in_phase_en
DMIC Input Phase.
Definition dmic.h:626
dmic_boost_en
Input boost levels.
Definition dmic.h:653
dmic_buffer_mode_en
DMIC buffer mode capability bitmask.
Definition dmic.h:693
dmic_transfer_mode_en
DMIC transfer mode capability bitmask.
Definition dmic.h:681
dmic_int_en
FIFO interrupt mask configuration.
Definition dmic.h:664
dmic_sample_size_en
DMIC sample size selector.
Definition dmic.h:708
uint32_t dmic_cutoff_freq_t
DMIC HPF cutoff selector type.
Definition dmic.h:676
@ DMIC_EVENT_UNDERFLOW
Definition dmic.h:578
@ DMIC_EVENT_OVERFLOW
Definition dmic.h:576
@ DMIC_EVENT_INVALID_CONFIG
Definition dmic.h:581
@ DMIC_EVENT_NONE
Definition dmic.h:575
@ DMIC_EVENT_FULL
Definition dmic.h:577
@ DMIC_EVENT_READ_PARTIAL_COMPLETE
Definition dmic.h:584
@ DMIC_EVENT_READ_COMPLETE
Definition dmic.h:582
@ DMIC_EVENT_ALMOST_FULL
Definition dmic.h:579
@ DMIC_EVENT_ERROR
Definition dmic.h:585
@ DMIC_EVENT_READ_NOT_READY
Definition dmic.h:583
@ DMIC_EVENT_MUTE_ENABLED
Definition dmic.h:580
@ DMIC_GAIN_POS_2_5DB
Definition dmic.h:646
@ DMIC_GAIN_NEG_1DB
Definition dmic.h:639
@ DMIC_GAIN_NEG_2_5DB
Definition dmic.h:636
@ DMIC_GAIN_NEG_0_5DB
Definition dmic.h:640
@ DMIC_GAIN_NEG_1_5DB
Definition dmic.h:638
@ DMIC_GAIN_POS_1_5DB
Definition dmic.h:644
@ DMIC_GAIN_POS_3DB
Definition dmic.h:647
@ DMIC_GAIN_NEG_3DB
Definition dmic.h:635
@ DMIC_GAIN_POS_0_5DB
Definition dmic.h:642
@ DMIC_GAIN_NEG_2DB
Definition dmic.h:637
@ DMIC_GAIN_POS_2DB
Definition dmic.h:645
@ DMIC_GAIN_POS_1DB
Definition dmic.h:643
@ DMIC_GAIN_0DB
Definition dmic.h:641
@ DMIC_DECIMATE_BY_16
Definition dmic.h:620
@ DMIC_DECIMATE_BY_32
Definition dmic.h:619
@ DMIC_DECIMATE_BY_64
Definition dmic.h:618
@ DMIC_ERROR_INVALID_CONTEXT
Definition dmic.h:606
@ DMIC_ERROR_DATA_STUCK
Definition dmic.h:598
@ DMIC_ERROR_INVALID_BOOST
Definition dmic.h:601
@ DMIC_ERROR
Definition dmic.h:596
@ DMIC_ERROR_NOT_CLEARED
Definition dmic.h:605
@ DMIC_ERROR_DMA_FAILED
Definition dmic.h:608
@ DMIC_ERROR_INVALID_PHASE
Definition dmic.h:603
@ DMIC_OK
Definition dmic.h:595
@ DMIC_ERROR_INVALID_PARAM
Definition dmic.h:607
@ DMIC_ERROR_INVALID_GAIN
Definition dmic.h:600
@ DMIC_ERROR_OVERFLOW
Definition dmic.h:599
@ DMIC_ERROR_UNKNOWN
Definition dmic.h:609
@ DMIC_ERROR_TIMEOUT
Definition dmic.h:597
@ DMIC_ERROR_INVALID_CONFIG
Definition dmic.h:611
@ DMIC_ERROR_NOT_SUPPORTED
Definition dmic.h:610
@ DMIC_ERROR_INVALID_CLK_DIV
Definition dmic.h:602
@ DMIC_ERROR_MUTE_STATE
Definition dmic.h:604
@ DMIC_PHASE_NEG_EDGE_ALIGN_POS
Definition dmic.h:628
@ DMIC_PHASE_POS_EDGE_ALIGN_NEG
Definition dmic.h:627
@ DMIC_BOOST_18DB
Definition dmic.h:657
@ DMIC_BOOST_6DB
Definition dmic.h:655
@ DMIC_BOOST_12DB
Definition dmic.h:656
@ DMIC_BOOST_0DB
Definition dmic.h:654
@ DMIC_BOOST_24DB
Definition dmic.h:658
@ DMIC_BUFFER_MODE_PER_CHANNEL
Definition dmic.h:695
@ DMIC_BUFFER_MODE_INTERLEAVED
Definition dmic.h:696
@ DMIC_BUFFER_MODE_NONE
Definition dmic.h:694
@ DMIC_TRANSFER_MODE_NONE
Definition dmic.h:682
@ DMIC_TRANSFER_MODE_FIFO
Definition dmic.h:683
@ DMIC_TRANSFER_MODE_DMA
Definition dmic.h:684
@ DMIC_INT_AFULL
Definition dmic.h:665
@ DMIC_INT_OVER
Definition dmic.h:667
@ DMIC_INT_FULL
Definition dmic.h:666
@ DMIC_SAMPLE_24BIT
Definition dmic.h:710
@ DMIC_SAMPLE_32BIT
Definition dmic.h:711
@ DMIC_SAMPLE_16BIT
Definition dmic.h:709
dmic_status_en dmic_set_channel_gain(dmic_instance_en instance, dmic_channel_en channel, dmic_gain_ctrl_en gain_ctrl)
dmic_status_en dmic_register_callback(dmic_instance_en instance, dmic_event_cb_t event_cb, void *user_data)
dmic_status_en dmic_reset(dmic_instance_en instance)
dmic_status_en dmic_config_channel(dmic_instance_en instance, uint8_t channel, const dmic_channel_config_t *cfg)
dmic_status_en dmic_enable_interrupts(dmic_instance_en instance, uint32_t mask)
dmic_status_en dmic_disable(dmic_instance_en instance)
dmic_status_en dmic_config_data_path(dmic_instance_en instance, const dmic_data_path_config_t *cfg)
dmic_status_en dmic_read(dmic_instance_en instance, dmic_buffer_context_t *buf, int32_t timeout)
dmic_status_en dmic_set_channel_boost(dmic_instance_en instance, dmic_channel_en channel, dmic_boost_en boost_level)
dmic_status_en dmic_get_capability(dmic_instance_en instance, dmic_capability_t *capability)
dmic_status_en dmic_configure_io(dmic_instance_en instance, const dmic_io_config_t *dmic_config)
dmic_status_en dmic_isr(dmic_instance_en instance)
dmic_status_en dmic_start(dmic_instance_en instance)
INIT_CODE dmic_status_en dmic_init(dmic_instance_en instance)
dmic_status_en dmic_enable(dmic_instance_en instance)
dmic_status_en dmic_set_channel_volume(dmic_instance_en instance, uint8_t channel, float volume_db)
dmic_status_en dmic_stop(dmic_instance_en instance)
dmic_status_en dmic_read_nonblocking(dmic_instance_en instance, dmic_buffer_context_t *buf)
DMIC buffer context structure.
Definition dmic.h:807
uint8_t * buffer
Definition dmic.h:809
uint32_t buffer_size
Definition dmic.h:810
uint8_t channel
Definition dmic.h:808
uint32_t available_bytes
Definition dmic.h:812
uint32_t offset_bytes
Definition dmic.h:811
DMIC instance capability description.
Definition dmic.h:822
bool has_gain
Definition dmic.h:829
bool has_iir
Definition dmic.h:831
uint32_t buffer_modes
Definition dmic.h:825
bool has_dma
Definition dmic.h:827
uint32_t transfer_modes
Definition dmic.h:824
bool has_hwvad
Definition dmic.h:828
uint32_t max_clk_hz
Definition dmic.h:833
uint8_t num_channels
Definition dmic.h:823
bool has_fifo
Definition dmic.h:826
uint32_t clk_id
Definition dmic.h:832
bool has_boost
Definition dmic.h:830
DMIC channel configuration structure.
Definition dmic.h:746
bool enable_ll_filter
Definition dmic.h:750
bool enable_hpf
Definition dmic.h:751
dmic_cutoff_freq_t hpf_cutoff_freq
Definition dmic.h:747
bool enable_low_power
Definition dmic.h:749
bool enable_iir
Definition dmic.h:752
bool enable
Definition dmic.h:748
Unified DMIC data-path configuration.
Definition dmic.h:792
dmic_transfer_mode_en transfer_mode
Definition dmic.h:794
uint8_t channel
Definition dmic.h:793
dmic_fifo_config_t fifo
Definition dmic.h:797
dmic_dma_config_t dma
Definition dmic.h:796
Generic DMA configuration.
Definition dmic.h:772
uint32_t buffer_bytes
Definition dmic.h:775
uint32_t frame_bytes
Definition dmic.h:777
void * buffer
Definition dmic.h:774
uint32_t period_bytes
Definition dmic.h:776
DMIC RX FIFO configuration structure.
Definition dmic.h:761
bool int_almost_full_enable
Definition dmic.h:764
bool int_overflow_enable
Definition dmic.h:766
bool enable
Definition dmic.h:762
bool int_full_enable
Definition dmic.h:765
uint16_t threshold
Definition dmic.h:763
DMIC I/O configuration structure.
Definition dmic.h:732
bool polarity_reversal
Definition dmic.h:735
dmic_in_phase_en input_phase
Definition dmic.h:737
bool channel_swap
Definition dmic.h:736
uint32_t pdm_clk_Hz
Definition dmic.h:734
uint32_t fs_Hz
Definition dmic.h:733