查看: 779|回复: 0

【疯壳·嵌入式平板电脑开发教程6】音频驱动实验教程

[复制链接]
  • TA的每日心情
    开心
    2022-4-17 15:37
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2022-8-25 17:25:16 | 显示全部楼层 |阅读模式
    分享到:
    音频驱动实验教程
    ——疯壳·嵌入式平板开发




       1.png
       图1
        如上图是音频模块 codec 和 cpu 连接框图,主要由三部分组成:
        I2C 总线 - cpu 通过它实现对 Codec 寄存器数据的读写。
        I2S 总线 - 实现音频数据在 CPU 和 Codec 间的通信。
        HP_DEC - 实现检测是否有 HeadSet 设备插入。

        第二节 linux workqueue 工作原理
        音频子系统的源代码中用到了一个概念:workqueue。对于不了解的朋友,读代码可能会引起疑惑,所以这里做一个简单介绍。Linux 中的 Workqueue 机制就是为了简化内核线程的创建,只是通过调用 workqueue 的接口就能创建内核线程;并且可以根据当前系统 CPU 的个数创建线程的数量,使得线程处理的事务能够并行化;workqueue 是内核中实现简单而有效的机制,它显然简化了内核 Daemon 的创建,方便了用户的编程。工作队列(workqueue) 是另外一种将工作推后执行的形式。它把工作推后,交由一个内核线程去执行,也就是说,   这个下半部分可以在进程上下文中执行。最重要的就是工作队列允许被重新调度甚至是睡眠。  举个栗子:

    代码1.0.png
    代码1.1.png    
        代码1

        第三节 电路原理图介绍
        下图来源于文档 3128_sdk_a02_20170325.pdf 中第 18 页。
        图一、绿色框中是 codec 芯片自己检测是否有 HeadSet 设备插入的电路原理图,它是通过 HP_HOOK(HP_HOOK 和 HP_DEC 是连在一条线上)与 cpu 的 ADC_IN0 连接,这个有点类似于 AD 按键检测的功能;音频 Codec 模块是数据与控制分开的,所以有 I2c 来控制 Codec 的寄存器的读写,数据通过 I2s 总线进行传输。

        2.png
        图2

        第四节 音频驱动代码结构

    代码2.png   
        代码2

        第五节 dts 文件讲解

        代码3.0.png
    代码3.1.png
        代码3

        HeadSet 配置文件

    代码4.png
        代码4

        I2c 配置文件

    代码5.png    
        代码5
        I2s 配置文件
        rockchip-rt3224 {

    代码6.0.png
    代码6.1.png
    代码6.2.png    
        代码6

        第六节 实验代码
        1.HeadSet 检测
        原理类似于一个 ad 按键的功能。
        注意:这里如果要测试这个功能必须在 codec 中设置一个值:
        codec_hp_det = <0>; ===> codec_hp_det = <1>;
        增加两条测试信息到如下代码中。

    代码7.png    
        代码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)
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-5-15 21:58 , Processed in 0.153412 second(s), 19 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.