当前位置: 首页 > news >正文

T507 音频调试

一、音频系统

ASOC音频系统由Codec Platform 和 Machine组成。单独的Platform和Codec驱动是不能工作的,它必须由Machine驱动把它们结合在一起才能完成整个设备的音频处理工作

1、音频设备

在T5平台中,最多可以存在8个音频设备,分别是:

• daudio0

• daudio1(默认用于HDMI音频播放)

• daudio2

• daudio3

• audiocodec(line out)

• DMIC

• SPDIF

• AHUB

2、硬件框图

二、硬件连接

T507 内置audiocodec模块,audiocodec仅支持Lineout输出。

R_LINE_IN_P和L_LINE_IN_P直接连到了audio的LINEOUTR和LINEOUTL

三、软件配置

1、内核配置

(1) 在内核目录下输入如下命令:

cd kernel/linux-4.9/make ARCH=arm64 menuconfig

(2)使能音频模块

Device Drivers –><*> Sound card support –><*> Advanced Linux Sound Architecture –><*> ALSA for SoC audio support –><*> Allwinner SoC Audio support –>

2、board.dts

/* 内置音频编解码器配置 */
&codec {adcdrc_cfg = <0x00>;       // 关闭ADC DRCadchpf_cfg = <0x00>;       // 关闭ADC高通滤波dacdrc_cfg = <0x00>;       // 关闭DAC DRCdachpf_cfg = <0x00>;       // 关闭DAC高通滤波fmin_gain = <0x03>;        // FM输入增益linein_gain = <0x03>;      // Linein输入增益digital_vol = <0x00>;      // 数字音量(0dB)lineout_vol = <0x1a>;      // Lineout输出音量(0x1a = 26/31)pa_ctl_level = <0x00>;     // PA控制电平pa_msleep_time = <0x78>;   // PA使能延时ramp_func_used = <0x01>;   // 启用音量渐变avcc-supply = <&reg_aldo2>; // 模拟部分供电(1.8V)status = "okay";           // 启用编解码器
};/* 内置编解码器声卡 */
&sndcodec {status = "okay";           // 启用内置编解码器声卡
};/* 关闭不必要的音频接口 */
&ahub_daudio0 {status = "disabled";       // 不需要外部DAI
};&snddaudio0 {status = "disabled";       // 禁用外部DAI声卡
};

3、驱动

sun50iw9-codec.c:目录位于sound/soc/sunxi中,负责audiocodec音频codec的部分,注册为codec,codec_dai模型。

四、测试

查看音频设备:

音频参数配置

配置如下:

播放

aplay -D hw:0,0 /usr/share/alsa/syfs-chenhuilin.wav

问题1:播放声音很小

输出混音器设置中,左声道使用了DACL和LINEINL,右声道使用了DACR和LINEINR。这意味着DAC和LINEIN的信号都被混合到了输出,但 LINEIN 没有输入信号,导致混合后信号弱。但这里我们只希望DAC输出,所以应该关闭LINEIN到输出混音器的开关。

重新配置如下:

播放正常!!!!!

http://www.dtcms.com/a/361114.html

相关文章:

  • 在 Qt 中:QString 好,还是 std::string 好?
  • DVWA靶场通关笔记-Weak Session IDs (Impossible级别)
  • 【Flask】测试平台开发,实现全局邮件发送工具 第十二篇
  • 【SpringBoot】20 - SpringBoot中的Ajax和MyBatis究竟是什么?
  • 【lucene核心】impacts的由来
  • 【Web安全】CRLF注入攻击深度解析:原理、场景与安全测试防御指南
  • hive表不显示列注释column comment的问题解决
  • 【Proteus仿真】蜂鸣器控制系列仿真——蜂鸣器控制/蜂鸣器播放音乐/蜂鸣器播放多种音乐/蜂鸣器和LED组成报警装置
  • UE5 C++ 第三方动态库的使用
  • 【数据库】openGauss 6.0 单机自动化安装最佳实践
  • MTK-Android13-实现拷贝预置资源到vendor分区下
  • Java全栈学习笔记27
  • 深度解析条件编译:#ifdef与#ifndef的本质区别与应用实践
  • Dify中使用SearXNG
  • 子串:滑动窗口最大值
  • Macbook Air M4 笔记本 ChatTTS 初体验
  • 总线矩阵的原理
  • 番外篇 | YOLO-FireAD:通过注意力逆残差模块与双池化模块融合实现高精度火灾检测
  • GitHub CLI (gh) 全面指南:终端中的 GitHub 工作流革命
  • 前端页面性能优化
  • JavaScript 性能优化实战技术
  • 99、23种设计模式之组合模式(8/23)
  • Map + 函数式接口的策略模式
  • 控制系统仿真之PID校正-利用PID控制器、PID调节器实现(九)
  • Coze源码分析-工作空间-项目开发-后端源码
  • Python爬虫实战:研究 Lines, bars and markers 模块,构建电商平台数据采集和分析系统
  • 【软件开发工程师の校招秘籍】
  • nginx-realip问题解决方案
  • AI 智能体架构中的协议设计三部曲:MCP → A2A → AG-UI
  • 基于单片机宠物项圈/宠物防丢失设计