9.3. IIS(ALNK)

概述

提供IIS配置介绍、推荐使用方式和注意点

9.3.1. 应用实例

示例演示:

  • 进入 demo_DevKitBoard/include/demo_config.h ,开启宏 USE_AUDIO_DEMO

  • 根据IO说明进行两设备的连接

9.3.2. 常见问题

Note

  • IIS0和IIS1是两个互相独立的模块,每个模块具有四个独立的通道CH0~CH3,都可设为输入或输出,但同一模块的同一通道使用时不能同时设置为输出和输入。四个通道共用MCLK/LRCK/SCLK信号

  • SCLK,叫做串行时钟,也叫位时钟(BCLK),用于每一位数据传输的同步,SCLK的频率=2×采样频率×64或32。LRCK,帧时钟,也叫作WS,用于左右声道数据的区分,如高电平表示右声道数据,低电平表示左声道数据,其频率等于设置的采样频率

  • MCLK、SCLK和LRCK由主机提供给从机,当从机自带晶振时可不需由主机提供MCLK

  • 测试时请保证通道数、采样率、位宽的设置是否正确,IO口不要被占用

9.3.3. 配置说明

struct iis_platform_data {
    u8 channel_in;       //输入通道 BIT(X)
    u8 channel_out;      //输出通道 BIT(X)
    u8 port_sel;         //IO组选择
    u8 data_width;       //BIT(X)为通道X使用24bit模式
    u8 mclk_output;      //1:输出mclk 0:不输出mclk
    u8 slave_mode;       //1:从机模式 0:主机模式
    u16 dump_points_num; //丢弃刚打开iis硬件时的数据点数
};
 /*************************************板A作为iis输出***************************************/
 //app_config.h配置
 #define CONFIG_AUDIO_DEC_PLAY_SOURCE        "iis0"             //播放输出源选择

 //DevKitBoard.c配置
 static const struct iis_platform_data iis0_data = {
     .channel_in = 0,
     .channel_out = BIT(0),   //通道0输出
     .port_sel = IIS_PORTA,
     .data_width = 0,
     .mclk_output = 0,
     .slave_mode = 0,
     .dump_points_num = 320,
};

 /*************************************板B作为iis输入**************************************/
 //app_config.h配置
 #define CONFIG_AUDIO_ENC_SAMPLE_SOURCE      AUDIO_ENC_SAMPLE_SOURCE_IIS0    //录音输入源选
 #define CONFIG_AUDIO_RECORDER_SAMPLERATE    44100                           //录音采样率,需与板A输出音频采样率一致
 #define CONFIG_AUDIO_RECORDER_CHANNEL       2                               //录音通道数,需与板A输出音频通道数一致

     //DevKitBoard.c配置
 static const struct iis_platform_data iis0_data = {
     .channel_in = BIT(0),  //通道0输入
     .channel_out = 0,
     .port_sel = IIS_PORTA,
     .data_width = 0,
     .mclk_output = 0,
     .slave_mode = 1,     //从机模式
     .dump_points_num = 320,
 };
  • 根据以上两块板的配置,可实现由板A本地播放模式播放音频通过iis输出,之后由iis输入到板B作为录音模式的输入,板B通过DAC播放

9.3.4. API参考

Warning

doxygenfile: Cannot find file “cpu/wl82/asm/iis.h