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 – 模拟增益 0-100

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 – 模拟增益 0-100

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:关闭