中文字幕视频在线免费_日韩在线精品_日韩视频免费看_中文字幕在线三区_午夜免费视频_日韩在线大片

電源管理芯片WM8310在手持設備上的應用方案

來源:網(wǎng)絡

點擊:1831

A+ A-

所屬頻道:新聞中心

關鍵詞:WM8310,電源管理,處理器,電源分配

      引言

      WM8310是Wolfson公司推出的電源管理集成電路(PMIC)產品,具有完全可編程化可定制化和優(yōu)良的性能。WM8310在7 mm×7 mm的小尺寸上集成了ADC、實時時鐘、低壓差穩(wěn)壓器、降壓穩(wěn)壓器以及用于背光的升壓穩(wěn)壓器,提供了一個高集成度的PMIC解決方案。WM8310具有尺寸小、功能強等優(yōu)點,被多家手機廠商以及手持設備商采用,廣泛用于移動電話、導航設備以及媒體播放器等消費電子產品。

      S5PC100是三星公司發(fā)布的一款ARM CortexA8內核的移動處理器,主頻高達833 MHz.S5PC100處理器采用64位內部總線構架,內含 32/32 KB數(shù)據(jù)/指令一級緩存、256 KB二級緩存。它的構造基于三星的45 nm LP低功耗工藝技術S5PC100還包含強大的2D和3D硬件加速器。

      1 硬件設計

      1.1 S5PC100電源分配與上電時序

      WM8310具有4路DCDC穩(wěn)壓器以及13路LDO穩(wěn)壓器。其中,2路DCDC同步降壓穩(wěn)壓器輸出電流達1.2 A,并具有硬件DVS(動態(tài)電壓調節(jié))功能;1路升壓DCDC穩(wěn)壓器輸出電壓達30 V,可驅動多個串行白光LED.還包括6路標準LDO穩(wěn)壓器和4路低噪聲LDO穩(wěn)壓器,另有3路低功耗LDO用于內部電路。

      WM8310的DCDC1與DCDC2具有DVS(動態(tài)電壓調試)功能,可以通過外部GPIO來切換輸出電壓,當然每一路DCDC和LDO都可以通過I2C控制接口來調節(jié)輸出電壓。將DCDC1與DCDC2分別接到S5PC100的內核電源(即VCC_ARM和VCC_INT),這兩個內核電壓可以根據(jù)當前處理器的運行頻率自動調節(jié)輸出電壓的大小并減小系統(tǒng)的功耗。DCDC3給DDR內存和S5PC100的內存總線接口電路供電。DCDC4用于LCD屏的背光驅動。其他各路LDO給S5PC100的I/O電路供電。

      S5PC100的上電時序較為嚴格,如圖1所示。為了保證處理器每次上電能正確運行,電源設計要滿足其上電時序要求。WM8310可以為每一路DCDC以及LDO分配時序,非常容易滿足S5PC100的上電時序要求。

    圖1 S5PC100上電時序

      圖1中的時間大小如表1所列。

      它描述了WM8310的各路輸出與S5PC100電源的連接以及每一路電源的上電時序。

      表1 S5PC100的時間大小

     

      1.2 外部EEPROM設計

      WM8310上電的時候需要讀取外部EEPROM的數(shù)據(jù)來設定每一路DCDC和LDO的初始輸出電壓以及上電時序,外部EEPROM芯片通過I2C接口與WM8310連接,上電后WM8310自動讀出EEPROM第一頁的32字節(jié)數(shù)據(jù),WM8310的寄存器長度是16位的,所以外部EEPROM芯片要選2字節(jié)寬度的。WM8310與外部EEPROM的連接電路如圖2所示。

    圖2 WM8310與外部EEPROM的連接電路

      這32字節(jié)初始化數(shù)據(jù)除了保存在外部EEPROM中,也可以保存在WM8310內部的OTP存儲器中,在WM8310芯片出廠的時候就把數(shù)據(jù)寫進內部的OTP存儲器,以后就不能改變了。WM8310上電的時候檢測SCLK2引腳,如果發(fā)現(xiàn)是高電平,則讀取EEPROM的數(shù)據(jù)作為初始化數(shù)據(jù)。如果已將數(shù)據(jù)燒寫到WM8310的OTP存儲器中,則將SCLK2與SDA2引腳懸空。

      本方案中WM8310的32字節(jié)初始化數(shù)據(jù)為:

      0x7FFE,0x43BE,0x433E,0x602A,0x267F,0x6666,0x7F7F,0x7A7D,0x7D78,0x0000,0xA40C

      1.3 WM8310與S5PC100的控制接口

      WM8310具有兩種控制接口,一種是I2C接口,另一種是SPI接口。可以選擇一個接口與CPU進行通信控制。WM8310的IREFR引腳是控制接口模式選擇端,若IREFR引腳接低電平則選擇I2C接口,反之則選擇SPI接口。本方案中選擇把WM8310的I2C接口與S5PC100的I2C0接口通信,WM8310控制接口如圖3所示。

    圖3 WM8310控制接口2驅動程序設計

      2.驅動程序設計

      2.1 流驅動接口

      本方案中采用Windows CE 6.0操作系統(tǒng),Windows CE 6.0操作系統(tǒng)的進程數(shù)由Windows CE 5.0的32個擴展到32 000個,每個進程的地址空間從32 MB擴展到2 GB,并且將代碼的運行權限分成用戶模式和內核模式。驅動程序置于內核模式,而應用程序置于用戶模式有助于整個環(huán)境更可靠、更安全地運行。

      Windows CE 6.0的驅動模式分為本地驅動和流式驅動,流式驅動為操作系統(tǒng)提供了標準流接口函數(shù),如XXX_Init()、XXX_Open()、XXX_Read()、XXX_Write()、XXX_Close()、XXX_IOControl()等。比如串口驅動、SPI接口驅動、I2C接口驅動等就是采用流式驅動。而本地驅動提供給操作系統(tǒng)的不是標準的接口,不同的設備接口也不一樣。常見的本地驅動有顯示驅動、觸摸屏驅動等。不管是本地驅動,還是流式驅動,所有驅動都是以DLL(動態(tài)鏈接庫)文件形式存在。

      本方案中PMIC(WM8310)的驅動采用流式驅動。驅動實現(xiàn)的功能有系統(tǒng)開關機功能設置、DCDC與LDO動態(tài)電壓設置、背光亮度設置以及各路DCDC與LDO的打開與關閉等。具體的實現(xiàn)過程則是通過調用I2C驅動讀寫WM8310的寄存器。所有的功能通過PMU_IOControl()函數(shù)提供給操作系統(tǒng),PMU_IOControl()函數(shù)是一個標準的流式驅動函數(shù)。PMU_IOControl()函數(shù)的源代碼如下:

     

      BOOL PMU_IOControl(DWORD pContext, DWORD dwCode, PBYTE pBufIn, DWORD dwLenIn, PBYTE pBufOut, DWORD dwLenOut, PDWORD pdwActualOut){

      BOOL RetVal=TRUE;

      DWORD dwIndex;

      if (NULL==pBufIn) {//檢查參數(shù)是否合法

      SetLastError (ERROR_INVALID_PARAMETER);

      RetVal=FALSE;

      DEBUGMSG (ZONE_ERROR, (TEXT(“Invalid parameter\\r\\n”)));

      return(RetVal);

      }

      switch(dwCode){

      case IOCTL_PMU_REGULATOR_ON://打開DC DC/LDO

      if((PMIC_Regulator_On((PMU_IO_DESC *)pBufIn))==FALSE){

      SetLastError(ERROR_TIMEOUT);

      RetVal=FALSE;

      }

      break;

      case IOCTL_PMU_REGULATOR_OFF://關閉

      DC DC/LDO

      if((PMIC_Regulator_Off((PMU_IO_DESC *)pBufIn))==FALSE){

      SetLastError(ERROR_TIMEOUT);

      RetVal=FALSE;

      }

      break;

      case IOCTL_PMU_SET_REGULATOR_VOLTAGE://設置DC DC/LDO輸出電壓

      if((PMIC_Set_Regulator_Voltage((PMU_IO_DESC *)pBufIn))==FALSE){

      SetLastError(ERROR_TIMEOUT);

      RetVal=FALSE;

      }

      break;

      case IOCTL_PMU_SET_BACKLIGHT_LEVEL://設置背光亮度等級

      if((PMIC_Set_Backlight_Level((PMU_IO_DESC *)pBufIn))==FALSE){

      SetLastError(ERROR_TIMEOUT);

      RetVal=FALSE;

      }

      break;

      case IOCTL_PMU_TURN_OFF://關閉設備電源

      PMIC_Turn_Off();

      break;

      case IOCTL_PMU_IS_BACKLIGHT_ON://查詢背光是否打開

      *pBufOut=PMIC_Is_Backlight_On();

      break;

      }

      return(RetVal);

      }

     

      2.2 PMIC(WM8310)初始化

      PMIC(WM8310)初始化主要完成開機鍵的時間設置,打開背光設置默認亮度,設置HWC功能實現(xiàn)CPU休眠喚醒電源控制。PMIC(WM8310)初始化函數(shù)為PMIC_Init(),源代碼如下:

      DWORD PMIC_Init(HANDLE hIIC){

      DWORD r, dwErr=0;

      PMU_IO_DESC pmic_data;

      hI2C=hIIC;//I2C驅動句柄

      wm831x_reg_unlock();

      wm831x_set_bits(WM831X_ON_PIN_CONTROL, 0x03ff, 0x0212); //設置關機時間為4s

      wm831x_reg_lock();

      wm831x_isink_enable(WM831X_CS1_BASE);//打開背光電流控制

      dwErr=wm831x_isink_set_current(WM831X_CS1_BASE, 6889);//設置默認背光亮度

      pmic_data.RegulatorIndex=VCC_BL;

      pmic_data.pData=0;

      pmic_data.Count=0;

      if(!PMIC_Regulator_On(&pmic_data))dwErr=1;//打開背光設置HWC功能實現(xiàn)CPU休眠喚醒電源控制

      wm831x_buckv_enable_hwc(WM831X_DC1_BASE,WM831X_DCDC_HWC_MODE_DISABLED,WM831X_DCDC_HWC_SRC_HC1);

      wm831x_gpio_direction_in(0);//設置WM8310GPIO1 為輸入

      wm831x_gpio_configuration(0, WM831X_GPN_POL_MASK, 0);//設置WM8310GPIO1 為低電平有效

      wm831x_gpio_set_function(0, 0x0c);//設置WM8310GPIO1為HW Control1 input功能

      return dwErr;

      }

      2.3 PMIC(WM8310)驅動調用示例

      PMIC(WM8310)的驅動采用流式驅動,對其操作的方法就像操作文件的方法一樣非常方便。所有功能都通過調用DeviceIoControl()來實現(xiàn)。在此之前要先打開設備,代碼如下:

      static HANDLE hPMIC;//PMIC設備句柄

      hPMIC=CreateFile(PMIC_DRIVER_PORT,GENERIC_READ|GENERIC_WRITE,F(xiàn)ILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING, 0, 0);

      if ( INVALID_HANDLE_VALUE==hPMIC ) {

      dwErr=GetLastError();

      return FALSE;

      }

     

      然后將CreateFile()返回的設備句柄傳遞給DeviceIoControl()來實現(xiàn)功能,例如實現(xiàn)調整背光亮度等級的代碼如下:

      DWORD dwErr, bytes, dat;

      PMU_IO_DESC pmic_data;

      dat=BACKLIGHT_VALUE10;//背光等級10

      pmic_data.RegulatorIndex=VCC_BL;

      pmic_data.pData=&dat;

      pmic_data.Count=1;

      if ( !DeviceIoControl(hPMIC,IOCTL_PMU_SET_BACKLIGHT_LEVEL, &pmic_data, sizeof(PMU_IO_DESC), NULL, 0, &bytes, NULL) ) {

      dwErr=GetLastError();

      return FALSE;

      }

      else{

      return TRUE;//調整成功

      }

      結語

      本方案利用WM8310的可編程及高性能的特點,將其用于手持設備的CPU供電,結合Windows CE 6.0操作系統(tǒng)實現(xiàn)了動態(tài)電壓頻率調節(jié)、背光光控制以及休眠喚醒等功能,極大地降低了系統(tǒng)的功耗,延長了手持設備的工作時間,在相同的工作時間要求下減小了電池尺寸的要求。并且WM8310的高度集成、芯片面積小等特點大大地減小了手持設備PCB板尺寸,使手持設備能做到更小化、更輕便。本方案已經成功應用于中海達測繪儀器有限公司的手持設備中,經過長時間的使用工作穩(wěn)定、可靠。該方案所帶來的優(yōu)點使產品的競爭力有很大提高。

    (審核編輯: 智匯胡妮)

    聲明:除特別說明之外,新聞內容及圖片均來自網(wǎng)絡及各大主流媒體。版權歸原作者所有。如認為內容侵權,請聯(lián)系我們刪除。

    主站蜘蛛池模板: 99这里只有精品视频 | 国产欧美日韩综合精品一区二区 | 欧美一级欧美三级在线观看 | 亚洲电影在线播放 | 亚洲综合自拍 | 国产一区二区亚洲 | 日韩欧美中文字幕在线视频 | 牛牛澡牛牛爽一区二区 | 精品国产精品三级精品av网址 | 欧美日韩综合精品 | 最近韩国日本免费观看mv免费版 | 久久久亚洲精品视频 | 私人毛片免费高清视频 | 91精品国产欧美一区二区成人 | 奇米影视7777 | 精品国产欧美一区二区 | 伦理自拍| 亚洲一区二区三区四区五区中文 | 久草精品在线 | jyzz中国jizz十八岁免费 | 夜夜操比 | 香蕉久久夜色精品国产使用方法 | 精品视频久久 | 91亚洲精品乱码久久久久久蜜桃 | 91精品久久久久久久久久入口 | 日韩另类 | www日本视频 | 美女视频黄色 | 黄色天堂 | 伊人久久在线 | 狠狠干网站 | 国产成人精品一区二区三区视频 | 久综合网| 欧美国产激情二区三区 | 成人免费视频网站 | 午夜视频导航 | av毛片免费看| 国产精品射| 国产特黄一级 | 久久人人av | 国产在线观看一区 |