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.

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?

UserRevisionLine numberNew 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 */