The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.
Dependents: hello SerialTestv11 SerialTestv12 Sierpinski ... more
mbed 2
This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.
TARGET_LPC54114/TOOLCHAIN_ARM_STD/fsl_dmic.h@172:65be27845400, 2019-02-20 (annotated)
- Committer:
- AnnaBridge
- Date:
- Wed Feb 20 20:53:29 2019 +0000
- Revision:
- 172:65be27845400
- Parent:
- 171:3a7713b1edbc
mbed library release version 165
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Kojto | 148:fd96258d940d | 1 | /* |
Kojto | 148:fd96258d940d | 2 | * Copyright (c) 2016, Freescale Semiconductor, Inc. |
Kojto | 148:fd96258d940d | 3 | * All rights reserved. |
Kojto | 148:fd96258d940d | 4 | * |
Kojto | 148:fd96258d940d | 5 | * Redistribution and use in source and binary forms, with or without modification, |
Kojto | 148:fd96258d940d | 6 | * are permitted provided that the following conditions are met: |
Kojto | 148:fd96258d940d | 7 | * |
Kojto | 148:fd96258d940d | 8 | * o Redistributions of source code must retain the above copyright notice, this list |
Kojto | 148:fd96258d940d | 9 | * of conditions and the following disclaimer. |
Kojto | 148:fd96258d940d | 10 | * |
Kojto | 148:fd96258d940d | 11 | * o Redistributions in binary form must reproduce the above copyright notice, this |
Kojto | 148:fd96258d940d | 12 | * list of conditions and the following disclaimer in the documentation and/or |
Kojto | 148:fd96258d940d | 13 | * other materials provided with the distribution. |
Kojto | 148:fd96258d940d | 14 | * |
Kojto | 148:fd96258d940d | 15 | * o Neither the name of Freescale Semiconductor, Inc. nor the names of its |
Kojto | 148:fd96258d940d | 16 | * contributors may be used to endorse or promote products derived from this |
Kojto | 148:fd96258d940d | 17 | * software without specific prior written permission. |
Kojto | 148:fd96258d940d | 18 | * |
Kojto | 148:fd96258d940d | 19 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
Kojto | 148:fd96258d940d | 20 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
Kojto | 148:fd96258d940d | 21 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
Kojto | 148:fd96258d940d | 22 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR |
Kojto | 148:fd96258d940d | 23 | * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
Kojto | 148:fd96258d940d | 24 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
Kojto | 148:fd96258d940d | 25 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON |
Kojto | 148:fd96258d940d | 26 | * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
Kojto | 148:fd96258d940d | 27 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
Kojto | 148:fd96258d940d | 28 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
Kojto | 148:fd96258d940d | 29 | */ |
Kojto | 148:fd96258d940d | 30 | |
Kojto | 148:fd96258d940d | 31 | #ifndef _FSL_DMIC_H_ |
Kojto | 148:fd96258d940d | 32 | #define _FSL_DMIC_H_ |
Kojto | 148:fd96258d940d | 33 | |
Kojto | 148:fd96258d940d | 34 | #include "fsl_common.h" |
Kojto | 148:fd96258d940d | 35 | |
Kojto | 148:fd96258d940d | 36 | /*! |
Kojto | 148:fd96258d940d | 37 | * @addtogroup dmic_driver |
Kojto | 148:fd96258d940d | 38 | * @{ |
Kojto | 148:fd96258d940d | 39 | */ |
Kojto | 148:fd96258d940d | 40 | |
Kojto | 148:fd96258d940d | 41 | /*! @file*/ |
Kojto | 148:fd96258d940d | 42 | |
Kojto | 148:fd96258d940d | 43 | /******************************************************************************* |
Kojto | 148:fd96258d940d | 44 | * Definitions |
Kojto | 148:fd96258d940d | 45 | ******************************************************************************/ |
Kojto | 148:fd96258d940d | 46 | |
Kojto | 148:fd96258d940d | 47 | /*! |
Kojto | 148:fd96258d940d | 48 | * @name DMIC version |
Kojto | 148:fd96258d940d | 49 | * @{ |
Kojto | 148:fd96258d940d | 50 | */ |
Kojto | 148:fd96258d940d | 51 | |
Kojto | 148:fd96258d940d | 52 | /*! @brief DMIC driver version 2.0.0. */ |
Kojto | 148:fd96258d940d | 53 | #define FSL_DMIC_DRIVER_VERSION (MAKE_VERSION(2, 0, 0)) |
Kojto | 148:fd96258d940d | 54 | /*@}*/ |
Kojto | 148:fd96258d940d | 55 | |
Kojto | 148:fd96258d940d | 56 | /*! @brief DMIC different operation modes. */ |
Kojto | 148:fd96258d940d | 57 | typedef enum _operation_mode |
Kojto | 148:fd96258d940d | 58 | { |
Kojto | 148:fd96258d940d | 59 | kDMIC_OperationModePoll = 0U, /*!< Polling mode */ |
Kojto | 148:fd96258d940d | 60 | kDMIC_OperationModeInterrupt = 1U, /*!< Interrupt mode */ |
Kojto | 148:fd96258d940d | 61 | kDMIC_OperationModeDma = 2U, /*!< DMA mode */ |
Kojto | 148:fd96258d940d | 62 | } operation_mode_t; |
Kojto | 148:fd96258d940d | 63 | |
Kojto | 148:fd96258d940d | 64 | /*! @brief DMIC left/right values. */ |
Kojto | 148:fd96258d940d | 65 | typedef enum _stereo_side |
Kojto | 148:fd96258d940d | 66 | { |
Kojto | 148:fd96258d940d | 67 | kDMIC_Left = 0U, /*!< Left Stereo channel */ |
Kojto | 148:fd96258d940d | 68 | kDMIC_Right = 1U, /*!< Right Stereo channel */ |
Kojto | 148:fd96258d940d | 69 | } stereo_side_t; |
Kojto | 148:fd96258d940d | 70 | |
Kojto | 148:fd96258d940d | 71 | /*! @brief DMIC Clock pre-divider values. */ |
Kojto | 148:fd96258d940d | 72 | typedef enum |
Kojto | 148:fd96258d940d | 73 | { |
Kojto | 148:fd96258d940d | 74 | kDMIC_PdmDiv1 = 0U, /*!< DMIC pre-divider set in divide by 1 */ |
Kojto | 148:fd96258d940d | 75 | kDMIC_PdmDiv2 = 1U, /*!< DMIC pre-divider set in divide by 2 */ |
Kojto | 148:fd96258d940d | 76 | kDMIC_PdmDiv3 = 2U, /*!< DMIC pre-divider set in divide by 3 */ |
Kojto | 148:fd96258d940d | 77 | kDMIC_PdmDiv4 = 3U, /*!< DMIC pre-divider set in divide by 4 */ |
Kojto | 148:fd96258d940d | 78 | kDMIC_PdmDiv6 = 4U, /*!< DMIC pre-divider set in divide by 6 */ |
Kojto | 148:fd96258d940d | 79 | kDMIC_PdmDiv8 = 5U, /*!< DMIC pre-divider set in divide by 8 */ |
Kojto | 148:fd96258d940d | 80 | kDMIC_PdmDiv12 = 6U, /*!< DMIC pre-divider set in divide by 12 */ |
Kojto | 148:fd96258d940d | 81 | kDMIC_PdmDiv16 = 7U, /*!< DMIC pre-divider set in divide by 16*/ |
Kojto | 148:fd96258d940d | 82 | kDMIC_PdmDiv24 = 8U, /*!< DMIC pre-divider set in divide by 24*/ |
Kojto | 148:fd96258d940d | 83 | kDMIC_PdmDiv32 = 9U, /*!< DMIC pre-divider set in divide by 32 */ |
Kojto | 148:fd96258d940d | 84 | kDMIC_PdmDiv48 = 10U, /*!< DMIC pre-divider set in divide by 48 */ |
Kojto | 148:fd96258d940d | 85 | kDMIC_PdmDiv64 = 11U, /*!< DMIC pre-divider set in divide by 64*/ |
Kojto | 148:fd96258d940d | 86 | kDMIC_PdmDiv96 = 12U, /*!< DMIC pre-divider set in divide by 96*/ |
Kojto | 148:fd96258d940d | 87 | kDMIC_PdmDiv128 = 13U, /*!< DMIC pre-divider set in divide by 128 */ |
Kojto | 148:fd96258d940d | 88 | } pdm_div_t; |
Kojto | 148:fd96258d940d | 89 | |
Kojto | 148:fd96258d940d | 90 | /*! @brief Pre-emphasis Filter coefficient value for 2FS and 4FS modes. */ |
Kojto | 148:fd96258d940d | 91 | typedef enum _compensation |
Kojto | 148:fd96258d940d | 92 | { |
Kojto | 148:fd96258d940d | 93 | kDMIC_CompValueZero = 0U, /*!< Compensation 0 */ |
Kojto | 148:fd96258d940d | 94 | kDMIC_CompValueNegativePoint16 = 1U, /*!< Compensation -0.16 */ |
Kojto | 148:fd96258d940d | 95 | kDMIC_CompValueNegativePoint15 = 2U, /*!< Compensation -0.15 */ |
Kojto | 148:fd96258d940d | 96 | kDMIC_CompValueNegativePoint13 = 3U, /*!< Compensation -0.13 */ |
Kojto | 148:fd96258d940d | 97 | } compensation_t; |
Kojto | 148:fd96258d940d | 98 | |
Kojto | 148:fd96258d940d | 99 | /*! @brief DMIC DC filter control values. */ |
Kojto | 148:fd96258d940d | 100 | typedef enum _dc_removal |
Kojto | 148:fd96258d940d | 101 | { |
Kojto | 148:fd96258d940d | 102 | kDMIC_DcNoRemove = 0U, /*!< Flat response no filter */ |
Kojto | 148:fd96258d940d | 103 | kDMIC_DcCut155 = 1U, /*!< Cut off Frequency is 155 Hz */ |
Kojto | 148:fd96258d940d | 104 | kDMIC_DcCut78 = 2U, /*!< Cut off Frequency is 78 Hz */ |
Kojto | 148:fd96258d940d | 105 | kDMIC_DcCut39 = 3U, /*!< Cut off Frequency is 39 Hz */ |
Kojto | 148:fd96258d940d | 106 | } dc_removal_t; |
Kojto | 148:fd96258d940d | 107 | |
Kojto | 148:fd96258d940d | 108 | /*! @brief DMIC IO configiration. */ |
Kojto | 148:fd96258d940d | 109 | typedef enum _dmic_io |
Kojto | 148:fd96258d940d | 110 | { |
Kojto | 148:fd96258d940d | 111 | kDMIC_PdmDual = 0U, /*!< Two separate pairs of PDM wires */ |
Kojto | 148:fd96258d940d | 112 | kDMIC_PdmStereo = 4U, /*!< Stereo Mic */ |
Kojto | 148:fd96258d940d | 113 | kDMIC_PdmBypass = 3U, /*!< Clk Bypass clocks both channels */ |
Kojto | 148:fd96258d940d | 114 | kDMIC_PdmBypassClk0 = 1U, /*!< Clk Bypass clocks only channel0 */ |
Kojto | 148:fd96258d940d | 115 | kDMIC_PdmBypassClk1 = 2U, /*!< Clk Bypas clocks only channel1 */ |
Kojto | 148:fd96258d940d | 116 | } dmic_io_t; |
Kojto | 148:fd96258d940d | 117 | |
Kojto | 148:fd96258d940d | 118 | /*! @brief DMIC Channel number. */ |
Kojto | 148:fd96258d940d | 119 | typedef enum _dmic_channel |
Kojto | 148:fd96258d940d | 120 | { |
Kojto | 148:fd96258d940d | 121 | kDMIC_Channel0 = 0U, /*!< DMIC channel 0 */ |
Kojto | 148:fd96258d940d | 122 | kDMIC_Channel1 = 1U, /*!< DMIC channel 1 */ |
Kojto | 148:fd96258d940d | 123 | } dmic_channel_t; |
Kojto | 148:fd96258d940d | 124 | |
Kojto | 148:fd96258d940d | 125 | /*! @brief DMIC and decimator sample rates. */ |
Kojto | 148:fd96258d940d | 126 | typedef enum _dmic_phy_sample_rate |
Kojto | 148:fd96258d940d | 127 | { |
Kojto | 148:fd96258d940d | 128 | kDMIC_PhyFullSpeed = 0U, /*!< Decimator gets one sample per each chosen clock edge of PDM interface */ |
Kojto | 148:fd96258d940d | 129 | kDMIC_PhyHalfSpeed = 1U, /*!< PDM clock to Microphone is halved, decimator receives each sample twice */ |
Kojto | 148:fd96258d940d | 130 | } dmic_phy_sample_rate_t; |
Kojto | 148:fd96258d940d | 131 | |
Kojto | 148:fd96258d940d | 132 | /*! @brief DMIC transfer status.*/ |
Kojto | 148:fd96258d940d | 133 | enum _dmic_status |
Kojto | 148:fd96258d940d | 134 | { |
Kojto | 148:fd96258d940d | 135 | kStatus_DMIC_Busy = MAKE_STATUS(kStatusGroup_DMIC, 0), /*!< DMIC is busy */ |
Kojto | 148:fd96258d940d | 136 | kStatus_DMIC_Idle = MAKE_STATUS(kStatusGroup_DMIC, 1), /*!< DMIC is idle */ |
Kojto | 148:fd96258d940d | 137 | kStatus_DMIC_OverRunError = MAKE_STATUS(kStatusGroup_DMIC, 2), /*!< DMIC over run Error */ |
Kojto | 148:fd96258d940d | 138 | kStatus_DMIC_UnderRunError = MAKE_STATUS(kStatusGroup_DMIC, 3), /*!< DMIC under run Error */ |
Kojto | 148:fd96258d940d | 139 | }; |
Kojto | 148:fd96258d940d | 140 | |
Kojto | 148:fd96258d940d | 141 | /*! @brief DMIC Channel configuration structure. */ |
Kojto | 148:fd96258d940d | 142 | typedef struct _dmic_channel_config |
Kojto | 148:fd96258d940d | 143 | { |
Kojto | 148:fd96258d940d | 144 | pdm_div_t divhfclk; /*!< DMIC Clock pre-divider values */ |
Kojto | 148:fd96258d940d | 145 | uint32_t osr; /*!< oversampling rate(CIC decimation rate) for PCM */ |
Kojto | 148:fd96258d940d | 146 | int32_t gainshft; /*!< 4FS PCM data gain control */ |
Kojto | 148:fd96258d940d | 147 | compensation_t preac2coef; /*!< Pre-emphasis Filter coefficient value for 2FS */ |
Kojto | 148:fd96258d940d | 148 | compensation_t preac4coef; /*!< Pre-emphasis Filter coefficient value for 4FS */ |
Kojto | 148:fd96258d940d | 149 | dc_removal_t dc_cut_level; /*!< DMIC DC filter control values. */ |
Kojto | 148:fd96258d940d | 150 | uint32_t post_dc_gain_reduce; /*!< Fine gain adjustment in the form of a number of bits to downshift */ |
Kojto | 148:fd96258d940d | 151 | dmic_phy_sample_rate_t sample_rate; /*!< DMIC and decimator sample rates */ |
Kojto | 148:fd96258d940d | 152 | bool saturate16bit; /*!< Selects 16-bit saturation. 0 means results roll over if out range and do not saturate. |
Kojto | 148:fd96258d940d | 153 | 1 means if the result overflows, it saturates at 0xFFFF for positive overflow and |
Kojto | 148:fd96258d940d | 154 | 0x8000 for negative overflow.*/ |
Kojto | 148:fd96258d940d | 155 | } dmic_channel_config_t; |
Kojto | 148:fd96258d940d | 156 | |
Kojto | 148:fd96258d940d | 157 | /*! @brief DMIC Callback function. */ |
Kojto | 148:fd96258d940d | 158 | typedef void (*dmic_callback_t)(void); |
Kojto | 148:fd96258d940d | 159 | |
Kojto | 148:fd96258d940d | 160 | /*! @brief HWVAD Callback function. */ |
Kojto | 148:fd96258d940d | 161 | typedef void (*dmic_hwvad_callback_t)(void); |
Kojto | 148:fd96258d940d | 162 | |
Kojto | 148:fd96258d940d | 163 | /******************************************************************************* |
Kojto | 148:fd96258d940d | 164 | * Definitions |
Kojto | 148:fd96258d940d | 165 | ******************************************************************************/ |
Kojto | 148:fd96258d940d | 166 | |
Kojto | 148:fd96258d940d | 167 | /******************************************************************************* |
Kojto | 148:fd96258d940d | 168 | * API |
Kojto | 148:fd96258d940d | 169 | ******************************************************************************/ |
Kojto | 148:fd96258d940d | 170 | #ifdef __cplusplus |
Kojto | 148:fd96258d940d | 171 | extern "C" { |
Kojto | 148:fd96258d940d | 172 | #endif |
Kojto | 148:fd96258d940d | 173 | |
Kojto | 148:fd96258d940d | 174 | /*! |
Kojto | 148:fd96258d940d | 175 | * @brief Get the DMIC instance from peripheral base address. |
Kojto | 148:fd96258d940d | 176 | * |
Kojto | 148:fd96258d940d | 177 | * @param base DMIC peripheral base address. |
Kojto | 148:fd96258d940d | 178 | * @return DMIC instance. |
Kojto | 148:fd96258d940d | 179 | */ |
Kojto | 148:fd96258d940d | 180 | uint32_t DMIC_GetInstance(DMIC_Type *base); |
Kojto | 148:fd96258d940d | 181 | |
Kojto | 148:fd96258d940d | 182 | /*! |
Kojto | 148:fd96258d940d | 183 | * @brief Turns DMIC Clock on |
Kojto | 148:fd96258d940d | 184 | * @param base : DMIC base |
Kojto | 148:fd96258d940d | 185 | * @return Nothing |
Kojto | 148:fd96258d940d | 186 | */ |
Kojto | 148:fd96258d940d | 187 | void DMIC_Init(DMIC_Type *base); |
Kojto | 148:fd96258d940d | 188 | |
Kojto | 148:fd96258d940d | 189 | /*! |
Kojto | 148:fd96258d940d | 190 | * @brief Turns DMIC Clock off |
Kojto | 148:fd96258d940d | 191 | * @param base : DMIC base |
Kojto | 148:fd96258d940d | 192 | * @return Nothing |
Kojto | 148:fd96258d940d | 193 | */ |
Kojto | 148:fd96258d940d | 194 | void DMIC_DeInit(DMIC_Type *base); |
Kojto | 148:fd96258d940d | 195 | |
Kojto | 148:fd96258d940d | 196 | /*! |
Kojto | 148:fd96258d940d | 197 | * @brief Configure DMIC io |
Kojto | 148:fd96258d940d | 198 | * @param base : The base address of DMIC interface |
Kojto | 148:fd96258d940d | 199 | * @param config : DMIC io configuration |
Kojto | 148:fd96258d940d | 200 | * @return Nothing |
Kojto | 148:fd96258d940d | 201 | */ |
Kojto | 148:fd96258d940d | 202 | void DMIC_ConfigIO(DMIC_Type *base, dmic_io_t config); |
Kojto | 148:fd96258d940d | 203 | |
Kojto | 148:fd96258d940d | 204 | /*! |
Kojto | 148:fd96258d940d | 205 | * @brief Set DMIC operating mode |
Kojto | 148:fd96258d940d | 206 | * @param base : The base address of DMIC interface |
Kojto | 148:fd96258d940d | 207 | * @param mode : DMIC mode |
Kojto | 148:fd96258d940d | 208 | * @return Nothing |
Kojto | 148:fd96258d940d | 209 | */ |
Kojto | 148:fd96258d940d | 210 | void DMIC_SetOperationMode(DMIC_Type *base, operation_mode_t mode); |
Kojto | 148:fd96258d940d | 211 | |
Kojto | 148:fd96258d940d | 212 | /*! |
Kojto | 148:fd96258d940d | 213 | * @brief Configure DMIC channel |
Kojto | 148:fd96258d940d | 214 | * @param base : The base address of DMIC interface |
Kojto | 148:fd96258d940d | 215 | * @param channel : DMIC channel |
Kojto | 148:fd96258d940d | 216 | * @param side : stereo_side_t, choice of left or right |
Kojto | 148:fd96258d940d | 217 | * @param channel_config : Channel configuration |
Kojto | 148:fd96258d940d | 218 | * @return Nothing |
Kojto | 148:fd96258d940d | 219 | */ |
Kojto | 148:fd96258d940d | 220 | void DMIC_ConfigChannel(DMIC_Type *base, |
Kojto | 148:fd96258d940d | 221 | dmic_channel_t channel, |
Kojto | 148:fd96258d940d | 222 | stereo_side_t side, |
Kojto | 148:fd96258d940d | 223 | dmic_channel_config_t *channel_config); |
Kojto | 148:fd96258d940d | 224 | |
Kojto | 148:fd96258d940d | 225 | /*! |
Kojto | 148:fd96258d940d | 226 | * @brief Configure Clock scaling |
Kojto | 148:fd96258d940d | 227 | * @param base : The base address of DMIC interface |
Kojto | 148:fd96258d940d | 228 | * @param use2fs : clock scaling |
Kojto | 148:fd96258d940d | 229 | * @return Nothing |
Kojto | 148:fd96258d940d | 230 | */ |
Kojto | 148:fd96258d940d | 231 | void DMIC_Use2fs(DMIC_Type *base, bool use2fs); |
Kojto | 148:fd96258d940d | 232 | |
Kojto | 148:fd96258d940d | 233 | /*! |
Kojto | 148:fd96258d940d | 234 | * @brief Enable a particualr channel |
Kojto | 148:fd96258d940d | 235 | * @param base : The base address of DMIC interface |
Kojto | 148:fd96258d940d | 236 | * @param channelmask : Channel selection |
Kojto | 148:fd96258d940d | 237 | * @return Nothing |
Kojto | 148:fd96258d940d | 238 | */ |
Kojto | 148:fd96258d940d | 239 | void DMIC_EnableChannnel(DMIC_Type *base, uint32_t channelmask); |
Kojto | 148:fd96258d940d | 240 | |
Kojto | 148:fd96258d940d | 241 | /*! |
Kojto | 148:fd96258d940d | 242 | * @brief Configure fifo settings for DMIC channel |
Kojto | 148:fd96258d940d | 243 | * @param base : The base address of DMIC interface |
Kojto | 148:fd96258d940d | 244 | * @param channel : DMIC channel |
Kojto | 148:fd96258d940d | 245 | * @param trig_level : FIFO trigger level |
Kojto | 148:fd96258d940d | 246 | * @param enable : FIFO level |
Kojto | 148:fd96258d940d | 247 | * @param resetn : FIFO reset |
Kojto | 148:fd96258d940d | 248 | * @return Nothing |
Kojto | 148:fd96258d940d | 249 | */ |
Kojto | 148:fd96258d940d | 250 | void DMIC_FifoChannel(DMIC_Type *base, uint32_t channel, uint32_t trig_level, uint32_t enable, uint32_t resetn); |
Kojto | 148:fd96258d940d | 251 | |
Kojto | 148:fd96258d940d | 252 | /*! |
Kojto | 148:fd96258d940d | 253 | * @brief Get FIFO status |
Kojto | 148:fd96258d940d | 254 | * @param base : The base address of DMIC interface |
Kojto | 148:fd96258d940d | 255 | * @param channel : DMIC channel |
Kojto | 148:fd96258d940d | 256 | * @return FIFO status |
Kojto | 148:fd96258d940d | 257 | */ |
Kojto | 148:fd96258d940d | 258 | static inline uint32_t DMIC_FifoGetStatus(DMIC_Type *base, uint32_t channel) |
Kojto | 148:fd96258d940d | 259 | { |
Kojto | 148:fd96258d940d | 260 | return base->CHANNEL[channel].FIFO_STATUS; |
Kojto | 148:fd96258d940d | 261 | } |
Kojto | 148:fd96258d940d | 262 | |
Kojto | 148:fd96258d940d | 263 | /*! |
Kojto | 148:fd96258d940d | 264 | * @brief Clear FIFO status |
Kojto | 148:fd96258d940d | 265 | * @param base : The base address of DMIC interface |
Kojto | 148:fd96258d940d | 266 | * @param channel : DMIC channel |
Kojto | 148:fd96258d940d | 267 | * @param mask : Bits to be cleared |
Kojto | 148:fd96258d940d | 268 | * @return FIFO status |
Kojto | 148:fd96258d940d | 269 | */ |
Kojto | 148:fd96258d940d | 270 | static inline void DMIC_FifoClearStatus(DMIC_Type *base, uint32_t channel, uint32_t mask) |
Kojto | 148:fd96258d940d | 271 | { |
Kojto | 148:fd96258d940d | 272 | base->CHANNEL[channel].FIFO_STATUS = mask; |
Kojto | 148:fd96258d940d | 273 | } |
Kojto | 148:fd96258d940d | 274 | |
Kojto | 148:fd96258d940d | 275 | /*! |
Kojto | 148:fd96258d940d | 276 | * @brief Get FIFO data |
Kojto | 148:fd96258d940d | 277 | * @param base : The base address of DMIC interface |
Kojto | 148:fd96258d940d | 278 | * @param channel : DMIC channel |
Kojto | 148:fd96258d940d | 279 | * @return FIFO data |
Kojto | 148:fd96258d940d | 280 | */ |
Kojto | 148:fd96258d940d | 281 | static inline uint32_t DMIC_FifoGetData(DMIC_Type *base, uint32_t channel) |
Kojto | 148:fd96258d940d | 282 | { |
Kojto | 148:fd96258d940d | 283 | return base->CHANNEL[channel].FIFO_DATA; |
Kojto | 148:fd96258d940d | 284 | } |
Kojto | 148:fd96258d940d | 285 | |
Kojto | 148:fd96258d940d | 286 | /*! |
Kojto | 148:fd96258d940d | 287 | * @brief Enable callback. |
Kojto | 148:fd96258d940d | 288 | |
Kojto | 148:fd96258d940d | 289 | * This function enables the interrupt for the selected DMIC peripheral. |
Kojto | 148:fd96258d940d | 290 | * The callback function is not enabled until this function is called. |
Kojto | 148:fd96258d940d | 291 | * |
Kojto | 148:fd96258d940d | 292 | * @param base Base address of the DMIC peripheral. |
Kojto | 148:fd96258d940d | 293 | * @param cb callback Pointer to store callback function. |
Kojto | 148:fd96258d940d | 294 | * @retval None. |
Kojto | 148:fd96258d940d | 295 | */ |
Kojto | 148:fd96258d940d | 296 | void DMIC_EnableIntCallback(DMIC_Type *base, dmic_callback_t cb); |
Kojto | 148:fd96258d940d | 297 | |
Kojto | 148:fd96258d940d | 298 | /*! |
Kojto | 148:fd96258d940d | 299 | * @brief Disable callback. |
Kojto | 148:fd96258d940d | 300 | |
Kojto | 148:fd96258d940d | 301 | * This function disables the interrupt for the selected DMIC peripheral. |
Kojto | 148:fd96258d940d | 302 | * |
Kojto | 148:fd96258d940d | 303 | * @param base Base address of the DMIC peripheral. |
Kojto | 148:fd96258d940d | 304 | * @param cb callback Pointer to store callback function.. |
Kojto | 148:fd96258d940d | 305 | * @retval None. |
Kojto | 148:fd96258d940d | 306 | */ |
Kojto | 148:fd96258d940d | 307 | void DMIC_DisableIntCallback(DMIC_Type *base, dmic_callback_t cb); |
Kojto | 148:fd96258d940d | 308 | |
Kojto | 148:fd96258d940d | 309 | /** |
Kojto | 148:fd96258d940d | 310 | * @} |
Kojto | 148:fd96258d940d | 311 | */ |
Kojto | 148:fd96258d940d | 312 | |
Kojto | 148:fd96258d940d | 313 | /*! |
Kojto | 148:fd96258d940d | 314 | * @name hwvad |
Kojto | 148:fd96258d940d | 315 | * @{ |
Kojto | 148:fd96258d940d | 316 | */ |
Kojto | 148:fd96258d940d | 317 | |
Kojto | 148:fd96258d940d | 318 | /*! |
Kojto | 148:fd96258d940d | 319 | * @brief Sets the gain value for the noise estimator. |
Kojto | 148:fd96258d940d | 320 | * |
Kojto | 148:fd96258d940d | 321 | * @param base DMIC base pointer |
Kojto | 148:fd96258d940d | 322 | * @param value gain value for the noise estimator. |
Kojto | 148:fd96258d940d | 323 | * @retval None. |
Kojto | 148:fd96258d940d | 324 | */ |
Kojto | 148:fd96258d940d | 325 | static inline void DMIC_SetGainNoiseEstHwvad(DMIC_Type *base, uint32_t value) |
Kojto | 148:fd96258d940d | 326 | { |
Kojto | 148:fd96258d940d | 327 | assert(NULL != base); |
Kojto | 148:fd96258d940d | 328 | base->HWVADTHGN = value & 0xFu; |
Kojto | 148:fd96258d940d | 329 | } |
Kojto | 148:fd96258d940d | 330 | |
Kojto | 148:fd96258d940d | 331 | /*! |
Kojto | 148:fd96258d940d | 332 | * @brief Sets the gain value for the signal estimator. |
Kojto | 148:fd96258d940d | 333 | * |
Kojto | 148:fd96258d940d | 334 | * @param base DMIC base pointer |
Kojto | 148:fd96258d940d | 335 | * @param value gain value for the signal estimator. |
Kojto | 148:fd96258d940d | 336 | * @retval None. |
Kojto | 148:fd96258d940d | 337 | */ |
Kojto | 148:fd96258d940d | 338 | static inline void DMIC_SetGainSignalEstHwvad(DMIC_Type *base, uint32_t value) |
Kojto | 148:fd96258d940d | 339 | { |
Kojto | 148:fd96258d940d | 340 | assert(NULL != base); |
Kojto | 148:fd96258d940d | 341 | base->HWVADTHGS = value & 0xFu; |
Kojto | 148:fd96258d940d | 342 | } |
Kojto | 148:fd96258d940d | 343 | |
Kojto | 148:fd96258d940d | 344 | /*! |
Kojto | 148:fd96258d940d | 345 | * @brief Sets the hwvad filter cutoff frequency parameter. |
Kojto | 148:fd96258d940d | 346 | * |
Kojto | 148:fd96258d940d | 347 | * @param base DMIC base pointer |
Kojto | 148:fd96258d940d | 348 | * @param value cut off frequency value. |
Kojto | 148:fd96258d940d | 349 | * @retval None. |
Kojto | 148:fd96258d940d | 350 | */ |
Kojto | 148:fd96258d940d | 351 | static inline void DMIC_SetFilterCtrlHwvad(DMIC_Type *base, uint32_t value) |
Kojto | 148:fd96258d940d | 352 | { |
Kojto | 148:fd96258d940d | 353 | assert(NULL != base); |
Kojto | 148:fd96258d940d | 354 | base->HWVADHPFS = value & 0x3u; |
Kojto | 148:fd96258d940d | 355 | } |
Kojto | 148:fd96258d940d | 356 | |
Kojto | 148:fd96258d940d | 357 | /*! |
Kojto | 148:fd96258d940d | 358 | * @brief Sets the input gain of hwvad. |
Kojto | 148:fd96258d940d | 359 | * |
Kojto | 148:fd96258d940d | 360 | * @param base DMIC base pointer |
Kojto | 148:fd96258d940d | 361 | * @param value input gain value for hwvad. |
Kojto | 148:fd96258d940d | 362 | * @retval None. |
Kojto | 148:fd96258d940d | 363 | */ |
Kojto | 148:fd96258d940d | 364 | static inline void DMIC_SetInputGainHwvad(DMIC_Type *base, uint32_t value) |
Kojto | 148:fd96258d940d | 365 | { |
Kojto | 148:fd96258d940d | 366 | assert(NULL != base); |
Kojto | 148:fd96258d940d | 367 | base->HWVADGAIN = value & 0xFu; |
Kojto | 148:fd96258d940d | 368 | } |
Kojto | 148:fd96258d940d | 369 | |
Kojto | 148:fd96258d940d | 370 | /*! |
Kojto | 148:fd96258d940d | 371 | * @brief Clears hwvad internal interrupt flag. |
Kojto | 148:fd96258d940d | 372 | * |
Kojto | 148:fd96258d940d | 373 | * @param base DMIC base pointer |
Kojto | 148:fd96258d940d | 374 | * @param st10 bit value. |
Kojto | 148:fd96258d940d | 375 | * @retval None. |
Kojto | 148:fd96258d940d | 376 | */ |
Kojto | 148:fd96258d940d | 377 | static inline void DMIC_CtrlClrIntrHwvad(DMIC_Type *base, bool st10) |
Kojto | 148:fd96258d940d | 378 | { |
Kojto | 148:fd96258d940d | 379 | assert(NULL != base); |
Kojto | 148:fd96258d940d | 380 | base->HWVADST10 = (st10) ? 0x1 : 0x0; |
Kojto | 148:fd96258d940d | 381 | } |
Kojto | 148:fd96258d940d | 382 | |
Kojto | 148:fd96258d940d | 383 | /*! |
Kojto | 148:fd96258d940d | 384 | * @brief Resets hwvad filters. |
Kojto | 148:fd96258d940d | 385 | * |
Kojto | 148:fd96258d940d | 386 | * @param base DMIC base pointer |
Kojto | 148:fd96258d940d | 387 | * @param rstt Reset bit value. |
Kojto | 148:fd96258d940d | 388 | * @retval None. |
Kojto | 148:fd96258d940d | 389 | */ |
Kojto | 148:fd96258d940d | 390 | static inline void DMIC_FilterResetHwvad(DMIC_Type *base, bool rstt) |
Kojto | 148:fd96258d940d | 391 | { |
Kojto | 148:fd96258d940d | 392 | assert(NULL != base); |
Kojto | 148:fd96258d940d | 393 | base->HWVADRSTT = (rstt) ? 0x1 : 0x0; |
Kojto | 148:fd96258d940d | 394 | } |
Kojto | 148:fd96258d940d | 395 | |
Kojto | 148:fd96258d940d | 396 | /*! |
Kojto | 148:fd96258d940d | 397 | * @brief Gets the value from output of the filter z7. |
Kojto | 148:fd96258d940d | 398 | * |
Kojto | 148:fd96258d940d | 399 | * @param base DMIC base pointer |
Kojto | 148:fd96258d940d | 400 | * @retval output of filter z7. |
Kojto | 148:fd96258d940d | 401 | */ |
Kojto | 148:fd96258d940d | 402 | static inline uint16_t DMIC_GetNoiseEnvlpEst(DMIC_Type *base) |
Kojto | 148:fd96258d940d | 403 | { |
Kojto | 148:fd96258d940d | 404 | assert(NULL != base); |
Kojto | 148:fd96258d940d | 405 | return (base->HWVADLOWZ & 0xFFFFu); |
Kojto | 148:fd96258d940d | 406 | } |
Kojto | 148:fd96258d940d | 407 | |
Kojto | 148:fd96258d940d | 408 | /*! |
Kojto | 148:fd96258d940d | 409 | * @brief Enable hwvad callback. |
Kojto | 148:fd96258d940d | 410 | |
Kojto | 148:fd96258d940d | 411 | * This function enables the hwvad interrupt for the selected DMIC peripheral. |
Kojto | 148:fd96258d940d | 412 | * The callback function is not enabled until this function is called. |
Kojto | 148:fd96258d940d | 413 | * |
Kojto | 148:fd96258d940d | 414 | * @param base Base address of the DMIC peripheral. |
Kojto | 148:fd96258d940d | 415 | * @param vadcb callback Pointer to store callback function. |
Kojto | 148:fd96258d940d | 416 | * @retval None. |
Kojto | 148:fd96258d940d | 417 | */ |
Kojto | 148:fd96258d940d | 418 | void DMIC_HwvadEnableIntCallback(DMIC_Type *base, dmic_hwvad_callback_t vadcb); |
Kojto | 148:fd96258d940d | 419 | |
Kojto | 148:fd96258d940d | 420 | /*! |
Kojto | 148:fd96258d940d | 421 | * @brief Disable callback. |
Kojto | 148:fd96258d940d | 422 | |
Kojto | 148:fd96258d940d | 423 | * This function disables the hwvad interrupt for the selected DMIC peripheral. |
Kojto | 148:fd96258d940d | 424 | * |
Kojto | 148:fd96258d940d | 425 | * @param base Base address of the DMIC peripheral. |
Kojto | 148:fd96258d940d | 426 | * @param vadcb callback Pointer to store callback function.. |
Kojto | 148:fd96258d940d | 427 | * @retval None. |
Kojto | 148:fd96258d940d | 428 | */ |
Kojto | 148:fd96258d940d | 429 | void DMIC_HwvadDisableIntCallback(DMIC_Type *base, dmic_hwvad_callback_t vadcb); |
Kojto | 148:fd96258d940d | 430 | |
Kojto | 148:fd96258d940d | 431 | /*! @} */ |
Kojto | 148:fd96258d940d | 432 | |
Kojto | 148:fd96258d940d | 433 | #ifdef __cplusplus |
Kojto | 148:fd96258d940d | 434 | } |
Kojto | 148:fd96258d940d | 435 | #endif |
Kojto | 148:fd96258d940d | 436 | |
Kojto | 148:fd96258d940d | 437 | /*! @}*/ |
Kojto | 148:fd96258d940d | 438 | |
Kojto | 148:fd96258d940d | 439 | #endif /* __FSL_DMIC_H */ |