137 lines
3.3 KiB
C
137 lines
3.3 KiB
C
/****************************************************************************
|
|
|
|
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
|
|
|
|
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
|
|
be copied by any method or incorporated into another program without
|
|
the express written consent of Aerospace C.Power. This Information or any portion
|
|
thereof remains the property of Aerospace C.Power. The Information contained herein
|
|
is believed to be accurate and Aerospace C.Power assumes no responsibility or
|
|
liability for its use in any way and conveys no license or title under
|
|
any patent or copyright and makes no representation or warranty that this
|
|
Information is free from patent or copyright infringement.
|
|
|
|
****************************************************************************/
|
|
|
|
#ifndef _IOT_MIC_API_H
|
|
#define _IOT_MIC_API_H
|
|
|
|
#include "iot_i2s_api.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/** \defgroup BSP_APIs MIC APIs
|
|
* @brief MIC APIs
|
|
*
|
|
*
|
|
*/
|
|
|
|
/** @addtogroup MIC_APIs
|
|
* @{
|
|
*
|
|
*/
|
|
|
|
/**
|
|
* @brief Usage:
|
|
|
|
|
|
*/
|
|
|
|
typedef struct _iot_mic_cfg {
|
|
uint8_t port;
|
|
uint8_t bck_pin;
|
|
uint8_t data_pin;
|
|
} iot_mic_cfg_t;
|
|
|
|
typedef struct _iot_mic_array_cfg {
|
|
uint8_t num;
|
|
uint8_t phase;
|
|
uint8_t hp_bypass;
|
|
uint8_t sinc16;
|
|
uint8_t rx_hp_dsample;
|
|
uint32_t clk;
|
|
uint32_t lphp_filter;
|
|
iot_i2s_dma_rcv_func recv;
|
|
iot_mic_cfg_t mic_cfg[I2S_MAX-1];
|
|
} iot_mic_array_cfg_t;
|
|
|
|
typedef struct _iot_i2s_pin {
|
|
uint8_t port;
|
|
uint8_t bck_pin;
|
|
uint8_t lrck_pin;
|
|
uint8_t data_pin;
|
|
}iot_i2s_pin_t;
|
|
|
|
typedef struct _iot_ana_mic_cfg {
|
|
uint8_t num;
|
|
uint32_t clk;
|
|
i2s_bits_sample_t bit_mode;
|
|
i2s_msb_right_t msb_right;
|
|
i2s_rx_cfg_t rx_cfg;
|
|
iot_i2s_dma_rcv_func recv;
|
|
iot_i2s_pin_t mic_cfg[I2S_MAX-1];
|
|
} iot_ana_mic_cfg_t;
|
|
|
|
|
|
/**
|
|
* @brief iot_ana_mic_array_init() - mic array init func
|
|
* @param cfg mic array configure instruction
|
|
*
|
|
* @return 1 -- failed
|
|
* @return 0 -- success
|
|
*
|
|
*/
|
|
uint8_t iot_ana_mic_array_init(iot_ana_mic_cfg_t *cfg);
|
|
|
|
/**
|
|
* @brief iot_mic_array_init() - mic array init func
|
|
* @param cfg mic array configure instruction
|
|
*
|
|
* @return 1 -- failed
|
|
* @return 0 -- success
|
|
*
|
|
*/
|
|
uint8_t iot_mic_array_init(iot_mic_array_cfg_t *cfg);
|
|
|
|
/**
|
|
* @brief iot_mic_array_start() - start mic array
|
|
* @param port IIS port number
|
|
*
|
|
* @return 1 -- invalid param, 11 -- unsupport operation
|
|
* @return 0 -- success
|
|
*
|
|
*/
|
|
uint8_t iot_mic_array_start(uint8_t port);
|
|
|
|
/**
|
|
* @brief iot_get_i2s_mic_array_data() - get i2s mic data
|
|
* @param port IIS port number
|
|
* @param size the size of reveiving mic data
|
|
* @param fst_addr the first address of mic data
|
|
* @param fst_size the first length of mic data
|
|
* @param snd_addr the second address of mic data
|
|
if snd_addr = 0, means second address is invalid
|
|
* @param snd_size the second address of mic data
|
|
*
|
|
* @return 1 -- invalid param, 11 -- no enough data
|
|
* @return 0 -- success
|
|
*
|
|
*/
|
|
uint8_t iot_get_i2s_mic_array_data(uint8_t port, uint32_t size,\
|
|
uint32_t * fst_addr, uint32_t *fst_size,
|
|
uint32_t *snd_addr, uint32_t *snd_size);
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // _IOT_MIC_API_H
|
|
|