跳转至

SGS Audio_debugsop手册

REVISION HISTORY

Revision No.
Description
Date
1.0
  • Initial release
  • 12/16/2024
    1.1
  • Modify keywords
  • 06/10/2025

    问题1. 喇叭播放无声

    图1-1 喇叭播放无声定位思维导图
    流程 方法
    出口条件
    下一步
    需提供给SWRD的资料
    相关可参考FAQ
    A 播放过程中使用万用表确认AUDIO的AUDD18_AUD是否为1.8V 出口条件1:
    1.播放阶段AUDD18_AUD 电压与1.8V相差较大
    出口条件2:
    2.播放阶段AUDD18_AUD 稳定在1.8V左右
    出口条件1:
    >外部供电存在问题,寻求CAE帮助。
    出口条件2:
    >外部供电正常 ==>B
    B 确认AMP pad 的padmux设定是否和板子可以对应(evb 原理图上的amp pad 和padmux.dtis 里面的amp pad 是否对的上) 出口条件1:
    1.pad 无误
    出口条件2:
    2.pad 和板子对应不上
    出口条件1:
    >C
    出口条件2:
    >请自行修改padmux.dtsi 里面的amp pad
    C 在播放过程中用电压表确认AMP pad 是否正常拉高拉低
    出口条件1:
    1.可以正常拉高拉低
    出口条件2:
    2. 无法拉高拉低
    出口条件1:
    >D
    出口条件2:
    走线异常
    >请找CAE协助排查
    D 确认客户板子AMP PAD 拉高还是拉低使能 出口条件1:
    1.拉高使能
    出口条件2:
    2.拉低使能
    出口条件1:
    >E
    出口条件2:
    > 修改对应板子的dtsi sound 节点node:amp-pad里面的参数1改成0 表示低电平使能
    E 播放过程,启用RDMA Singen 确认是否可以出声
    echo singen [SinGen Index][Enable] > /proc/mi_modules/mi_ao/mi_aox
    SinGen 0: Device0.
    SinGen 1: Device1.
    SinGen 2: Device2.
    SinGen 3: Device3.
    举例:echo singen 0 1 > /proc/mi_modules/mi_ai/mi_ai0,打开Device0的singen
    出口条件1:
    1.可以出声
    出口条件2:
    2.不可以出声
    出口条件1:
    >H
    出口条件2:
    >F
    F Cat mi proc info 确认是否mute 或者gain 值设定太小 出口条件1:
    1.存在描述问题
    出口条件2:
    2. 不存在描述问题
    出口条件1:
    ==> 和客户确认设定
    出口条件2:
    ==> G
    G 播放过程,启用RDMA Singen的情况下用示波器抓lineout输出 出口条件1:
    1.lineout 有信号
    出口条件2:
    2.lineout 无信号
    出口条件1:
    >找CAE协助确认是否功放问题
    出口条件2:
    >在确认示波器是抓芯片端输出也没有信号的情况下,找SWRD协助
    是否公版复现,环境搭建方法
    H Dump user data 确认写入数据是否正常 出口条件1:
    dump 数据正常
    出口条件2:
    dump 数据异常
    出口条件1:
    > 找SW RD 协助
    出口条件2:
    > 排查客户app 问题
    确认是否公版复现,复现问题的环境,和复现问题的方法


    问题2. AMIC录音没有数据

    图2-1 AMIC录音没有数据定位思维导图
    流程 方法
    出口条件
    下一步
    需提供给SWRD的资料
    相关可参考FAQ
    A 录音的时候打开 Amic Sinegen确认是否可以录到正选波(Singen启用方法参考MI_AI文档) 出口条件1:
    1.录不到声音
    出口条件2:
    2. 可以录到声音
    出口条件1:
    大概率是软件问题软件排查==>C
    出口条件2:大概率是硬件问题硬件排查==>B
    B 找CAE确认硬件问题,包括Audio1.8V供电,AMIC bias偏置,以及AMIC接线位置,等硬件相关问题
    出口条件1:
    1.硬件确认无问题
    出口条件2:
    2.硬件发现到问题
    出口条件1:
    ==>D
    出口条件2:
    CAE协助
    C Cat mi proc info 确认 AI interface 是否mute 出口条件1:
    1.无mute
    出口条件2:
    2. 有mute
    出口条件1:
    ==> 找SW RD分析
    出口条件2:
    排查客户APP 设定
    确认是否公版复现,复现问题的环境,和复现问题的方法


    问题3. I2S Codec 适配问题

    图3-1 I2S Codec 适配异常定位思维导图
    流程 方法
    出口条件
    下一步
    需提供给SWRD的资料
    相关可参考FAQ
    A 确认AUDIO I2S PAD的padmux配置是否和与开发板对应,pad是否与其他mode有冲突方法:
    cd
    vim arch/arm/boot/dts/xxx_xxxx-padmux.dtsi
    查找I2S PAD是否有被切为MDRV_PUSE_I2S0_XX_XXX mode,并使用IO_Check Tool 检查是否设置mode成功(./io_check_xxx PinID)
    出口条件1:
    1.padmux未正确配置或者存在与其他mode冲突情况
    出口条件2:
    2.I2S PAD配置正常
    出口条件1:
    >协助客户修改padmux设定
    出口条件2:
    > B
    B 跑mi_demo prog_audio_audio 对应的i2S case 使用示波器抓Tx or Rx 的信号 出口条件1:
    可以抓到正常的tx rx clk data 信号
    出口条件2:
    抓不到信号,或者信号异常
    出口条件1:
    >C
    出口条件2:
    > 找CAE确认pad走线问题,和干扰问题
    C 确认芯片端I2S mode format 等格式是否符合客户codec,参考MI API 文档 出口条件1:
    格式正常
    出口条件2:
    格式异常
    出口条件1:
    >D
    出口条件2:
    >协助客户修改I2S 格式
    D 确认与codec 接入的线序是否正确,是否有共地
    6wire mode 下:
    TX_BCK<>RX_BCK
    TX_WCK<
    >RX_WCK
    TX_SDO<>RX_SDI
    PS:codec 的LRCK 就是WCK
    4wire mode 下:
    RX_BCK<
    >RX_BCK
    RX_WCK<>RX_WCK
    RX_SDI<
    >TX_SD0
    TX_SD0<==>RX_SDI
    出口条件1:
    线序正常,有共地
    出口条件2:
    线序异常,没有共地
    出口条件1:
    ==> E
    出口条件2:
    ==>协助客户确认线序问题
    E 确认选择pad的电压域 1.8V/3.3V 是否和客户codec 匹配 出口条件1:
    电压匹配
    出口条件2:
    电压不匹配
    出口条件1:
    ==> 整理客户codec的信息,Tx Rx 的波形信号,找SW RD 协助排查
    出口条件2:找CAE 确认切换对应pad电压域的方法


    问题4. DMIC 无法正常工作问题

    图4-1 DMIC 无法正常工作问题定位思维导图
    流程 方法
    出口条件
    下一步
    需提供给SWRD的资料
    相关可参考FAQ
    A 确认AUDIO DMIC PAD的padmux配置是否和与开发板对应,pad是否与其他mode有冲突方法:
    cd
    vim arch/arm/boot/dts/xxx_xxxx-padmux.dtsi
    查找DMIC PAD是否有被切为MDRV_PUSE_DMIC0_XX mode,并使用IO_Check Tool 检查是否设置mode成功(./io_check_xxx PinID)
    出口条件1:
    >padmux未正确配置或者存在与其他mode冲突情况
    出口条件2:
    >DMIC PAD配置正常
    出口条件1:
    >协助客户确认padmux 问题
    出口条件2:
    > B
    B 跑prog_audio_audio dmic demo 抓DMIC BCK 和DMIC data
    出口条件1:
    1.BCK 2.4M Data 也有数据
    出口条件2:
    无BCK 无Data
    出口条件3:
    有bck 无data
    出口条件1:
    ==>C
    出口条件2:
    找CAE 确认走线是否存在问题
    出口条件3:
    找CAE 确认DMIC 是否坏了
    C 确认线序是否正确
    DMIC 线序相对简单,主要是CLK data 电源和地
    出口条件1:
    线序正确
    出口条件2:
    线序错误
    出口条件1:
    ==>D
    出口条件2:
    协助客户理清线序
    D 确认DMIC 硬件是3.3V 还是1.8V,并且确认当前选择的pad 是3.3V 还是1.8V,电压需要匹配 出口条件1:
    1.电压匹配
    出口条件2:
    2. 电压不匹配
    出口条件1:
    > 整理复现问题的环境,客户dmic spec 是否可以在公版复现问题,找SW RD 协助
    出口条件2:
    > 找CAE 确认电压域调整的方法
    客户DMIC spec
    公版复现环境


    问题5. AI interface 已知问题faq

    5.1 AI 取不到数据问题

    根据具体场景抓取device的proc信息,查看当前buf的配置和使用情况。 cat /proc/mi_modules/mi_ai/mi_aix

    确认output buf的配置情况。usrDepth和BufCntQuota,分别代表app能拿到的buf数目和总的buf数目,检查usrDepth和BufCntQuota是否被设置为0。

    确认app拿buf的情况。usrLockedCnt表示APP拿着没有释放的buf数量,若usrLockedCnt和usrDepth相等,则表示app已经把所有能拿的output buf都抓在手里了。

    5.2. Buf间隔不稳定(丢 Buf)

    根据具体场景抓取device的proc信息,查看当前buf的配置和使用情况。 cat /proc/mi_modules/mi_ai/mi_aix

    • 确认output buf的配置情况。usrDepth和BufCntQuota,分别代表app能拿到的buf数目和总的buf数目,检查usrDepth和BufCntQuota是否过小,导致app拿buf会影响AI线程正常运转。
    • 如果buf足够,但GetFrame/Ms和FPS明显小于预期,则整理信息联系audio owner。

    5.3. 声音爆掉但采样值正常

    此问题常见于Amic和Dmic这两种interface。这两种interface通路上有interface gain以及Dpga gain。常见情况是interface gain设置太大已经爆掉了,然后又通过Dpga gain做衰减,导致采样值又落回了正常范围内。

    5.4 AMIC pop noise 问题

    问题原因:ADC的参考电容需要充电到0.9V,在电容没有充满之前使用adc 录音会录到杂讯也就是pop noise

    解决办法:

    • ifackel 之后的芯片,增加了电容快速充电的设计,默认代码下会延时50ms 所以没有这个问题

    • ifackel 之前的芯片,需要在dtsi 里面把keep adc on 打开,通过增加一定功耗来解决这个问题

    • 快起场景下很在乎时间,所以不希望延时,需要在IPL 里面打开 SGS_BACH SGS_BACH_FAST_BOOT 通过将ADC参考电容在IPL里面就打开充电来解决问题

    5.5. DMIC pop noise 问题

    问题原因有两个:

    1. DMIC 硬件在接收到BCK 之后并不能马上给出有效的data,通常需要10ms 左右才能输出有效data 这部分异常data 会被IC 接收累加到一个异常值 导致pop noise
    2. 很多DMIC 硬件 存在DC 偏置 IC 内部的hpf 模块可以将DC 偏置拉回到中值,但是过程需要时间,偏置的存在也会导致pop noise

    解决办法:

    • dtsi sound 节点增加 dmic-delay = <80> 字段; 参数80 表示delay 的时间,通过延时80ms 的时间来规避掉pop noise 问题

    问题6. AO interface 已知问题faq

    6.1 DAC pop noise 问题

    问题原因有两个:

    1. DAC 打开的瞬间的电压变化
    2. DAC 参考电容需要时间充电,在没有充满电的时候打开DAC 也会声音异常

    解决办法:

    • ifackel 之后的芯片,增加了电容快速充电的设计,通过延时50ms来等待电容充电完成,同时也避免了DAC 打开的电压变化,之后再打开amp pad ,通过amp mute 来解决DAC pop noise 问题

    • ifackel 之前的芯片,需要再dtsi 里面把keep dac on 打开,通过增加一定功耗来解决这个问题

    问题7. Speak 功放放大倍速调整到9倍下的噪声问题

    问题背景:Pcupid IO 是1.8V的客户为了满足预期的输出功率,将功放的倍率调整到9倍;然后在程序运行过程中可以听到喇叭播放出杂讯。这个时候audio 没有启用。只是使能了功放。

    问题原因:当cpu loading 较打的时候,芯片内部的电流噪声会从gnd串到功放,当功放启用的时候就会听到杂讯。

    问题的解决办法: 这种问题只能通过使用差分的功放来解决gnd的噪声,差分功放由于输入的两端信号,都带有噪声,经过差分处理就可以将噪声减掉了。另外需要请CAE 将Audio 的AUD_VRM 这个pad 接地改为和功放一样的相对干净的gnd 上