当前位置: 代码迷 >> WinCE >> WINCE6.0+I.MX515挂起后硬复位系统没有声音有关问题
  详细解决方案

WINCE6.0+I.MX515挂起后硬复位系统没有声音有关问题

热度:546   发布时间:2016-04-28 11:50:53.0
WINCE6.0+I.MX515挂起后硬复位系统没有声音问题

WINCE6.0+I.MX515挂起后硬复位系统没有声音问题

 

设备挂起后,硬复位启动,系统没有声音。经过硬件工程师确认,是挂起后给音频模块SGTL5000的VDDD和VDDA供电断开了,硬复位启动过程这两个引脚还是低电平。下面来看这个两个引脚的供电


图1

1V2_DIG2和1V65分别是PMIC(MC13892)的VGEN1和VDIG供电的。


图2

音频芯片VDDD的电压范围是1.1~2.0V,VDDA的电压范围是1.62~3.6V。

 

经确认,eboot里面的PMIC初始化代码并没有做相关的设置,下面就根据PMIC的相关部分写代码,但先来看数据PMIC的相关说明。

1.     VGEN1部分

Output of general purpose 1 regulator.


图3

因为音频芯片VDDD的电压范围是1.1~2.0V,硬件设置的时候标识为1V2_DIG2,所以我们这里选择输出1.20V。这个对应下面的寄存器控制。

 

图4

 

寄存器30的VGEN10和VGEN11需要设置,对应的代码

//     VGEN = 1V2_DIG2 = 1.2 (power audio)if(!OALPmicWriteMasked(MC13892_REG_SET0_ADDR,                           CSP_BITFMASK(MC13892_REG_SET0_VGEN1),                           CSP_BITFVAL(MC13892_REG_SET0_VGEN1, 0)))    {       OALMSG(OAL_ERROR, (_T("OALPmicInit: Unable to configure VGEN1\r\n")));       goto cleanUp;           }

 

图5

 

寄存器32的VGEN1EN位需要使能,对应代码如下:

//VGEN1 enable        if (!OALPmicWriteMasked(MC13892_REG_MOD0_ADDR,                           CSP_BITFMASK(MC13892_REG_MODE0_VGEN1EN),                            CSP_BITFVAL(MC13892_REG_MODE0_VGEN1EN,ENABLE)))    {       OALMSG(OAL_ERROR, (_T("OALPmicInit: Unable to enableVGEN1\r\n")));       goto cleanUp;           }

2.     VDIG

Output regulator Digital. Low voltagedigital (DPLL, GPS).


图6

音频VDDA的电压范围是1.62~3.6V,音频驱动中选择的是1.8V,为保持一致,这里也选择1.8V。

 

图7

寄存器30的VDIG0和VDIG1需要设置,对应代码如下。

//VDIG setting        if (!OALPmicWriteMasked(MC13892_REG_SET0_ADDR,                            CSP_BITFMASK(MC13892_REG_SET0_VDIG),                           CSP_BITFVAL(MC13892_REG_SET0_VDIG, 3)))///1.8V                           //CSP_BITFVAL(MC13892_REG_SET0_VDIG, 2)))///1.65v                           //CSP_BITFVAL(MC13892_REG_SET0_VDIG, 0)))///1.05V    {       OALMSG(OAL_ERROR, (_T("OALPmicInit: Unable to configureVDIG\r\n")));       goto cleanUp;           }

 

图8

寄存器32的VDIGEN需要使能,对应的代码如下:

//VDIG enable         if (!OALPmicWriteMasked(MC13892_REG_MOD0_ADDR,                           CSP_BITFMASK(MC13892_REG_MODE0_VDIGEN),                           CSP_BITFVAL(MC13892_REG_MODE0_VDIGEN, ENABLE)))    {       OALMSG(OAL_ERROR, (_T("OALPmicInit: Unable to enableVDIGEN\r\n")));       goto cleanUp;           }

到此问题解决。

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

  相关解决方案