tlv320aic3110在Freescale Mx6q上的调试
来源:互联网 发布:ubuntu删除环境变量 编辑:程序博客网 时间:2024/05/28 17:05
这个芯片调试过程中最主要的是要搞清楚几个芯片的协作状态
CPU与tlv320aic3110的连接有三个,时钟源,I2C控制信号和IIS的数据通路。
tlv320aic3110的时钟源是由CPU提供的
I2C通信传递的是对芯片的控制信号,用于管理芯片的工作状态,音量,耳机状态等
IIS是数据通路,通过DMA的方式传送音频数据。
在数据传送中,DMA是由tlv320aic3110发起的,CPU端的IIS只要配置好,进入数据传输阶段后,会由芯片产生时钟,将CPU端的数据取走,而CPU的任务是准备好IIS的buffer数据,向芯片设置正确的数据位率。因此在SSI的驱动初始化时,需要正确的配置SSI的状态。这里源码中的标识有些怪异,源码所描述的master模式,实际上是芯片为主,CPU为slave,而slave模式下,CPU的SSI控制器才是主。这里的主从是针对芯片的,不是对CPU的,不能搞反了。
在驱动设计的过程中,注意系统中dpm的管理,驱动中会通过set_bias_level来改变芯片的工作状态,通过set_hw_param对播放参数进行设置,因此同时,上层也需要查看必要的状态来完成后续的逻辑,因此,每次的状态变化需要同时改变硬件状态和由上层传来的数据结构。
最后,还有一个耳机的中断处理。耳机中断处理当中,需要改变对应的标志位,才能够让系统知道现在的播放源是什么,这样在界面上才能有正确的提示。同时,也需要发送对应的uevent,让上层知道当前耳机的状态,在收音机等功能工作时才能达到需要的效果
CPU与tlv320aic3110的连接有三个,时钟源,I2C控制信号和IIS的数据通路。
tlv320aic3110的时钟源是由CPU提供的
I2C通信传递的是对芯片的控制信号,用于管理芯片的工作状态,音量,耳机状态等
IIS是数据通路,通过DMA的方式传送音频数据。
在数据传送中,DMA是由tlv320aic3110发起的,CPU端的IIS只要配置好,进入数据传输阶段后,会由芯片产生时钟,将CPU端的数据取走,而CPU的任务是准备好IIS的buffer数据,向芯片设置正确的数据位率。因此在SSI的驱动初始化时,需要正确的配置SSI的状态。这里源码中的标识有些怪异,源码所描述的master模式,实际上是芯片为主,CPU为slave,而slave模式下,CPU的SSI控制器才是主。这里的主从是针对芯片的,不是对CPU的,不能搞反了。
在驱动设计的过程中,注意系统中dpm的管理,驱动中会通过set_bias_level来改变芯片的工作状态,通过set_hw_param对播放参数进行设置,因此同时,上层也需要查看必要的状态来完成后续的逻辑,因此,每次的状态变化需要同时改变硬件状态和由上层传来的数据结构。
最后,还有一个耳机的中断处理。耳机中断处理当中,需要改变对应的标志位,才能够让系统知道现在的播放源是什么,这样在界面上才能有正确的提示。同时,也需要发送对应的uevent,让上层知道当前耳机的状态,在收音机等功能工作时才能达到需要的效果
- tlv320aic3110在Freescale Mx6q上的调试
- 在freescale mx6q平台上添加spi资源
- freescale mx6q平台上添加spi资源
- Freescale MX51/MX6Q平台的透明处理
- Freescale i.MX6Q Android 4.3.2编译:
- 在i.MX6Q上安装ubuntu(linaro)12.04
- 调试freescale CSI sa7113 camera的心得
- 调试freescale CSI sa7113 camera的心得
- 调试freescale CSI sa7113 camera的心得
- 20151031本地编译freescale的i.MX6Q的android4.2.2&android4.4.2 && 全志a80的步骤x1
- Linux内核yocto在Freescale的IMX6q上启动遇到booting from net,.....
- 在Freescale iMX515上, Linux kernel启动期间在LCD上显示图片、进度条、文字信息的方法。
- Freescale i.MX6Q MEMORY CONFIG
- Linaro on Freescale i.MX6Q Sabre Lite Board
- 在freescale mx6DL 平台上添加spi资源
- freescale有些关于怎么样处理freescale芯片上外围设备的惯例
- EVC4不能调试Freescale MX31(ARM113)的解决方法
- Freescale imx6的android lvds屏幕驱动调试
- Python 实现Apriori算法
- 求助:搭建Cloud Foundry Server
- 黑马程序员-学习笔记java基础-语言概述
- 未来十年中国的9大趋势预测(文摘)
- 消除NetworkOnMainThreadException异常报错
- tlv320aic3110在Freescale Mx6q上的调试
- linux中转义字符以及通配符、shell特殊字符
- WCF心跳判断服务端及客户端是否掉线并实现重连接
- svn错误提示: svn is scheduled for addition, but is miss
- 如何 完整 下载google android 源代码
- PHP中判断变量为空的几种方法小结
- ios view的frame和bounds之区别(位置和大小)
- TexturePacker、physicseditor cocos2d-x游戏开发的必备工具
- iMX6q 音频系统调试