基于i.MX6的SoM板WM8731配置正确却无法识别,求排查建议
音频芯片WM8731在i.MX6核心板上的复位失败问题排查
设备配置信息
使用搭载WM8731音频芯片的i.MX6核心板(SoM),已完成设备树配置,内容如下:
sound { compatible = "fsl,imx-audio-wm8731"; model = "wm8731-audio"; cpu-dai = <&sai2>; audio-codec = <&codec>; audio-routing = "Headphone Jack", "LHPOUT", "Headphone Jack", "RHPOUT", "LLINEIN", "Line Jack", "RLINEIN", "Line Jack"; }; &i2c2 { clock_frequency = <100000>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c2>; status = "okay"; codec: wm8731@1a { compatible = "wlf,wm8731"; /* codec audio */ reg = <0x1a>; clocks = <&clks IMX6UL_CLK_SAI2>; clock-names = "mclk"; }; /* fine codec: wm8731@1a */
同时已在menuconfig中启用对应音频模块。
启动错误日志
启动时出现如下错误:
wm8731 1-001a: Failed to issue reset: -5 wm8731 1-001a: ASoC: failed to probe component -5 imx-wm8731 sound: ASoC: failed to instantiate card -5 imx-wm8731 sound: snd_soc_register_card failed (-5) imx-wm8731: probe of sound failed with error -5
异常现象说明
现有两块同型号SoM板,一块正常工作,另一块出现上述错误。初步怀疑硬件问题,但将故障板换到其他载板上却能正常发声。所有板卡使用相同的U-Boot、SPL、dtb文件及zImage。
排查建议
- 检查故障板当前搭配的载板I2C2总线信号:用示波器测量SDA、SCL引脚的电平、波形,排查是否存在信号干扰、电平异常(如上拉电阻虚焊、阻值不符),错误码-5为EIO(输入输出错误),大概率是I2C通信交互异常导致。
- 核对载板I2C2引脚定义:确认故障载板与正常工作载板的I2C2引脚连接是否完全一致,排查是否存在引脚复用冲突(如某引脚同时被用作其他功能,导致I2C信号异常)。
- 测试载板I2C总线挂载能力:在故障载板的I2C2总线上挂载一个已知正常的I2C设备(如EEPROM),尝试读写操作,判断是载板I2C总线本身问题,还是与WM8731的匹配问题。
- 检查WM8731的MCLK时钟:用示波器测量故障载板上WM8731的MCLK引脚,确认时钟频率、幅值是否正常输出,WM8731复位依赖正常时钟,时钟异常会导致复位失败。
- 排查载板电源供电:检查故障载板给WM8731提供的VDD、AVDD等电源引脚电压是否正常,排查电源纹波过大的情况,不稳定的供电会导致芯片无法正常响应复位指令。
- 调试I2C时钟频率:临时修改设备树中I2C2的
clock_frequency值(如从100000降至50000),尝试重新启动,排除I2C速率不匹配的问题。
内容的提问来源于stack exchange,提问作者LittleSaints
相关产品推荐
相关产品推荐

