单片机/MCU论坛
登录
直播中
疯壳科技
7年用户
1201经验值
擅长:嵌入式技术
私信
关注
[资料]
【开发教程6】手把手教你做平板电脑-音频驱动实验教程
嵌入式开发
平板电脑
音频
驱动实验
教程
音频驱动实验教程
——疯壳·嵌入式平板开发
图1
如上图是音频模块 codec 和 cpu 连接框图,主要由三部分组成:
I2C 总线 - cpu 通过它实现对 Codec 寄存器数据的读写。
I2S 总线 - 实现音频数据在 CPU 和 Codec 间的
通信
。
HP_DEC - 实现检测是否有 HeadSet 设备插入。
第二节 linux workqueue 工作原理
音频子系统的源代码中用到了一个概念:workqueue。对于不了解的朋友,读代码可能会引起疑惑,所以这里做一个简单介绍。Linux 中的 Workqueue 机制就是为了简化内核线程的创建,只是通过调用 workqueue 的接口就能创建内核线程;并且可以根据当前系统 CPU 的个数创建线程的数量,使得线程处理的事务能够并行化;workqueue 是内核中实现简单而有效的机制,它显然简化了内核 Daemon 的创建,方便了用户的编程。工作队列(workqueue) 是另外一种将工作推后执行的形式。它把工作推后,交由一个内核线程去执行,也就是说, 这个下半部分可以在进程上下文中执行。最重要的就是工作队列允许被重新调度甚至是睡眠。 举个栗子:
代码1
第三节
电路
原理图介绍
下图来源于文档 3128_sdk_a02_20170325.pdf 中第 18 页。
图一、绿色框中是 codec 芯片自己检测是否有 HeadSet 设备插入的电路原理图,它是通过 HP_HOOK(HP_HOOK 和 HP_DEC 是连在一条线上)与 cpu 的 ADC_IN0 连接,这个有点类似于 AD 按键检测的功能;音频 Codec 模块是数据与控制分开的,所以有 I2c 来控制 Codec 的寄存器的读写,数据通过 I2s 总线进行传输。
图2
第四节 音频驱动代码结构
代码2
第五节 dts 文件讲解
代码3
HeadSet 配置文件
代码4
I2c 配置文件
代码5
I2s 配置文件
rockchip-rt3224 {
代码6
第六节 实验代码
1.HeadSet 检测
原理类似于一个 ad 按键的功能。
注意:这里如果要测试这个功能必须在 codec 中设置一个值:
codec_hp_det = <0>; ===> codec_hp_det = <1>;
增加两条测试信息到如下代码中。
代码7
耳机检测状态的调试:
cat sys/class/switch/h2w/state 0:无耳机插入
1:带Mic 耳机插入(四段耳机)
2:不带 Mic 耳机插入(三段耳机)
2.测试命令 amix
用 amix 命令来调节音量
amix 11 0
amix 11 120
如需定制开发,请通过官网“疯壳”网页底部的“联系我们”进行联系
文件下载请点击:
6、音频驱动实验教程.pdf
(507.76 KB)
(下载次数: 0, 2022-8-15 15:05 上传)
更多回帖
rotate(-90deg);
回复
相关帖子
嵌入式开发
平板电脑
音频
驱动实验
教程
【
开发
教程7】
手把手
教你做
平板
电脑
-Camera
驱动
实验
教程
2022-08-16
3193
手把手
教你
学stm32
2021-08-09
1893
手把手
教你
学CAN总线 来清民
2018-04-08
12926
【汇总篇】小草
手把手
教你
LabVIEW 串口仪器控制
2015-02-04
215992
《
手把手
教你
学CPLD/FPGA与单片机联合设计》-周兴华
2015-01-06
4414
《
手把手
教你
学CPLD/FPGA与单片机联合设计》-周兴华
2014-12-29
7636
手把手
教你
使用QUARTUS
2013-12-29
7235
原创
手把手
教你
学习FPGA视频教程,不看后悔哟
2013-08-14
31290
手把手
教你
学VC
2012-08-20
5705
牛人
手把手
教你做
高压火花间隙特斯拉线圈
2012-08-15
66272
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分