WINCE6.0+I.MX515掛起後硬複位系統沒有聲音問題,wince6.0i.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; }
到此問題解決。
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。