完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
音频驱动实验教程 ——疯壳·嵌入式平板开发 图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
)
|
|
|
|
205 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1253 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
848 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
853 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1073 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12013 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 04:14 , Processed in 1.047875 second(s), Total 34, Slave 25 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号