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
 | ||
|  | 
 |