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,让上层知道当前耳机的状态,在收音机等功能工作时才能达到需要的效果
原创粉丝点击