芯片调试PCM1774"/>
海思芯片调试PCM1774
一.简介
由于原设备的输出音频效果不佳。所以,在海思芯片作为开发平台上,为了改善这个问题,添加PCM1774作为音频转接器和核心板音频输出AO对接。基本步骤如图1:
图1 基本步骤
二.操作
1.I2S3数据的输出选择
现在将核心板子上原本输出给音频处理芯片的I2S3数据选择成PCM1774,需要打开片选芯片的选择控制管脚寄存器。
在telnet设备的终端操作:
设置管脚复用寄存器,将控制片选芯片输出选择的管脚GPIO18_3复用成I/O:
himm 0x120F0204 0x0
设置GPIO18_3的方向(GPIO_DIR )为输出:
himm 0x12270400 0x8
将GPIO18_3管脚置1,高电平使得I2S3数据通过片选芯片输出到PCM1774:
himm 0x12270020 0x8
关于对管脚的控制,可以查看“HI3531的GPIO使用的再分析”
2.PCM1774的I2C控制
PCM1774支持I2C总线和数据传输协议,其从地址按如图所示的格式进行设置。
高6位(MSBs)是固定的100011。由于同一I2C总线最多可以控制两个PCM1774,所以ADR可由用户通过硬件进行定义、用于标记当前控制的PCM1774芯片。最低位(LSB)表示读和写操作(R/)W
图2 从地址
3.用户可定义的PCM1774模式控制寄存器
PCM1774的模式控制寄存器中,每个寄存器的地址用7位表示,如下表所示。
表1 PCM1774的模式控制寄存器
4.上电后,主要模式控制寄存器的设置时序
时序 | 寄存器及数据 | 设置项说明 |
1 | – | 打开所有电源① |
2 | 4027h | 耳机放大器左声道音量( -6分贝)② |
3 | 4127h | 耳机放大器右声道音量( -6分贝)② |
6 | 4427h | 数字衰减器左声道通道(-24分贝)② |
7 | 4527h | 数字衰减器右声道通道(-24分贝)② |
8 | 4600h | 关闭过采样、启用I2S传输数据格式③ |
12 | 49E0h | DAC(DAL,DAR)和模拟偏置功率上电 |
13 | 5601h | 零交叉检测启用 |
14 | 4803h | 模拟调音台(MXL,MXR)上电 |
15 | 5811h | 模拟调音台输入(SW2,SW5)选择 |
16 | 49ECh | 耳机放大器(HPL,HPR, HPC)上电 |
18 | 4A01h | Vcom上电 |
19 | 5230h | 模拟前端(D2S,MCB, PG1,2,5,6)上电 |
20 | 5711h | 模拟输入(MUX3, MUX4)选择。模拟输入(MUX1,MUX2)选择 |
①.这些寄存器设置(打开)时,VDD应优先打开或着同时打开。所有电源上电后,寄存器数据需要伴随系统时钟输入的进行设置。 ②.可以设置任何音量和衰减值,这些值需要在系统断电时保存在寄存器数据中。 ③.设置音频接口格式方便与DSP或解码器匹配并被使用。 |
表2 寄存器的上电时序
根据表2,设备上电后,PCM1774启动,在telnet设备的终端操作,通过I2C设置PCM1774主要模式控制寄存器的值。如图3所示:
图3 寄存器写数据
按时序设置主要模式控制寄存器的值:
i2c_write 0 0x8e 0x40 0x27
i2c_write 0 0x8e 0x41 0x27
i2c_write 0 0x8e 0x44 0x27
i2c_write 0 0x8e 0x45 0x27
i2c_write 0 0x8e 0x46 0x00
i2c_write 0 0x8e 0x49 0xe0
i2c_write 0 0x8e 0x56 0x01
i2c_write 0 0x8e 0x48 0x03
i2c_write 0 0x8e 0x58 0x11
i2c_write 0 0x8e 0x49 0xec
i2c_write 0 0x8e 0x4a 0x01
i2c_write 0 0x8e 0x52 0x30
i2c_write 0 0x8e 0x57 0x11
5.断电前,主要模式控制寄存器的设置时序
时序 | 寄存器及数据 | 设置项说明 |
1 | 447Fh | DAC L- CH数字软静音启用.① |
2 | 457Fh | DAC R-CH数字软静音启用.① |
4 | 5811h | 模拟调音台输入( SW2,SW5)选择 |
5 | 49ECh | 耳机放大器(HPL,HPR,HPC)上电.② |
6 | 5200h | 模拟前端(D2S,MCB,PG1,2,5,6)断电 |
7 | 5A00h | PG1,PG2增益控制(0 dB为单位) |
8 | 4A00h | Vcom断电 |
9 | – | 等待时间(750毫秒).③ |
10 | 49E0h | 耳机放大器(HPL,HPR, HPC)关闭电源,扬声器放大器(SPL,SPR)断电 |
11 | 4800h | 模拟调音台(MXL,MXR)断电 |
12 | 4900h | DAC(DAL,DAR)和模拟偏置电源关闭 |
13 | – | 关闭所有电源.④ |
①.可以设置任何音量和衰减值。 ②.电源关闭时,需要设置耳机放大器。 ③.PCM1774的Vcom到达公共电平的地电平需要时间。所允许的等待时间依赖于设置寄存器125的PTM[1:0]、RES[4:0]。默认设置为750毫秒。 ④.此处不需要电源排序。根据时钟输入设置的寄存器后,关闭所有电源。 |
表3 寄存器的断电时序
根据表3,设备断电前,PCM1774启动,在telnet设备的终端操作,按时序通过I2C设置PCM1774主要模式控制寄存器的值:
i2c_write 0 0x8e 0x44 0x7f
i2c_write 0 0x8e 0x45 0x7f
i2c_write 0 0x8e 0x58 0x11
i2c_write 0 0x8e 0x49 0xec
i2c_write 0 0x8e 0x52 0x0
i2c_write 0 0x8e 0x5a 0x0
i2c_write 0 0x8e 0x4a 0x0
i2c_write 0 0x8e 0x49 0xe0
i2c_write 0 0x8e 0x48 0x0
i2c_write 0 0x8e 0x49 0x0
PCM的数据手册(也可以去TI官网下载):海思芯片调试PCM1774及PCM1774数据手册.rar
- 总结
当研究了一段时间后,陷入停滞时,最快的方法的是咨询做驱动的同事,毕竟其有相关的经验。但有可能单个同事的想法有不全面,可以再咨询他人。如果软件上做足了功夫,不要怀疑自己,大胆的想是不是硬件问题。
另外,首先需要明白PCM1774的工作原理(用I2C控制模式、I2S传输数据)。然后,如何让其实现工作。I2C的如何控制、如何打开I2S的数据传输。然后, I2C控制配置什么寄存器、成什么模式。英文数据手册太长,可以搜索关键词(mode、power up、work、function、programer、user)等和启动PCM1774工作的相关寄存器。上电后,然后仔细看需要配置的寄存器的各寄存器的内容、代表含义、配置什么值等。
最重要的是,不要停滞,不要害怕,迷茫时问人,大胆怀疑。
更多推荐
海思芯片调试PCM1774
发布评论