最近在调试android平台的音频IC,过程中体会不少,现在把一些调试笔记整理出来与大家分享,由于个人水平有限,难免有写得不对的地方,如果你觉得我哪里写得有问题,或者你有更好的建议,欢迎批评指正。
先弄明白音频IC是怎么回事:
平台信息:
内核:linux 2.6.35
android:2.3.4
CPU:三星S5PV210
*简介
CS42L52是一款由IIC控制,标准的IIS输入,HP/SPK输出的D类功放音频IC。同时它有4路特殊功能ADC输入,可当成外部音频、MIC输入。42L52一般当成从器件使用,可通过IIC接口来设置模块内部寄存器的值。
*42L52作用
一般来说,CPU的audio接口只提供标准的IIS数据格式输出,而喇叭或耳机不能接收IIS数据,只能接收音频模拟数据,为了达到输出声音的目的,需要一个能把IIS数据转换成音频模拟数据的芯片。如下流程图所示:
1、上电复位
42L52的第32脚/RESET为复位脚,低电平复位。上电后,最好对它进行一次50mS复位,复位完成后延迟500mS。
2、控制接口
标准的I2C接口,CLK最高100KHZ。
3、输入输出,以及各名词解释
参考S5PV210CPUdatasheetP1883对以下各CLK的关系图:
对应关系如下图及下表所示:
CPU | 42L52 | 参考值 | 解释 |
ROOTCLOCK | MCLK | RFS*LRCK=384*44.1K =16.9344M | MasterClock的缩写,audio的CLK,MCLK由RFS决定,软件通过设置RFS来设置MCLK |
IISLRCLK | LRCK | 44.1K | LeftRightClock,Determineswhichchannel,LeftorRight,iscurrentlyactiveontheserialaudiodataline,输入的采样频率(Inputsamplerate) |
IISSCLK | SCLK | BFS*LRCK=32*44.1K =1.411M | SerialClockfortheserialaudiointerface,SCLK由BFS决定,软件通过设置BFS来设置SCLK |
IISSDI | SDOUT | 无 | audio数据输出 |
IISSDO | SDIN | 无 | audio数据输入 |
Tip:
BLC、BFS、RFS设置顺序:先后设置BLC,BFS,RFS,如下图所示
以下两图可以加深对IIS模块系统的理解:
了解了这些基本的硬件逻辑之后,下面就可以参考CPU手册及音频IC手册进行相应的编程了。这部分笔记等整理完成后再继续贴出来与大家分享。