CI130X SDK API手册  2.2.0
本手册用于描述CI130X SDK各个组件和驱动API
结构体 | 宏定义 | 函数 | 变量
codec_manager.c 文件参考
#include <string.h>
#include <stdlib.h>
#include "ci130x_core_eclic.h"
#include "ci130x_core_misc.h"
#include "platform_config.h"
#include "codec_manager.h"
#include "ci130x_iis.h"
#include "board.h"
#include "FreeRTOS.h"
#include "semphr.h"
#include "queue.h"
#include "romlib_runtime.h"

结构体

struct  play_buffer_queue_t
 
struct  record_buffer_queue_t
 
struct  codec_info_t
 
struct  codec_manage_t
 

宏定义

#define ZERO_BUFFER_SIZE   640
 
#define USE_CODEC   1
 

函数

static int set_iis_pad_for_clk_input_flag (void)
 标记IIS PAD方向 更多...
 
static int get_iis_pad_for_clk_input_flag (void)
 获取IIS PAD方向 更多...
 
void cm_init ()
 初始化codec管理器 更多...
 
static IISDMAChax get_iis_dma_channel (iis_base_t IISx)
 
static void iis_clk_gate (IISNumx IISx, FunctionalState cmd)
 
static int init_iis (cm_iis_info_t *p_iis_info, cm_iis_txrx_t txrx)
 
int cm_reg_codec (int codec_index, cm_codec_hw_info_t *p_codec_hw_info)
 注册codec 更多...
 
int cm_register_codec_callback (int codec_index, void(*callback_func)(void))
 注册指定CODEC的回调函数,用于异步调用方式,CODEC会在特定事件发生时,调用此函数与调用者通信。 更多...
 
static int config_iis_dma (codec_info_t *p_codec_info, io_direction_t io_dir)
 
int cm_config_pcm_buffer (int codec_index, io_direction_t io_dir, cm_pcm_buffer_info_t *pcm_buffer_info)
 配置指定音频CODEC的PCM数据buffer。 更多...
 
int cm_config_codec (int codec_index, io_direction_t io_dir, cm_sound_info_t *sound_info)
 配置指定音频CODEX的音频信息。 更多...
 
int cm_start_codec (int codec_index, io_direction_t io_dir)
 启动指定的音频CODEC播放或录音。 更多...
 
int cm_stop_codec (int codec_index, io_direction_t io_dir)
 停止指定的音频CODEC播放或录音。 更多...
 
int cm_read_codec (int codec_index, uint32_t *data_addr, uint32_t *data_size)
 从指定的音频CODEC读取录制的PCM数据,此接口为同步调用接口,如果当前没有PCM数据可以读取,此调用会被阻塞,直到有PCM数据可读取时才返回。 更多...
 
int cm_write_codec (int codec_index, void *pcm_buffer, uint32_t wait_tick)
 向指定的音频CODEC写入数据。 更多...
 
void cm_get_pcm_buffer (int codec_index, uint32_t *ret_buf, uint32_t wait_tick)
 从指定的音频CODEC获取空闲的PCM数据buffer,用于填充PCM数据后再通过cm_write_codec接口写入音频CODEC。 更多...
 
int cm_release_pcm_buffer (int codec_index, io_direction_t io_dir, void *pcm_buffer)
 向指定的音频CODEC释放一个PCM数据buffer,释放的PCM数据buffer必须是通过cm_read_codec读取到的数据buffer,用于循环录制音频数据。 更多...
 
int cm_set_codec_dac_gain (int codec_index, cm_cha_sel_t cha, int gain)
 设置DAC的增益(0 —— 100) 更多...
 
int cm_set_codec_adc_gain (int codec_index, cm_cha_sel_t cha, int gain)
 设置ADC的gain,只开放PGA增益调节 更多...
 
int cm_set_codec_alc (int codec_index, cm_cha_sel_t cha, FunctionalState alc_enable)
 CODEC ADC ALC开关的接口 更多...
 
int cm_set_codec_dac_enable (int codec_index, int channel, FunctionalState en)
 设置指定的音频CODEC的DAC功能是否使能。 更多...
 
int cm_get_codec_empty_buffer_number (int codec_index, io_direction_t io_dir)
 获取指定的音频CODEC的空闲buffer数量。 更多...
 
int cm_get_codec_busy_buffer_number (int codec_index, io_direction_t io_dir)
 获取指定的音频CODEC的忙buffer数量。 更多...
 
int cm_set_codec_mute (int codec_index, io_direction_t io_dir, int channel_flag, FunctionalState en)
 设置静音模式。 更多...
 
void cm_input_interrupt_handler (IISDMAChax dma_channel, BaseType_t *xHigherPriorityTaskWoken)
 
 __attribute__ ((weak))
 
void cm_output_interrupt_handler (IISDMAChax dma_channel, BaseType_t *xHigherPriorityTaskWoken)
 

变量

static codec_manage_t cm = {0}
 
unsigned char send_buf_addr [2048]
 
volatile uint8_t iis_pad_for_clk_input_flag = 0
 

结构体说明

◆ play_buffer_queue_t

struct play_buffer_queue_t
成员变量
QueueHandle_t busy_queue
uint32_t data_begin_addr
int32_t data_current_addr
uint32_t data_end_addr
QueueHandle_t idle_queue
uint32_t last_data_begin_addr

◆ record_buffer_queue_t

struct record_buffer_queue_t
成员变量
uint32_t read_addr
SemaphoreHandle_t recorded_count_sem
uint32_t write_addr

◆ codec_manage_t

struct codec_manage_t
成员变量
codec_info_t codec_info[2]
char dma_channel_to_codec_index[2+1]
char reg_flag[2]
SemaphoreHandle_t semaphore
char zero_buffer[640]

宏定义说明

◆ USE_CODEC

#define USE_CODEC   1

◆ ZERO_BUFFER_SIZE

#define ZERO_BUFFER_SIZE   640

函数说明

◆ __attribute__()

__attribute__ ( (weak)  )

◆ cm_input_interrupt_handler()

void cm_input_interrupt_handler ( IISDMAChax  dma_channel,
BaseType_t *  xHigherPriorityTaskWoken 
)

◆ cm_output_interrupt_handler()

void cm_output_interrupt_handler ( IISDMAChax  dma_channel,
BaseType_t *  xHigherPriorityTaskWoken 
)

◆ config_iis_dma()

static int config_iis_dma ( codec_info_t p_codec_info,
io_direction_t  io_dir 
)
static

◆ get_iis_dma_channel()

static IISDMAChax get_iis_dma_channel ( iis_base_t  IISx)
static

◆ get_iis_pad_for_clk_input_flag()

static int get_iis_pad_for_clk_input_flag ( void  )
static

获取IIS PAD方向

◆ iis_clk_gate()

static void iis_clk_gate ( IISNumx  IISx,
FunctionalState  cmd 
)
static

◆ init_iis()

static int init_iis ( cm_iis_info_t p_iis_info,
cm_iis_txrx_t  txrx 
)
static

◆ set_iis_pad_for_clk_input_flag()

static int set_iis_pad_for_clk_input_flag ( void  )
static

标记IIS PAD方向

变量说明

◆ cm

codec_manage_t cm = {0}
static

◆ iis_pad_for_clk_input_flag

volatile uint8_t iis_pad_for_clk_input_flag = 0

◆ send_buf_addr

unsigned char send_buf_addr[2048]