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; }