9.4. PDM LINK
概述
本说明介绍了PLNK数字麦的配置和使用说明
9.4.1. 应用实例
示例演示:
进入
demo_DevKitBoard/include/demo_config.h
,开启宏USE_AUDIO_DEMO
按键切换使用录音模式,在app_config.h中选择录音输入源为PLNK,如: #define CONFIG_AUDIO_ENC_SAMPLE_SOURCE AUDIO_ENC_SAMPLE_SOURCE_PLNK0 //录音输入源选择
9.4.2. 配置说明
硬件连接:将数字麦引出的MIC_VDD(电源3.3V)、GND(地)、DAT(数据通道)和CLK(时钟线)进行连接。两个数字麦可共用DAT数据线和CLK时钟线
PLNK使用配置 board.c:
//hw_channel 输入通道选择
#define PLNK_MIC_MASK (BIT(0) | BIT(1)) //掩码通道
#define PLNK_CH_MIC_L BIT(0) //通道0 两个MIC共用DAT0也使用该宏
#define PLNK_CH_MIC_R BIT(1) //通道1 两个MIC共用DAT1也使用该宏
#define PLNK_CH_MIC_DOUBLE (BIT(0) | BIT(1)) //通道0和通道1
//plnk参数结构体
struct plnk_platform_data {
void (*port_remap_cb)(void); //设置IO重映射
void (*port_unremap_cb)(void); //解除IO重映射
u8 hw_channel; //数字麦克风的通道选择(见hw_channel 输入通道选择)
u8 clk_out; //是否输出时钟信号 1:是 0:否
u8 high_gain; //0db增益输出 1:使用 0:-6db输出
u8 sample_edge; //采样边沿 1:上升沿 0:下降沿
u16 sr_points; //采样点,不建议修改
u8 share_data_io; //两个数字麦共用一个DAT脚 1:是 0:否
u8 dc_cancelling_filter; //去直流滤波器,0-15
u32 dump_points_num; //丢弃硬件刚打开是的数据点数
};
//board.c板级文件配置
//设置重映射
static void plnk0_port_remap_cb(void)
{
//重映射PDM DAT-PH2 PDM CLK-PH3 重映射的DAT脚和CLK时钟脚可根据原理图所有引脚选择
extern int gpio_plnk_rx_input(u32 gpio, u8 index, u8 data_sel);
gpio_plnk_rx_input(IO_PORTH_02, 0, 0); //plnk数字DAT0输入 ,当第三个参数为1时gpio_plnk_rx_input(IO_PORTH_02, 0, 0);plnk数字DAT1输入
gpio_output_channle(IO_PORTH_03, CH0_PLNK0_SCLK_OUT); //SCLK0使用outputchannel0
JL_IOMAP->CON3 |= BIT(18); //PLNK0 SCLK0 输出使能,若使用PLNK1数字麦1,JL_IOMAP->CON3 |= BIT(19)
}
//解除重映射
static void plnk0_port_unremap_cb(void)
{
JL_IOMAP->CON3 &= ~BIT(18); //PLNK0 SCLK0 输出失能 若使用PLNK1数字麦1,JL_IOMAP->CON3 &= ~BIT(19);
gpio_clear_output_channle(IO_PORTH_03, CH0_PLNK0_SCLK_OUT); //释放outputchannel0
gpio_set_die(IO_PORTH_02, 0); //数字/模拟输入切换
}
//plnk的时钟和数据引脚都采用重映射的使用例子
static const struct plnk_platform_data plnk0_data = {
.hw_channel = PLNK_CH_MIC_L, //使用DAT0输入
.clk_out = 1, //使能时钟输出
.port_remap_cb = plnk0_port_remap_cb, //重映射
.port_unremap_cb = plnk0_port_unremap_cb, //解除重映射
.sample_edge = 0, //在CLK的下降沿采样左MIC,上升沿采样右MIC
.share_data_io = 1, //两个数字MIC共用一个DAT脚
.high_gain = 1, //强增益输出
.dc_cancelling_filter = 14, //去直流滤波器
.dump_points_num = 640, //丢弃刚打开硬件时的数据点数
};
9.4.3. 常见问题
Note
检查设置的采样边沿是否和接入的数字麦的datasheet说明是否一致
设置的IO重映射是否正确
不共用DAT脚时,可使用DAT0和DAT1两个通道,设置hw_channel = PLNK_CH_MIC_L | PLNK_CH_MIC_R
9.4.4. API参考
Warning
doxygenfile: Cannot find file “cpu/wl82/asm/plnk.h