(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)建議輸出端口處於高電平狀態,以減少休眠模式下的電流消耗。