(1)電源管理-S3C2440芯片電源管理模塊解析

(1)電源模塊解析 
       電源管理塊通過軟件控制系統時鐘,以降低S3C2440的功耗。這些方案涉及鎖相環、時鐘控制邏輯(FCLK、HCLK和PCLK)和喚醒信號。圖1顯示了S3C2440A的時鐘分佈。

                           
                                                                圖1  S3C2440A的時鐘分佈​​​​​​​
        其中,FCLK由ARM920T使用。
        HCLK用於AHB總線:內存控制器、中斷控制器、液晶控制器,DMA和USB主機塊。
        PCLK用於APB總線:WDT、IIS、I2C、PWM定時器、MMC接口等外圍設備,ADC, UART, GPIO, RTC和SPI。

       S3C2440A有四種電源模式(正常、慢速、空閒、睡眠),模式之間不允許自由轉換。有關模式之間可用的轉換,見圖2。
    
                               
                                                                    圖2   s3c2440電源模式之間的相互轉化

                                                                      表1 每個電源模式的電路模塊狀態      
            
(2)四種電源模式
         正常模式: 在正常模式下,所有外設和基本塊,包括電源管理塊、CPU核心、總線控制器、內存控制器、中斷控制器、DMA和外部主機都可以完全運行。但是,除了基本模塊外,每個外圍設備的時鐘都可以通過軟件選擇性地停止,以降低功耗。
         空閒模式:在空閒模式下,除總線控制器、內存控制器、中斷控制器和電源管理塊外,CPU核心時鐘停止。要退出空閒模式,應激活EINT[23:0]、RTC報警中斷或其他中斷。(EINT在GPIO模塊打開之前不可用)。
         慢速模式:在慢模式下,可以通過應用慢時鐘和不使用鎖相環來降低功耗。FCLK是沒有鎖相環的輸入時鐘(XTIpll或EXTCLK)的divide_by_n的頻率。分頻比由CLKSLOW控制寄存器和CLKDIVN控制寄存器中的SLOW_VAL決定。

                                           表2 CLKSLOW控制寄存器和CLKDIVN控制寄存器中的SLOW_VAL  

       休眠模式:這個模塊斷開了內部電源。因此,在這種模式下,除了喚醒邏輯之外,沒有由於CPU和內部邏輯而導致的功耗。激活睡眠模式需要兩個獨立的電源。兩個電源中的一個爲喚醒邏輯提供電源。另一個提供包括CPU在內的其他內部邏輯電源。在休眠模式下,CPU和內部邏輯的電源將被關閉,保持喚醒邏輯的電源。休眠模式下的喚醒可以通過EINT[15:0]或RTC報警中斷來發出。

(3)進入睡眠模式步驟
        1. 設置適合睡眠模式的GPIO配置。
        2. 屏蔽INTMSK寄存器中的所有中斷。
        3. 正確配置喚醒源,包括RTC警報。
        4. 將USB設置爲掛起模式。(MISCCR[13:12]= 11 b)
        5. 將一些意義值保存到GSTATUS[4:3]寄存器中(喚醒後的執行函數地址,堆棧指針等)這些寄存器在睡眠模式下得到保護。
        6. 配置數據總線上的上拉電阻MISCCR[1:0],D[31:0]。
        7. 通過清除LCDCON1來停止LCD。
        8. 讀取rREFRESH和rCLKCON寄存器以填充TLB。
        9. 讓SDRAM通過設置REFRESH[22]=1b進入自刷新模式。
       10. 等待SDRAM自動刷新有效。
       11. 設置MISCCR[19:17]=111b,使SDRAM信號(SCLK0、SCLK1、SCKE)在睡眠時受到保護模式,不讓SDRAM內的數據被破壞。
       12. 在CLKCON寄存器中設置睡眠模式位。
       注意:當系統從NAND引導啓動時,必須將硬件pin配置- EINT[23:21]設置爲輸入。

(4)退出睡眠模式步驟
       1. 如果發出一個喚醒源中斷,將產生內部復位信號(同外部復位信號)。復位持續時間由內部16位計數器邏輯決定,復位時間計算公式爲:tRST = (65535 / XTAL_frequency)。
       2. 檢查GSTATUS2[2],以確定是否由睡眠模式喚醒。
       3. 通過設置MISCCR[19:17]=000b,釋放SDRAM信號保護。
       4. 配置SDRAM內存控制器。
       5. 等待SDRAM自刷新被釋放。大多數情況下,SDRAM需要所有SDRAM行的刷新週期。
       6. GSTATUS[3:4]中的信息可以用於用戶自己的目的,因爲GSTATUS[3:4]中的值在睡眠模式下被保存了下來。
       7. 對於EINT[3:0],檢查SRCPND寄存器。
|          對於EINT[15:4],檢查EINTPEND而不是SRCPND(雖然設置了一些EINTPEND位,但不會設置SRCPND)。
                                       表3 睡眠模式管腳配置表 (參考作用,用戶應該根據實際情況配置) 

(5)滿足從睡眠模式喚醒的條件
    a. 外部中斷 EINT[15:0] 產生。
    b. EINTn 引腳必須在GPIO控制寄存器中配置爲EINT。
    c. nBATT_FLT引腳必須是高電平。
    注意:剛睡醒後,相應的EINTn引腳將不用於喚醒,這意味着該引腳可以作爲正常外部中斷請求引腳。

(6)其它
   
(1)如果將CLKCON[2]設置爲1,則進入空閒模式,S3C2440A將在一定的延遲之後進入空閒模式(直到電源控制邏輯從CPU接收到ACK信號)。
   (2)鎖相環只能在低功耗的慢速模式下關閉。如果鎖相環在任何其他模式下被關閉,MCU的操作就不能得到保證。
   (3)建議輸出端口處於高電平狀態,以減少休眠模式下的電流消耗。
    

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章