mcu_hi3321_watch/include/driver/pdm.h
2025-05-26 20:15:20 +08:00

159 lines
3.5 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Copyright (c) @CompanyNameMagicTag 2023-2023. All rights reserved. \n
*
* Description: Provides PDM driver api \n
* Author: @CompanyNameTag \n
* History: \n
* 2023-01-29 Create file. \n
*/
#ifndef PDM_H
#define PDM_H
#include <stdio.h>
#include "errcode.h"
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif /* __cplusplus */
#endif /* __cplusplus */
/**
* @defgroup drivers_driver_pdm PDM
* @ingroup drivers_driver
* @{
*/
/**
* @if Eng
* @brief Definition of MIC channel.
* @else
* @brief MIC通道定义。
* @endif
*/
typedef enum pdm_mic {
DMIC_4,
DMIC_5,
DMIC_DUAL,
MIC_MAX_NUM
} pdm_mic_t;
/**
* @if Eng
* @brief Definition of PDM configuration.
* @else
* @brief PDM配置参数。
* @endif
*/
typedef struct pdm_config {
#if defined(CONFIG_PDM_USING_V151)
uint8_t fs_ctrl_freq;
uint8_t linear_select;
uint8_t zero_num;
uint8_t threshold_id;
uint8_t noise_enable;
uint8_t pga_bypass_enable;
uint8_t fade_out_time;
uint8_t fade_in_time;
uint8_t little_signal;
uint8_t anti_clip;
uint8_t fade_in_out;
uint8_t pga_gain;
#endif /* CONFIG_PDM_USING_V151 */
uint8_t srcdn_src_mode;
} pdm_config_t;
/**
* @if Eng
* @brief Initialize the PDM.
* @retval ERRCODE_SUCC Success.
* @retval Other Failure. For details, see @ref errcode_t.
* @else
* @brief 初始化PDM。
* @retval ERRCODE_SUCC 成功。
* @retval Other 失败,参考 @ref errcode_t 。
* @endif
*/
errcode_t uapi_pdm_init(void);
/**
* @if Eng
* @brief Deinitialize the PDM.
* @else
* @brief 去初始化PDM。
* @endif
*/
void uapi_pdm_deinit(void);
/**
* @if Eng
* @brief Set the MIC attribute of PDM.
* @param [in] mic The MIC need to set.
* @param [in] attr The MIC attribute of PDM.
* @retval ERRCODE_SUCC Success.
* @retval Other Failure. For details, see @ref errcode_t.
* @else
* @brief 设置PDM通道的属性。
* @param [in] mic 需要配置的通道。
* @param [in] attr 配置参数。
* @retval ERRCODE_SUCC 成功。
* @retval Other 失败,参考 @ref errcode_t 。
* @endif
*/
errcode_t uapi_pdm_set_attr(pdm_mic_t mic, const pdm_config_t *attr);
/**
* @if Eng
* @brief Get the MIC attribute of PDM.
* @param [in] mic The MIC need to set.
* @param [out] attr The MIC attribute of PDM to store.
* @retval ERRCODE_SUCC Success.
* @retval Other Failure. For details, see @ref errcode_t.
* @else
* @brief 获取PDM通道的属性。
* @param [in] mic 需要获取的通道。
* @param [out] attr 用于存储获取的属性参数。
* @retval ERRCODE_SUCC 成功。
* @retval Other 失败,参考 @ref errcode_t 。
* @endif
*/
void uapi_pdm_get_attr(pdm_mic_t mic, pdm_config_t *attr);
/**
* @if Eng
* @brief Start the PDM.
* @retval ERRCODE_SUCC Success.
* @retval Other Failure. For details, see @ref errcode_t.
* @else
* @brief 启动PDM采样。
* @retval ERRCODE_SUCC 成功。
* @retval Other 失败,参考 @ref errcode_t 。
* @endif
*/
errcode_t uapi_pdm_start(void);
/**
* @if Eng
* @brief Stop the PDM.
* @retval ERRCODE_SUCC Success.
* @retval Other Failure. For details, see @ref errcode_t.
* @else
* @brief 停止PDM采样。
* @retval ERRCODE_SUCC 成功。
* @retval Other 失败,参考 @ref errcode_t 。
* @endif
*/
errcode_t uapi_pdm_stop(void);
/**
* @}
*/
#ifdef __cplusplus
#if __cplusplus
}
#endif /* __cplusplus */
#endif /* __cplusplus */
#endif