IIS音频接口应用
📎 原始文档:https://www.kdocs.cn/l/ccV9i2fG0gwq IIS音频接口应用
备注:以下部分资料来源于网络,仅供参考
IIS(Inter-IC Sound)是飞利浦推出的数字音频接口标准,专为集成电路间的高质量音频数据传输设计,广泛应用于音频编解码器(CODEC)、微控制器(MCU)、数字信号处理器(DSP)等设备间的音频交互。
一、核心作用
IIS 的核心作用是实现数字音频数据的同步传输,其优势包括:
- 分离的时钟与数据线路,减少信号干扰,保证音频质量;
- 支持高采样率、高位深度音频传输,满足专业音频需求;
- 接口时序简单,硬件实现成本低,兼容性强。
二、接口信号组成
IIS 接口包含 4 路核心信号:
- MCLK(主时钟):作为音频 CODEC(编解码器)的基准时钟,用于同步内部数字电路(如数模转换、滤波等),其频率 是 LRCLK 频率的整数倍(常见 256/384 倍),倍数由 CODEC 的硬件设计决定。
- 若音频采样率为 48KHz,配置256倍,则MCLK会输出 48K*256 = 12.288MHz
- LRCLK(左右声道时钟):有的叫WS(word select),用于区分左右声道的数据传输,其频率 等于音频的采样率(Sample Rate)。例如:
- 若音频采样率为 44.1kHz(CD 标准),则 LRCLK 频率为 44.1kHz;
- 若采样率为 48kHz(常用专业音频),则 LRCLK 频率为 48kHz。 (注:LRCLK 的高低电平分别对应左 / 右声道,具体极性由设备定义,不影响频率关系。)
- SCLK(Serial Clock,串行时钟):也叫位时钟,频率为 LRCLK 的位深度倍数(如 16 位音频对应 LRCLK×16),控制每 bit 数据的传输时序。
- 若音频采样率为 44.1kHz,位深32位,则 SCLK 频率为2 * 44100 * 32 = 2.8224 MHz;
- SDATA(Serial Data,串行数据):传输数字音频数据,采用二进制补码形式,高位在前,在 SCLK 的特定边沿采样。
三、典型应用场景
64SCLK模式
该模式下16bitIIS设备和24bit设备都可以共用数据线进行通信。当外部IIS设备为24BIT模式时,芯片一帧数据只会采集16位音频数据位,后面16位数据位丢弃。当芯片作为输出16BIT数据时,外部需要采集24位音频数据位,当其采集完16位音频高位时,后面采集的低八位全部为0,不影响正常输出。
32SCLK模式

四、故障排查
IIS(Inter-IC Sound)音频接口的故障通常表现为无音频输出 / 输入、音频失真、杂音、数据传输中断等,排查需从硬件连接、时钟同步、数据格式、软件配置等维度逐步推进,具体步骤如下:
一、初步故障现象定位
- 明确故障类型
- 是 “完全无信号”(如喇叭无声、录音无数据),还是 “信号异常”(如杂音、卡顿、失真)?
- 是单向故障(仅输出 / 仅输入异常),还是双向故障(输出和输入均异常)?
- 记录故障出现的场景(如上电即异常、运行中突发、特定采样率下异常等)?
二、硬件连接与物理层排查
核心:排除接线错误、接触不良、电源 / 接地问题
- 信号线连接检查
- 核对 MCLK、LRCLK、SCLK、SDATA 的引脚连接是否与设计一致(主设备输出→从设备输入,避免接反)。
- 检查 SDATA 方向是否匹配场景:输出时主设备 SDATA 输出→CODEC SDATA 输入;输入时 CODEC SDATA 输出→主设备 SDATA 输入(部分 CODEC 分 SDIN/SDOUT 引脚,需区分)。
- 排查线路是否松动、虚焊(尤其高频时钟线 MCLK/SCLK,虚焊易导致信号丢失)。
- 电源与接地检查
- 测量 CODEC 和主设备的供电电压(如 3.3V/5V)是否稳定,纹波是否过大(用示波器观察,纹波应 < 100mV)。
- 确认主设备与 CODEC 共地(GND 连接可靠),避免 “悬浮地” 导致的信号电平参考不一致(表现为杂音或数据错乱)。
- 布线干扰排查
- 检查时钟线(MCLK/LRCLK/SCLK)是否与强干扰源(如电机、开关电源)并行布线,或长度过长)。
- 确认时钟线与数据线(SDATA)是否保持足够间距(至少 2 倍线宽),避免串扰(串扰会导致数据采样错误,表现为杂音)。
三、时钟信号同步性排查
核心:IIS 依赖严格的时钟同步,时钟异常是最常见故障根源
- 时钟频率测量
- 用示波器测量 MCLK、LRCLK、SCLK 的频率,验证是否符合预设值:
- LRCLK 频率 ≡ 音频采样率(如 44.1kHz 采样率对应 LRCLK=44.1kHz);
- SCLK 频率 = 采样率 × 位深度(如 16bit 对应 SCLK=44.1kHz×16=705.6kHz);
- MCLK 频率 = LRCLK × N(N 为 CODEC 要求的倍数,如 256/384,需核对数据手册)。
- 若频率偏差超过 1%(如 44.1kHz LRCLK 实际为 43kHz),会导致采样错位,表现为失真或无声。 参考:SCLK示波器捕捉波形 44.1kHz,位深32位,则 SCLK 频率为2 * 44100 * 32 = 2.8224 MHz
- 用示波器测量 MCLK、LRCLK、SCLK 的频率,验证是否符合预设值:
- 时钟波形质量检查
- 用示波器观察时钟信号的上升沿 / 下降沿是否陡峭(过冲 < 10%,毛刺 < 50mV),避免因线路阻抗不匹配导致的波形畸变(畸变会导致从设备采样错误)。
- 检查 MCLK 是否稳定(无突然中断或频率跳变),MCLK 丢失会导致 CODEC 内部电路停摆,直接无输出。
- 时钟源一致性验证
- 确认主设备的时钟源(如 PLL、外部晶振)是否稳定,若主设备时钟由软件动态调整,需排查是否存在配置错误(如分频系数计算错误)。
- 若 CODEC 支持 “内部时钟” 模式,需确认是否误将其配置为 “外部时钟”(或反之),导致时钟源冲突。
四、数据传输与格式排查
核心:验证 SDATA 的数据格式、时序是否与配置一致
- 数据格式匹配性检查
- 核对主设备与 CODEC 的配置是否统一:
- 位深度(16bit/24bit/32bit)是否一致(如主设备发 24bit 数据,CODEC 配置为 16bit,会导致数据截断或错位);
- 数据格式(IIS 标准格式 / 左对齐 / 右对齐)是否一致(格式不匹配会导致声道反相或数据错误,表现为杂音);
- 采样边沿(SCLK 上升沿采样 / 下降沿采样)是否匹配(由 CODEC 数据手册定义,主设备需同步配置)。
- 核对主设备与 CODEC 的配置是否统一:
- SDATA 信号抓取与分析
- 用逻辑分析仪或示波器同时抓取 SDATA、LRCLK、SCLK 信号,分析:
- 每个声道的数据是否在 LRCLK 的对应电平周期内传输(如左声道在 LRCLK 高电平,右声道在低电平);
- 数据位是否与 SCLK 严格同步(1 个 SCLK 周期传输 1bit,高位在前);
- 有无连续无效数据(全 0 或全 1,可能是主设备未正确发送数据,或 CODEC 未正确接收)。
- 用逻辑分析仪或示波器同时抓取 SDATA、LRCLK、SCLK 信号,分析:
- 单向传输故障细化
- 若仅输出异常:检查主设备是否正确输出 SDATA(用逻辑分析仪看是否有数据变化),CODEC 的 DAC 模块是否使能(寄存器配置);
- 若仅录音异常:检查 CODEC 的 ADC 模块是否使能,主设备是否正确配置为 “接收模式”,SDATA 是否有来自 CODEC 的信号。
五、软件配置与初始化排查
核心:排除寄存器配置错误、初始化流程遗漏
六、替换法与极端排查
若以上步骤未解决问题,采用替换法排除硬件故障:
- 替换连接线:用已知良好的短线替换现有线路,排除线缆干扰或损坏;
- 替换 CODEC:用同型号正常芯片替换,排除 CODEC 硬件损坏(如内部 DAC 故障);
- 替换主设备:在开发板上搭建最小系统(如 MCU+CODEC + 喇叭),验证是否为主设备 IIS 控制器故障;
- 降低参数测试:尝试降低采样率(如从 192kHz 降至 44.1kHz)、减少位深度(如 32bit→16bit),排查高参数下的时钟稳定性问题。
总结排查优先级
- 先查硬件连接与电源;
- 再查时钟频率与同步;
- 然后查数据格式与软件配;
- 最后用替换法排除硬件损。
Br23 - AUDIO IIS
br23 - 指的是 AC695X 系列。
以下内容均可以在 AC695X用户手册V1.0上阅读到。
- Audio IIS接口(以下简称ALNK)是一个通用的双声道音频接口用于连接片外的DAC或ADC,连接信号有 MCLK ,SCLK , LRCK ,DATA。 支持 基本模式 IIS/左对齐/右对齐 ,拓展模式右DSP0/DSP1。
- ALNK 具备有4条独立的通道,可以相互独立工作,每条通道都可独立配置为输入或输出,也可配置为不同的连接模式(主从模式),需要注意的是4个通道均共用了MCLK/SCLK/LRCK信号,因此有一定的局限性。 (1)基本模式下只支持双声道立体声。
(2)4条通道只能同时工作于基本模式,或同时工作于拓展模式,不支持混合模式。 - br 23 -AC695X 中包含两个完全相同的 audio link 模块(ALNK0 和 ALNK1互相独立) 下表为 ALNK0 和 ALNK1 使用的IO端口列表:
| ALNK0 | 信号名称 | 占用的IO端口 | |
|---|---|---|---|
| ALINK0_IOS=0 | ALINK0_IOS=1 | ||
| MCLK | PA8 | PA15 | |
| SCLK | PA2 | PA9 | |
| LRCK | PA3 | PA10 | |
| CH0DAT | PA4 | PA11 | |
| CH1DAT | PA5 | PA12 | |
| CH2DAT | PA6 | PA13 | |
| CH3DAT | PA7 | PA14 |
| ALNK1 | 信号名称 | 占用的IO端口 |
|---|---|---|
| MCLK | PB0 | |
| SCLK | PC0 | |
| LRCK | PC1 | |
| CH0DAT | PC2 | |
| CH1DAT | PC3 | |
| CH2DAT | PC4 | |
| CH3DAT | PC5 |
下表为每路ALNK使用的SFR列表
| SFR名称 | 描述 |
|---|---|
| ALNK_CON0 | ALNK控制寄存器0 |
| ALNK_CON1 | ALNK控制寄存器1 |
| ALNK_CON2 | ALNK控制寄存器2 |
| ALNK_CON3 | ALNK控制寄存器3 |
| ALNK_ADR0 | 通道 0 DMA 起始地址寄存器 |
| ALNK_ADR1 | 通道 1 DMA 起始地址寄存器 |
| ALNK_ADR2 | 通道 2 DMA 起始地址寄存器 |
| ALNK_ADR3 | 通道 3 DMA 起始地址寄存器 |
| ALNK_LEN | 通道 0-3 DMA 数据长度寄存器 |
驱动
以 AC695N_soundbox_sdk_release_3.0.6 SDK 为案例讲解:
AUDIO IIS的驱动文件路径在:
..\cpu\br23\audio_common\audio_link.c
..\cpu\br23\audio_common\audio_link.h
..\include_lib\driver\cpu\br23\asm\iis.h
以下代码均可以在 audio_link.c 文件 最底部 能看到 ,可以搜索ALINK_TEST_ENABLE宏定义,找到对应的位置。
typedef enum {
ALINK_SR_48000 = 48000,
ALINK_SR_44100 = 44100,
ALINK_SR_32000 = 32000,
ALINK_SR_24000 = 24000,
ALINK_SR_22050 = 22050,
ALINK_SR_16000 = 16000,
ALINK_SR_12000 = 12000,
ALINK_SR_11025 = 11025,
ALINK_SR_8000 = 8000,
} ALINK_SR;
//===================================//
//多个通道使用需要注意:
//1.数据位宽需要保持一致
//2.buf长度相同
//===================================//
//ALINK结构体如下
typedef struct _ALINK_PARM {
u8 port_select;
struct alnk_ch_cfg ch_cfg[4]; //通道内部配置
ALINK_MODE mode; //IIS, left, right, dsp0, dsp1
ALINK_ROLE role; //主机/从机
ALINK_CLK_MODE clk_mode; //更新和采样边沿
ALINK_DATA_WIDTH bitwide; //数据位宽16/32bit
ALINK_FRAME_MODE sclk_per_frame; //32/64 sclk/frame
u16 dma_len; //buf长度: byte
ALINK_SR sample_rate; //采样率 支持ALINK_SR枚举表
} ALINK_PARM;
//ALINK 结构体 init
ALINK_PARM test_alink0 = {
/* .port_select = ALINK0_PORTA, //MCLK:PA8 SCLK:PA2 LRCK:PA3 CH0:PA4 CH1:PA5 CH2:PA6 CH3:PA7 */
.port_select = ALINK0_PORTB, //MCLK:PA15 SCLK:PA9 LRCK:PA10 CH0:PA11 CH1:PA12 CH2:PA13 CH3:PA14
/* .port_select = ALINK1_PORTA, //MCLK:PB0 SCLK:PC0 LRCK:PC1 CH0:PC2 CH1:PC3 CH2:PC4 CH3:PC5 */
.ch_cfg[0].enable = 1,
.ch_cfg[1].enable = 1,
.mode = ALINK_MD_IIS, //基本模式 IIS
/* .role = ALINK_ROLE_SLAVE, */
.role = ALINK_ROLE_MASTER, //作为主机 master
.clk_mode = ALINK_CLK_FALL_UPDATE_RAISE_SAMPLE,
.bitwide = ALINK_LEN_16BIT,
.sclk_per_frame = ALINK_FRAME_64SCLK,//每帧 64BIT (一帧是左右两个声道数据共64个时钟)
/* .sclk_per_frame = ALINK_FRAME_32SCLK, */
.dma_len = ALNK_BUF_POINTS_NUM * 2 * 2 * 2,
.sample_rate = 44100,
};
ALINK_PARM test_alink1 = {
/* .port_select = ALINK0_PORTA, //MCLK:PA8 SCLK:PA2 LRCK:PA3 CH0:PA4 CH1:PA5 CH2:PA6 CH3:PA7 */
/* .port_select = ALINK0_PORTB, //MCLK:PA15 SCLK:PA9 LRCK:PA10 CH0:PA11 CH1:PA12 CH2:PA13 CH3:PA14 */
.port_select = ALINK1_PORTA, //MCLK:PB0 SCLK:PC0 LRCK:PC1 CH0:PC2 CH1:PC3 CH2:PC4 CH3:PC5
.ch_cfg[0].enable = 1,
.ch_cfg[1].enable = 1,
.mode = ALINK_MD_IIS,
/* .role = ALINK_ROLE_SLAVE, */
.role = ALINK_ROLE_MASTER,
.clk_mode = ALINK_CLK_FALL_UPDATE_RAISE_SAMPLE,
.bitwide = ALINK_LEN_16BIT,
.sclk_per_frame = ALINK_FRAME_64SCLK,
/* .sclk_per_frame = ALINK_FRAME_32SCLK, */
.dma_len = ALNK_BUF_POINTS_NUM * 2 * 2 * 2,
.sample_rate = 44100,
};
//驱动 demo
void audio_link_test(void)
{
#if 1
alink_init(&test_alink0);//
/* alink_channel_init(ALINK1_PORTA, 0, ALINK_DIR_RX, handle_rx); *///选择 ALINK0_PORTB 的 CH0 作为 TX功能
alink_channel_init(ALINK0_PORTB, 1, ALINK_DIR_TX, handle_tx);//选择 ALINK0_PORTB 的 CH1 作为 TX功能
alink_start(ALINK0_PORTB);
alink_info_dump(ALINK0_PORTB); //打印 IIS 寄存器 数值
#endif
#if 0
alink_init(&test_alink1);
/* alink_channel_init(ALINK1_PORTA, 0, ALINK_DIR_RX, handle_rx); */
alink_channel_init(ALINK1_PORTA, 1, ALINK_DIR_TX, handle_tx);
alink_start(ALINK1_PORTA);
alink_info_dump(ALINK1_PORTA);
#endif
}
实战案例
对应的板级配置 选择 AUDIO_OUTPUT_WAY = AUDIO_OUTPUT_WAY_IIS 或 AUDIO_OUTPUT_WAY_DAC_IIS ,会使能 TCFG_IIS_ENABLE ,可以实现IIS输出到DAC的功能
代码示例:
IIS做输入输出功能,且支持混录话筒声音+其他任一解码。
AC696N_V170
【金山文档】 ac696n_soundbox_sdk_v1.7.0_IIS输入输出
ac696n_soundbox_sdk_v1.7.0_IIS输入输出.zip
AC695N_V306
AC695N_soundbox_sdk_release_3.1.0_同组iis输入输出.zip
ac696n_soundbox_sdk_v1.2.0
链接:https://pan.baidu.com/s/1Pm0pJY7fFxOi7x-aMMnocw
提取码:8888
AC695N_soundbox_sdk_release_3.0.6
【金山文档】 IIS_AC695N_soundbox_sdk_release_3.0.6_new
https://kdocs.cn/l/ccnDeYFvQ307
功能说明:
#define MIC_EFFECT_TO_MIX //混响->MIX->dac(关掉默认的直接从DAC输出延时偏大)
/* 混响从IIS输出*/
//! 需要打开混响和IIS的宏
//! 注意开机需要打开混响而且要一直跑(因为IIS的写入放到 混响那里 串在DAC后面)
// IIS 输出
// #define MIC_EFFECT_TO_IIS //混响->dac->IIS输出
// 主控充当 IIS 功放
#define TCFG_APP_IIS_SPEAKER (0)//一个独立的IIS模式(只提供IIS的功能)
#define PC_MIC_INPUT_EXTERNAL_AUDIO (1&&!TCFG_APP_IIS_SPEAKER)//pc模式的mic使用外部音频,例如IIS
#define BT_MIC_INPUT_EXTERNAL_AUDIO (1&&!TCFG_APP_IIS_SPEAKER)//bt模式的mic使用外部音频,例如IIS
AC695N_soundbox_sdk_release_3.1.0
SDK(1):
链接:https://pan.baidu.com/s/1cPiWyf8PRpj6qt43yF8LFw
提取码:8888
功能说明 :
实现IIS的输入(蓝牙,PC)/输出功能(蓝牙,音乐,PC)
IIS输出(主设备 16bit 44100):输出DAC的声音的数据
IIS输入(从设备 16bit 16000):外部IIS信号充当MIC信号
IO 配置 :
IIS输出(主设备):MCLK:PA8 SCLK:PA2 LRCK:PA3 CH0:PA4
IIS输入(从设备 ) :MCLK:PB0 SCLK:PC0 LRCK:PC1 CH0:PC2
AC695N_soundbox_sdk_release_3.1.0_dec_IIS.zip
AC695N_soundbox_sdk_release_3.1.0+支持话筒IIS输出
AC695N_soundbox_sdk_release_3.1.0_MIC_IIS.rar
注:
1、使用MIC_EFFECT_TO_MIX ,开启TWS功能后,打断方式播放提示音会出现卡顿的情况
2、如果使用MIC_EFFECT_TO_IIS ,FM模式下切换频点会出现IIS音频卡顿,修改方法参考以下SDK
AC695N_soundbox_sdk_release_3.1.0_MIC_IIS_.zip
AC695N_soundbox_sdk_release_3.1.2-linein-IIS-input
AC460X demo:
【金山文档】 46系列IIS驱动说明
46系列IIS驱动说明.pdf
【金山文档】 AC46-IIS-apps(做好IIS 同时输入、输出)
https://kdocs.cn/l/csq3PgQl9x0n
JL701N音箱IIS demo
AC700N耳机最新SDK已支持IIS输出
JL701N耳机IIS demo
【金山文档】 jl701n_earphone_release_v1.3.0_audio_link
https://kdocs.cn/l/cpBTYZy7Igyj
获取IIS输入的数据



JL701N demo SDK
【金山文档】 ac701n_earphone_release_v1.4.0_add_iis
https://kdocs.cn/l/cu4RS1P6NKfb
模式选择:
输入模式:作为从机使用,接收到的数据推到PCM解码器,从dac输出
输出模式:作为主机使用,输出系统所有声音到IIS


701N+700N linein IIS功能
JL7018F&JL7006F_7003F AUX IIS.otl
JL701N V160版本SDK,IIS输入音频作为通话上行音源
iis输入采样率是16K时可用:ac701n_earphone_release_v1.6.0_iis_mic.zip
iis输入采样率不是16K时用:ac701n_earphone_release_v1.6.0_iis_mic_src.zip --gitlab
修改涉及文件
使用说明
修改IIS硬件参数
static ALINK_PARM alink0_platform_data = {
.module = ALINK0,//不可修改
.mclk_io = NO_CONFIG_PORT,//根据外设需求选择
.sclk_io = IO_PORTC_02,
.lrclk_io = IO_PORTC_03,
.ch_cfg[0].data_io = IO_PORTC_04,//目前仅需使用一个通道,单通道,输入的是立体声
.ch_cfg[1].data_io = NO_CONFIG_PORT,
.ch_cfg[2].data_io = NO_CONFIG_PORT,
.ch_cfg[3].data_io = NO_CONFIG_PORT,
.mode = ALINK_MD_IIS,//对齐方式
.role = ALINK_ROLE_MASTER,//主从选择
.clk_mode = ALINK_CLK_FALL_UPDATE_RAISE_SAMPLE,//采样边沿
.bitwide = ALINK_LEN_16BIT,//位宽选择
.sclk_per_frame = ALINK_FRAME_32SCLK,//16BIT用32,24BIT用64
.dma_len = 4 * 1024,//可不改
.sample_rate = 16000,//IIS采样率
.buf_mode = ALINK_BUF_CIRCLE,
#if AEC_ENABLE
.iperiod = 256, //配置该项可以控制输入中断的点数
#endif
};
可选是否使用杰理算法、变采样、同步。
#define AEC_ENABLE 0 //0:不使用杰理算法,IIS输入直接编码给蓝牙;1:先经过杰理算法再编码给蓝牙
#define IIS_SRC_EN 1 //是否使用变采样 0: disable 1: enable
#define SRC_TYPE 1 //变采样类型 1: hw src 2: sw src
#define SRC_SYNC 0 //是否使用采样同步 0: disable 1: enable
JL701N TWS一拖二版本SDK IIS demo
701N_1T2_V100_patch_05.32_add_iis_rx_play.rar
实现将IIS输入数据推到dac播放
int dev_flow_player_open(void);
dev_flow_player_open();//启动IIS接收播放
void dev_flow_player_close(void);
dev_flow_player_close();//停止IIS接收播放
涉及修改文件:
JL708N 可视化 TWS耳机 IIS 从机输入模式 demo
jl708n_tws_earphone_iis_demo.zip
其他文档
iis tx rx说明文档.otl
公版实现IIS_RX,IIS_TX修改方案.otl
jl701n_soundbox_release_v1.4.2 IIS 输入 + ADC MIC 混响 + DAC 输出
jl701n_soundbox_release_v1.4.2_iis_input_with_mic_effect.zip
FAQ
当IIS作为主机时候,如何关闭 MCLK 时钟? int alink_init(ALINK_PARM *parm)文件中会 使能 MCLK 时钟,把对应的代码注释掉即可
当IIS作为主机时候,如何在关闭iis音频流时保持clk的输出 JLStudio sdk 确保截图中黄色标记处理的逻辑处理即可

DAC配置4声道+IIS 输出后,声音输出会变音 原因:IIS输出只有立体声。4声道的数据输入到IIS 立体声处理流程中,会导致数据翻倍,声音会变慢。
处理如下:添加一个缓存buff存放立体声的数据。(大小根据实际需要)
s16 data_temp[4096];
- 把四声道数据转为立体声数据输入到IIS中
int pcm_data_deal(void *priv, struct audio_data_frame *in)
{
s16 *f_lr=in->data;
s16 tmp_l,tmp_r;
u16 rlen;
//printf("%d\n",in->offset);
if(in->channel == 2){
rlen = in->data_len>>2;
if(in->offset==0){
for(u16 i=0; i<rlen; i++) ///lrlrlr......
{
tmp_l = f_lr[i*2];
tmp_r = f_lr[i*2+1];
f_lr[i*2] = 0;
f_lr[i*2+1] = tmp_l;
}
}
}else if(in->channel == 4){
rlen = in->data_len>>3;
if(in->offset==0){
for(u16 i=0; i<rlen; i++) ///lrlrlr......
{
data_temp[i*2] = f_lr[i*4];
data_temp[i*2+1] = f_lr[i*4+1];
}
}
}
return in->data_len;
}
SDK\cpu\br23\audio_common\audio_iis.c 4. 手机打开音量同步时候会出现设置音量声音大小没有变化
- 输出方式设置为AUDIO_OUTPUT_WAY_DAC_IIS情况下


- IIS输入时候会出现没有声音情况,首先先检查引脚接线、采样率、主从机、数据采样沿是否配置正确



- IIS输入输出如何兼容24BIT功放或数据 IIS本身就带有上下兼容数据的功能,只需要配置64SCLK模式和16BIT即可。具体原因可以看数据分析的64SCLK模式。

- AC700N_earphone_release_V1.3.5 IIS无声修改点


static int esco_decoder_syncts_setup(struct esco_dec_hdl *dec)
{
int err = 0;
#if AUDIO_CODEC_SUPPORT_SYNC
#define ESCO_DELAY_TIME 60
#define ESCO_RECOGNTION_TIME 220
int delay_time = ESCO_DELAY_TIME;
if (get_sniff_out_status()) {
clear_sniff_out_status();
if (ESCO_SIRI_WAKEUP()) {
/*fix : Siri出sniff蓝牙数据到音频通路延迟过长,容易引入同步的问题*/
delay_time = ESCO_RECOGNTION_TIME;
}
}
struct audio_syncts_params params = {0};
int sample_rate = dec->decoder.fmt.sample_rate;
params.nch = dec->decoder.fmt.channel;
params.pcm_device = sound_pcm_sync_device_select();//PCM_INSIDE_DAC;
if (audio_mixer_get_sample_rate(&mixer)) {
params.rout_sample_rate = audio_mixer_get_sample_rate(&mixer);
} else {
params.rout_sample_rate = sample_rate;
}
params.network = AUDIO_NETWORK_BT2_1;
params.rin_sample_rate = sample_rate;
params.priv = dec;
params.factor = TIME_US_FACTOR;
params.output = (int (*)(void *, void *, int))esco_output_after_syncts_filter;
bt_audio_sync_nettime_select(0);//0 - 主机,1 - tws, 2 - BLE
u8 frame_clkn = dec->esco_len >= 60 ? 12 : 6;
dec->ts_handle = esco_audio_timestamp_create(frame_clkn, delay_time, TIME_US_FACTOR);
dec->frame_time = frame_clkn;
audio_syncts_open(&dec->syncts, ¶ms);
if (!err) {
dec->mix_ch_event_params[0] = (u32)&dec->mix_ch;
dec->mix_ch_event_params[1] = (u32)dec->syncts;
audio_mixer_ch_set_event_handler(&dec->mix_ch, (void *)dec->mix_ch_event_params, audio_mix_ch_event_handler);
}
dec->ts_start = 0;
#endif
return err;
}

int sound_pcm_dev_channel_mapping(int ch_num)
{
u8 ch_map = SOUND_CHMAP_MONO;
if(SOUND_PCM_IIS_ENABLE){
if(ch_num == 0){
//
}
if(ch_num == 1){
ch_map = SOUND_CHMAP_MONO;
} else if(ch_num == 2){
ch_map = SOUND_CHMAP_FL | SOUND_CHMAP_FR;
}
audio_iis_pcm_remapping(&iis_hdl,ch_map);
return audio_iis_pcm_channel_num(&iis_hdl);
}
if (SOUND_PCM_DAC_ENABLE) {
ch_map = audio_dac_get_channel(&dac_hdl);
if (ch_map == DAC_OUTPUT_LR) {
return 2;
}
return 1;
}
// if (SOUND_PCM_IIS_ENABLE) {
// if (ch_num == 0) {
// return audio_iis_pcm_channel_num(&iis_hdl);
// }
//
// if (ch_num == 1) {
// ch_map = SOUND_CHMAP_MONO;
// } else if (ch_num == 2) {
// ch_map = SOUND_CHMAP_FL | SOUND_CHMAP_FR;
// }
// audio_iis_pcm_remapping(&iis_hdl, ch_map);
// return audio_iis_pcm_channel_num(&iis_hdl);
// }
return 0;
}
JL701设置IIS的48K输出 配置48K输出需要改PLL时钟为240M
clock_set_pll_target_frequency(240);
AC696AC695的IIS接口定义
AC696的IIS接口定义 AC6966B支持 AC6965E支持

AC695的IIS接口定义 AC6951C支持
AC6956A AC6956C不支持
AC695N_SOUNDBOX_V310 ,IIS通话回音处理 当配置为纯IIS输出方式,因没有将数据上传给回音算法处理中的参数数据通路,导致回音算法不起效,导致有整句的回音,参考以下的SDK处理。其中void audio_aec_refbuf(s16 *buf, u16 len);为参数数据通路
AC695N_soundbox_sdk_release_3.1.0_IIS通话回音处理.zipJL703扩音器iis输入录音 版本:JL703_le_audio_2.0.0(patch01.04)
由于JL703扩音器新增了抑制啸叫的节点,需要iis输入的采样率为16k,如果本地全局采样率设置为48k,iis输入会导致数据出错,变调的情况,详细修改方法如下:
JL703扩音器iis输入录音