KDocs 研发资料库
  • 音频技术应用文档入口汇总
  • 杰理WINDOWS环境安装及其他事项
  • LINUX安装和编译
  • Linux环境编译SDK教程(ubuntu18.04)
  • 音频类补丁汇总表
  • 认证资料获取汇总(最新资料后台会更新)
  • 《Hi-Res申请指南v1.0》
  • FreeRTOS 开源协议版本
  • uCOS 开源协议版本信息
  • 各个模块关键资料汇总
  • 软件调试方法
  • Makefile编译
  • 提bug的规范
  • 常规设备使用指导
  • 对外特别发布开发注意点信息汇总
  • AD697X软件问题整理
  • AC700N软件问题整理
  • AC701X耳机软件问题整理
  • 951&961软件问题整理
  • AC104X软件问题整理
  • AC128N问题整理文档
  • 可视化工具调试问题整理
  • 耳机资料汇总
  • AC704N、 AC705N相关应用
  • AC695N&AC696N&AC608N音箱问题整理
  • JL701N音箱问题整理
  • AC692X软件问题整理
  • AC706N音箱问题整理
  • JL701N音箱问题整理(可视化工具SDK)
  • JL703N音箱问题整理
  • JL709N(JL689N)音箱问题整理
  • JL7094系列-入门到进阶开发指导
  • AC210N音箱问题整理
  • 无线麦系列版本支持指南
  • AW32N无线麦问题整理
  • lAD697X&JL701X 无线麦软件共性问题整理
  • AC706N无线麦问题整理
  • AW36N无线麦问题整理
  • AC710X无线麦问题整理
  • 唤醒源获取及唤醒IO设置
  • 电源
  • LVD
  • 长按复位配置方法
  • 低功耗应用
  • TIMER
  • UART
  • SPI
  • 内部FLASH空间添加用户自定义区域
  • IIC
  • GPIO
  • MCPWM
  • SD&U盘
  • 时钟&晶振
  • GPCNT
  • IO口crossbar映射功能
  • 文件系统使用总结
  • 复用应用
  • LINEIN_AUX相关应用
  • IIS音频接口应用
  • SPDIF模式相关(HDMI_ARC、光纤、同轴)
  • PDM LINK
  • 外设相关应用
  • 蓝牙相关
  • 杰理蓝牙距离调试文档
  • TWS耳机配对方式使用及生产把控指南
  • GFP谷歌快连及其认证流程指引
  • 蓝牙发射器(bt_emitter)相关
  • BLE应用
  • 关于提升BLE传输速率说明
  • BLE测试数据
  • MUSIC 模式相关应用
  • MIDI音乐实现
  • PC相关应用
  • FM相关应用
  • AC695N_AC696N FM天线ESD静电防护措施说明V2.0_20250107
  • fm应用详细设计说明书
  • 杰理FM硬件指南-20230315
  • ADC模块
  • AUDIO相关应用
  • 新Tools的音效调试使用
  • 混响应用使用说明
  • 音效调式
  • 音箱耳机低音小音量增强实现方法
  • DAC输出功率调试
  • DAC性能测试指南
  • 针对各类底噪、电流声分析流程
  • 录音相关应用
  • OPUS编解码相关
  • RTC相关应用
  • 升级相关
  • UI相关应用
  • 通话调试流程指南
  • 通话相关应用
  • 省电容mic使用手册
  • 如何测试验证手表通话系统的语音失真 V1.0
  • AC695X_AC696X_AD697X 常见通话问题处理参考资料
  • 通话调试问题确定步骤
  • 内置触摸调试指南
  • 低功耗内置触摸介绍V2.2
  • 触摸相关文档
  • AC697X、AC698X内置触摸调试及整改方法V1.0
  • 产测相关应用
  • AC63X BLE DUT测试介绍
  • 兆华序列使用简易说明
  • JL_1T2蓝牙测试盒音频文件更换说明
  • ENC相关应用入口汇总
  • ANC相关应用入口汇总
  • JL DMS通话调试手册-V3.9.4
  • ANC-ENC结构设计要点-20240407
  • 半入耳式ANC耳机器件选型与结构设计指南V1.0
  • JL 耳道自适应调试指南
  • ANC相关问题处理
  • ANC调试文档
  • 评估蓝牙耳机通话上行降噪性能的方法 V1.0 (2)
  • FCC 或者 BQB 认证相关应用
  • BQB profile 测试中常遇到的问题点汇总
  • 蓝牙参数整理20210811
  • 杰理科技认证问题参考
  • 无线音频产品开发指南
  • 无线麦系列从入门到进阶开发指导
  • 量产烧录相关说明
  • 一拖八烧录器远程过程调用说明
  • 量产相关建议
  • EffectTool(eq)调试工具说明文档
  • AC897AD697系列的EQ调试方法-V3
  • 杰理调音指南-20220622
  • 音效模块总结
  • 简要调音步骤指引(可视化)
  • 耳机充电与通信调试指南
  • 充电仓硬件调试指南
  • 充电仓软件问题整理
  • AC951常用说明
  • AC951_AC961_开发板使用说明V1.0
  • 彩屏仓AC982 入门指导及FAQ
  • 蓝牙音频APP相关应用
  • 手机APP的简介和开发流程
  • 蓝牙音频系列-硬件设计指南
  • 静电测试及整改方法-20220706
  • TWS耳机底噪整改指南V1.2
  • 杰理蓝牙距离调试文档
  • 蓝牙RF硬件设计与调试V1.1-20250219
  • AC695N_AC696N FM天线ESD静电防护措施说明V2.0_20241228
  • 音效调试指南
  • 无线话筒K歌音箱标准开发流程
  • 杰理科技 700N TWS耳机产品标准-202303
  • 杰理科技 701N 广播产品标准-202303
  • JL-HAT ANC高效产测自适应
  • 无线话筒测试板使用介绍
  • 一拖八频偏校准使用说明
  • 领夹麦产测工具使用介绍
  • Dongle量产测试说明
  • Dongle+Tws或头戴式 SDK通过工具绑定配对功能说明文档
  • 双麦ENC产测宏配置验证方法 V1.0
  • JL耳机方案麦克风声学测试指令_V1.0
  • JL耳机方案麦克风声学测试指令_V2.0
  • JL_ENC自动测试命令_V0.0.1
  • JL蓝牙测试盒用例说明
  • LDAC自测环境搭建_ubuntu
  • 延迟小板使用手册
  • 杰理库文件的制作及添加实现过程
  • 关于 AC635N&AC636N系列免晶振兼容性补丁 说明
  • 关于 AC63系列VM兼容性修复补丁_20250224 说明
  • 关于 AC632N &AE632N_ 蓝牙& 低功耗兼容性修复补丁 说明
  • AD698N和AC638N电压优化补丁V3说明
  • 关于 AC635N&AC636N漏电和E&G版兼容联合补丁 说明
  • AD698N和AC638N电压优化补丁V2说明
  • 702相关应用
  • 2024-4-30 发布歌词显示SDK开发注意事项
  • BQB RF & FCC 认证测试固件问题汇总及源码
  • BQB profile 测试中常遇到的问题点汇总
  • 进dut测试模式方法及固件
  • 704-频偏修改bin文件合集
  • 701手表BQB PROFILE认证注意事项
  • 认证的干扰规避整改
  • 海外CRA认证报告生成说明
  • JL700N可视化工具问题处理文档
  • JL701X可视化工具问题处理文档
  • JL701N_earphone_release_v1.6.0_ANC 低功耗问题补丁
  • JL708X可视化工具问题处理文档
  • JL709N可视化工具问题处理文档
  • JLstudio可视化工具使用说明
  • 一拖二-串口_蓝牙_app在线EQ、通话参数及调试方式和内置触摸调试
  • 可视化JL701M_DONGLE_SDK添加MIC为发射源
  • 可视化JL701M_DONGLE_SDK添加按键切换usb audio与MIC发射源
  • JL701M_DONGLE_SDK_1.0.0_dongle输入linein输出dac
  • 701可视化_a2dp_to_le_demo说明
  • 耳机系列demo汇总
  • JL7018F&JL7006F_7003F AUX IIS
  • 一键连接应用
  • 普通SDK动态开关一拖二功能
  • 蓝牙分析仪(EllisysBluetoothAnalyzer)抓包例程
  • TWS配对常见应用
  • APP自定义按键的demo
  • AC700N 播歌双EQ DEMO示例及说明
  • AC698V164 MIC与蓝牙音乐共同输出DAC demo
  • 添加第三方算法以及多算法授权流程
  • 空间音频配置方法
  • 普通高低电平TWS耳机控制通讯
  • 入耳检测状态更新demo解析
  • 资源优化(非可视化的SDK)
  • 资源优化(可视化SDK)
  • 翻译耳机、语音识别应用demo
  • 耳机抗干扰问题排查和优化
  • AC698D2 抗干扰优化
  • AC696X软件问题整理
  • AC695X软件问题整理
  • AC695X软件问题整理_1722249702
  • AC608X软件问题整理
  • JL701N_2T1_DUPLEX 应用软件问题汇总
  • le_audio_1.0.0_patch05 以及之前的版本IRkey 功能异常修改
  • AC706N-le_audio-200SDK有线_无线麦录音demo
  • jl701n_le_audio_v200patch02 IO串口升级修改串口单次发送字节长度的修改办法
  • 703创建IIS 输入dac输出音频流demo
  • 703将媒体流音频同时上传PC_mic录音demo实现
  • 703四路IIS输入输出demo
  • 底噪调试
  • AW328A烧录说明
  • 文档合集
  • AC706N_wireless_mic_release_PATCH_20240712 补丁 说明
  • AC706N_wireless_mic_release_PATCH_20240726 补丁 说明
  • AC706N_wireless_mic_release_V1.0.0、1.0.1、1.0.2 补丁 说明
  • AC706N_wireless_mic_release_V1.1.2 中的2T1应用 RX端不绑定配对,TX端实现绑定配对的修改方法
  • 各系列省晶振实现方法
  • iis tx rx说明文档
  • spdif信号
  • 蓝牙电话本
  • 安卓手机同步时间补丁
  • CDC配置
  • PC模式下增加Teams唤起功能
  • 杰理HDMIARC开发实现过程
  • AC701N patch06之前的版本用第三方算法节点实现新版本的pcm delay节点功能
  • (K歌音箱)各SDK音效配置相关说明
  • 长文件录音
  • 点阵屏歌词字库相关(蓝牙歌词,普通歌词)
  • 字模提取工具说明
  • 音箱可视化彩屏-入门到进阶开发指导
  • 彩屏LVGL UI设计及工具使用
  • 使用内部UI框架进行UI调试的系列步骤
  • AD101C使用强制升级工具spi 烧录不了问题处理(测试版本)
  • AD161扩展灯板说明文档
  • 歌词显示器开发注意项
  • 使用硬件数字增益控制通话下行音量(可视化)
  • 杰理小牛产测资料
  • ENC配置说明
  • 通话调试流程指引
  • ANC相关功能demo
  • 无线麦硬件资料汇总
  • 无线麦相关应用
  • 无线麦复杂功能补丁包汇总
  • 无线话筒形态SDK程序&开发经验&问题点分享
  • 双模式结合应用问题汇总
  • 无线麦距离优化案例
  • 无线麦系列中的双工形态(duplex)演变开发对讲机方案开发资料
  • 音箱入门到进阶指导文档(编写中)
  • 蓝牙耳机品控和生产技巧
  • 982过_欠压标志获取异常
  • 如何获取最新涂鸦SDK及库文件
  • 无线话筒K歌音响-调音标准流程
  • 无线话筒产测流程

IIS音频接口应用

📎 原始文档:https://www.kdocs.cn/l/ccV9i2fG0gwq IIS音频接口应用
备注:以下部分资料来源于网络,仅供参考

IIS(Inter-IC Sound)是飞利浦推出的数字音频接口标准,专为集成电路间的高质量音频数据传输设计,广泛应用于音频编解码器(CODEC)、微控制器(MCU)、数字信号处理器(DSP)等设备间的音频交互。

一、核心作用

IIS 的核心作用是实现数字音频数据的同步传输,其优势包括:

  1. 分离的时钟与数据线路,减少信号干扰,保证音频质量;
  2. 支持高采样率、高位深度音频传输,满足专业音频需求;
  3. 接口时序简单,硬件实现成本低,兼容性强。

二、接口信号组成

IIS 接口包含 4 路核心信号:
imageimage

  • 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模式

image 该模式下16bitIIS设备和24bit设备都可以共用数据线进行通信。当外部IIS设备为24BIT模式时,芯片一帧数据只会采集16位音频数据位,后面16位数据位丢弃。当芯片作为输出16BIT数据时,外部需要采集24位音频数据位,当其采集完16位音频高位时,后面采集的低八位全部为0,不影响正常输出。

32SCLK模式

image

四、故障排查

IIS(Inter-IC Sound)音频接口的故障通常表现为无音频输出 / 输入、音频失真、杂音、数据传输中断等,排查需从硬件连接、时钟同步、数据格式、软件配置等维度逐步推进,具体步骤如下:

一、初步故障现象定位

  1. 明确故障类型
    • 是 “完全无信号”(如喇叭无声、录音无数据),还是 “信号异常”(如杂音、卡顿、失真)?
    • 是单向故障(仅输出 / 仅输入异常),还是双向故障(输出和输入均异常)?
    • 记录故障出现的场景(如上电即异常、运行中突发、特定采样率下异常等)?

二、硬件连接与物理层排查

核心:排除接线错误、接触不良、电源 / 接地问题

  1. 信号线连接检查
    • 核对 MCLK、LRCLK、SCLK、SDATA 的引脚连接是否与设计一致(主设备输出→从设备输入,避免接反)。
    • 检查 SDATA 方向是否匹配场景:输出时主设备 SDATA 输出→CODEC SDATA 输入;输入时 CODEC SDATA 输出→主设备 SDATA 输入(部分 CODEC 分 SDIN/SDOUT 引脚,需区分)。
    • 排查线路是否松动、虚焊(尤其高频时钟线 MCLK/SCLK,虚焊易导致信号丢失)。
  2. 电源与接地检查
    • 测量 CODEC 和主设备的供电电压(如 3.3V/5V)是否稳定,纹波是否过大(用示波器观察,纹波应 < 100mV)。
    • 确认主设备与 CODEC 共地(GND 连接可靠),避免 “悬浮地” 导致的信号电平参考不一致(表现为杂音或数据错乱)。
  3. 布线干扰排查
    • 检查时钟线(MCLK/LRCLK/SCLK)是否与强干扰源(如电机、开关电源)并行布线,或长度过长)。
    • 确认时钟线与数据线(SDATA)是否保持足够间距(至少 2 倍线宽),避免串扰(串扰会导致数据采样错误,表现为杂音)。

三、时钟信号同步性排查

核心:IIS 依赖严格的时钟同步,时钟异常是最常见故障根源

  1. 时钟频率测量
    • 用示波器测量 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
      image
  2. 时钟波形质量检查
    • 用示波器观察时钟信号的上升沿 / 下降沿是否陡峭(过冲 < 10%,毛刺 < 50mV),避免因线路阻抗不匹配导致的波形畸变(畸变会导致从设备采样错误)。
    • 检查 MCLK 是否稳定(无突然中断或频率跳变),MCLK 丢失会导致 CODEC 内部电路停摆,直接无输出。
  3. 时钟源一致性验证
    • 确认主设备的时钟源(如 PLL、外部晶振)是否稳定,若主设备时钟由软件动态调整,需排查是否存在配置错误(如分频系数计算错误)。
    • 若 CODEC 支持 “内部时钟” 模式,需确认是否误将其配置为 “外部时钟”(或反之),导致时钟源冲突。

四、数据传输与格式排查

核心:验证 SDATA 的数据格式、时序是否与配置一致

  1. 数据格式匹配性检查
    • 核对主设备与 CODEC 的配置是否统一:
      • 位深度(16bit/24bit/32bit)是否一致(如主设备发 24bit 数据,CODEC 配置为 16bit,会导致数据截断或错位);
      • 数据格式(IIS 标准格式 / 左对齐 / 右对齐)是否一致(格式不匹配会导致声道反相或数据错误,表现为杂音);
      • 采样边沿(SCLK 上升沿采样 / 下降沿采样)是否匹配(由 CODEC 数据手册定义,主设备需同步配置)。
  2. SDATA 信号抓取与分析
    • 用逻辑分析仪或示波器同时抓取 SDATA、LRCLK、SCLK 信号,分析:
      • 每个声道的数据是否在 LRCLK 的对应电平周期内传输(如左声道在 LRCLK 高电平,右声道在低电平);
      • 数据位是否与 SCLK 严格同步(1 个 SCLK 周期传输 1bit,高位在前);
      • 有无连续无效数据(全 0 或全 1,可能是主设备未正确发送数据,或 CODEC 未正确接收)。
  3. 单向传输故障细化
    • 若仅输出异常:检查主设备是否正确输出 SDATA(用逻辑分析仪看是否有数据变化),CODEC 的 DAC 模块是否使能(寄存器配置);
    • 若仅录音异常:检查 CODEC 的 ADC 模块是否使能,主设备是否正确配置为 “接收模式”,SDATA 是否有来自 CODEC 的信号。

五、软件配置与初始化排查

核心:排除寄存器配置错误、初始化流程遗漏

六、替换法与极端排查

若以上步骤未解决问题,采用替换法排除硬件故障:

  1. 替换连接线:用已知良好的短线替换现有线路,排除线缆干扰或损坏;
  2. 替换 CODEC:用同型号正常芯片替换,排除 CODEC 硬件损坏(如内部 DAC 故障);
  3. 替换主设备:在开发板上搭建最小系统(如 MCU+CODEC + 喇叭),验证是否为主设备 IIS 控制器故障;
  4. 降低参数测试:尝试降低采样率(如从 192kHz 降至 44.1kHz)、减少位深度(如 32bit→16bit),排查高参数下的时钟稳定性问题。

总结排查优先级

  1. 先查硬件连接与电源;
  2. 再查时钟频率与同步;
  3. 然后查数据格式与软件配;
  4. 最后用替换法排除硬件损。

Br23 - AUDIO IIS

br23 - 指的是 AC695X 系列。  

以下内容均可以在 AC695X用户手册V1.0上阅读到。

  1. Audio IIS接口(以下简称ALNK)是一个通用的双声道音频接口用于连接片外的DAC或ADC,连接信号有 MCLK ,SCLK , LRCK ,DATA。 支持 基本模式 IIS/左对齐/右对齐 ,拓展模式右DSP0/DSP1。
  2. ALNK 具备有4条独立的通道,可以相互独立工作,每条通道都可独立配置为输入或输出,也可配置为不同的连接模式(主从模式),需要注意的是4个通道均共用了MCLK/SCLK/LRCK信号,因此有一定的局限性。 (1)基本模式下只支持双声道立体声。
    (2)4条通道只能同时工作于基本模式,或同时工作于拓展模式,不支持混合模式。
  3. br 23 -AC695X 中包含两个完全相同的 audio link 模块(ALNK0 和 ALNK1互相独立) 下表为 ALNK0 和 ALNK1 使用的IO端口列表:
ALNK0信号名称占用的IO端口
ALINK0_IOS=0ALINK0_IOS=1
MCLKPA8PA15
SCLKPA2PA9
LRCKPA3PA10
CH0DATPA4PA11
CH1DATPA5PA12
CH2DATPA6PA13
CH3DATPA7PA14
ALNK1信号名称占用的IO端口
MCLKPB0
SCLKPC0
LRCKPC1
CH0DATPC2
CH1DATPC3
CH2DATPC4
CH3DATPC5

下表为每路ALNK使用的SFR列表

SFR名称描述
ALNK_CON0ALNK控制寄存器0
ALNK_CON1ALNK控制寄存器1
ALNK_CON2ALNK控制寄存器2
ALNK_CON3ALNK控制寄存器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的功能
image

代码示例:

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
image

AC695N_soundbox_sdk_release_3.1.0+支持话筒IIS输出

imageAC695N_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

代码下载地址
gitlab地址

AC460X demo:

【金山文档】 46系列IIS驱动说明
46系列IIS驱动说明.pdf

【金山文档】 AC46-IIS-apps(做好IIS 同时输入、输出)
https://kdocs.cn/l/csq3PgQl9x0n

JL701N音箱IIS demo

JL701N音箱问题整理.otl

AC700N耳机最新SDK已支持IIS输出

JL701N耳机IIS demo

【金山文档】 jl701n_earphone_release_v1.3.0_audio_link
https://kdocs.cn/l/cpBTYZy7Igyj

获取IIS输入的数据

imageimageimage

JL701N demo SDK

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

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
修改涉及文件
image

使用说明

修改IIS硬件参数
image

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
};

可选是否使用杰理算法、变采样、同步。
image

#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播放
image

int dev_flow_player_open(void);
dev_flow_player_open();//启动IIS接收播放
void dev_flow_player_close(void);
dev_flow_player_close();//停止IIS接收播放

涉及修改文件:
image

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

  1. 当IIS作为主机时候,如何关闭 MCLK 时钟? int alink_init(ALINK_PARM *parm)文件中会 使能 MCLK 时钟,把对应的代码注释掉即可
    imageimage

  2. 当IIS作为主机时候,如何在关闭iis音频流时保持clk的输出 JLStudio sdk 确保截图中黄色标记处理的逻辑处理即可
    image

  3. DAC配置4声道+IIS 输出后,声音输出会变音 原因:IIS输出只有立体声。4声道的数据输入到IIS 立体声处理流程中,会导致数据翻倍,声音会变慢。
    处理如下:

  4. 添加一个缓存buff存放立体声的数据。(大小根据实际需要)

s16 data_temp[4096];
  1. 把四声道数据转为立体声数据输入到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
image 4. 手机打开音量同步时候会出现设置音量声音大小没有变化

  1. 输出方式设置为AUDIO_OUTPUT_WAY_DAC_IIS情况下 imageimage
  2. IIS输入时候会出现没有声音情况,首先先检查引脚接线、采样率、主从机、数据采样沿是否配置正确 imageimageimage
  3. IIS输入输出如何兼容24BIT功放或数据 IIS本身就带有上下兼容数据的功能,只需要配置64SCLK模式和16BIT即可。具体原因可以看数据分析的64SCLK模式。
    image
  4. AC700N_earphone_release_V1.3.5 IIS无声修改点 image

image

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, &params);
    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;
}

image

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;
}
  1. JL701设置IIS的48K输出 配置48K输出需要改PLL时钟为240M
    clock_set_pll_target_frequency(240);
    image

  2. AC696AC695的IIS接口定义

  3. AC696的IIS接口定义 AC6966B支持 AC6965E支持
    image

  4. AC695的IIS接口定义 AC6951C支持
    AC6956A AC6956C不支持
    image

  5. AC695N_SOUNDBOX_V310 ,IIS通话回音处理 当配置为纯IIS输出方式,因没有将数据上传给回音算法处理中的参数数据通路,导致回音算法不起效,导致有整句的回音,参考以下的SDK处理。其中void audio_aec_refbuf(s16 *buf, u16 len);为参数数据通路
    AC695N_soundbox_sdk_release_3.1.0_IIS通话回音处理.zip

  6. JL703扩音器iis输入录音 版本:JL703_le_audio_2.0.0(patch01.04)
    由于JL703扩音器新增了抑制啸叫的节点,需要iis输入的采样率为16k,如果本地全局采样率设置为48k,iis输入会导致数据出错,变调的情况,详细修改方法如下:
    JL703扩音器iis输入录音

本文档包含以下子页面

  • 46系列IIS驱动说明
  • iis tx rx说明文档
  • 公版实现IIS_RX,IIS_TX修改方案
Prev
LINEIN_AUX相关应用
Next
SPDIF模式相关(HDMI_ARC、光纤、同轴)