9.1. AUDIO_ADC
概述
提供AUDIO_ADC的MIC和LINEIN配置介绍、推荐使用方式和注意点
9.1.1. 应用实例
示例演示:
进入
demo_DevKitBoard/include/demo_config.h
,开启宏USE_AUDIO_DEMO
按键切换使用录音模式,MIC输入将听到模拟mic录音的dac播放,LINEIN输入将播放输入的音源
//use_audio_demo中app_config.h选择录音输入源
#define AUDIO_ENC_SAMPLE_SOURCE_MIC 0 //录音输入源:MIC
#define AUDIO_ENC_SAMPLE_SOURCE_LINEIN 5 //录音输入源:LINEIN
//使用MIC作为录音输入
#define CONFIG_AUDIO_ENC_SAMPLE_SOURCE AUDIO_ENC_SAMPLE_SOURCE_MIC //录音输入源选择
//或者使用LINEIN作为录音输入
#define CONFIG_AUDIO_ENC_SAMPLE_SOURCE AUDIO_ENC_SAMPLE_SOURCE_LINEIN //录音输入源选择
9.1.2. 常见问题
Note
检查板级文件DevKitBoard.c中mic和linein是否正确配置使用
检查app_config.h是否选用正确的录音输入源
AUDIO ADC模拟直通仅能直通到FDAC,RDAC无效
MIC和LINEIN同时打开使用时,采样率必须设置一致
9.1.3. 配置说明
struct adc_platform_data {
u8 mic_channel; //用到的mic通道(详见下面的MIC通道选择,多路通道时使用|叠加)
u8 linein_channel; //用到的linein通道(详见下面的LINEIN通道选择,多路通道时使用|叠加)
u8 mic_ch_num; //用到的mic通道数
u8 linein_ch_num; //用到的linein通道数
u8 isel; //AD电流档,一般没有特殊要求不建议改动
u8 all_channel_open; //所有AD通道打开,使用多路AD时建议打开
u16 sr_points; //多少个采样点进一次中断,一般不建议修改
u16 dump_num; //打开ADC时丢掉的采样点数,不设置或为0时不丢掉刚打开ADC时的点数
//刚打开ADC时会有“噗”的一声杂音,大概20-30ms后ADC就会恢复正常,所以需设置dump_num丢掉刚打开时的采样点数,板级文件board.c都有建议的设置数值
};
//demo_DevkitBoard/board/wl82/DevKitBoard.c
static const struct adc_platform_data adc_data = {
.mic_channel = (LADC_CH_MIC1_P_N | LADC_CH_MIC3_P_N),
.linein_channel = (LADC_CH_AUX1 | LADC_CH_AUX3),
.mic_ch_num = 2,
.linein_ch_num = 2,
.all_channel_open = 1,
.isel = 2,
.dump_num = 480,
};
9.1.4. API参考
MIC通道选择
-
LADC_CH_MIC0_P
MIC通道0正极 PA2
-
LADC_CH_MIC0_N
MIC通道0负极 PA1
-
LADC_CH_MIC0_P_N
MIC通道0正负极 PA1 PA2
-
LADC_CH_MIC1_P
MIC通道1正极 PH8
-
LADC_CH_MIC1_N
MIC通道1负极 PH9
-
LADC_CH_MIC1_P_N
MIC通道1正负极 PH8 PH9
-
LADC_CH_MIC2_P
MIC通道2正极 PA3
-
LADC_CH_MIC2_N
MIC通道2负极 PA4
-
LADC_CH_MIC2_P_N
MIC通道2正负极 PA4 PA3
-
LADC_CH_MIC3_P
MIC通道3正极 PH6
-
LADC_CH_MIC3_N
MIC通道3正极 PH5
-
LADC_CH_MIC3_P_N
MIC通道3正负极 PH5 PH6
LINEIN通道选择
-
LADC_CH_AUX0
AUX通道0 PA0
-
LADC_CH_AUX1
AUX通道1 PH7
-
LADC_CH_AUX2
AUX通道2 PA5
-
LADC_CH_AUX3
AUX通道3 PH4
-
void adc_multiplex_set_gain(const char *source, u8 channel_bit_map, u8 gain)
ADC多路复用时的模拟增益设置
- Parameters
source – 采样源 “mic” “linein”
channel_bit_map – 通道选择
gain – 模拟增益 mic:0-31 linein:0-15
-
void adc_multiplex_open(const char *source, u8 channel_bit_map)
ADC多路复用时打开通道
- Parameters
source – 采样源 “mic” “linein”
channel_bit_map – 通道选择
-
int adc_open(const char *source, struct adc_platform_data *pd)
打开ADC
- Parameters
source – 采样源 “mic” “linein”
adc_platform_data – *pd adc配置参数结构体指针
-
int adc_set_sample_rate(int sample_rate)
ADC采样率设置
- Parameters
sample_rate – 采样率
-
int adc_start(const char *source)
ADC模块使能
- Parameters
source – 采样源 “mic” “linein”
-
void adc_irq_handler(void)
ADC中断函数
-
int adc_stop(void)
ADC模块失能
-
int adc_close(void)
关闭ADC
-
void adc_set_data_handler(void *priv, void (*handler)(void*, u8 *data, int len))
设置ADC中断的回调函数
- Parameters
priv – 传入指针
handler – 回调函数
-
int adc_set_gain(const char *source, u8 gain)
ADC增益设置
- Parameters
source – 采样源 “mic” “linein”
gain – 模拟增益 mic:0-31 linein:0-15
-
void linein_to_fdac(u8 enable_dacl, u8 enable_dacr)
LINEIN模拟直通到DACL/R
- Parameters
enable_dacl – 直通使能DACL位
enable_dacr – 直通使能DACR位
-
void mic_to_fdac(u8 channel_bit_map, u8 enable_dacl, u8 enable_dacr)
MIC模拟直通到DACL/R
- Parameters
channel_bit_map – 通道选择
enable_dacl – 直通使能DACL位
enable_dacr – 直通使能DACR位
-
void vcm_early_init(u32 delay_ms)
vcm电压初始化
- Parameters
delay_ms – 毫秒级稳定延时
-
void linein_to_fdac_high_gain(u8 enable)
linein模拟直通DAC的模拟增益控制开关
- Parameters
enable – 1:使能 0:关闭