EC - MIWU
Multi-Input Wake-Up(MIWU)
MIWU模組用於把 EC 由 Idle mode 中 Wake up 到 Active mode。在 Active Mode 下,Wake up 事件成為ICU的中斷訊號,完成Wake up 的要求工作。
MIMU 的 Wake up 事件的觸發來源可分為內部模組和外部可 Wake up 群組,總共32個觸發事件來源。MIWU察覺任何有效的輸入觸發訊號,若有觸發訊號進來則會產生wake-up 事件的需求,這時wake-up 事件會通知Power Management module(PMC)讓系統離開Idle mode回復Active mode。
下圖為Wake-up 事件的流程圖
在 wake-up 事件的流程,由觸發訊號產生開始,經 WKEDGn 會先確認中斷是否符合要求(可以設定要求為 Falling Edge/ Rasing Edge/ Any Edge),當符合要求就把WKPNDn的相對位元設為1,表示有 wake up 事件產生,再經由 WKENn 確認wake up 事件是否為 Enable ,確認為 enable 後,把事件傳送到 Power Management Control Unit [PMC]去通知核心處理器離開 Idle mode。同時,也把事件傳送給 ICU 在 EC 回到 Active 時,處理中斷任務。
MIWU Register
- Edge Detection Register (WKEDG)
- 這個register設為0時,觸發方式為Low to High,設為1時,觸發方式為High – to – Low。
- WKEDGE1 bit 0 ~ bit 7控制WUI 10 ~ WUI 17。
- WKEDGE2 bit 1 ~ bit 7控制WUI 20 ~ WUI 27。
- WKEDGE3 bit 2 ~ bit 7控制WUI 30 ~ WUI 37。
- WKEDGE4 bit 3 ~ bit 7控制WUI 40 ~ WUI 47。
- Pending Register(WKPND)
- 這個register控制是否鎖住發生選擇觸發的狀態與輸入信訊。設為1時,參考輸入的觸發信號,設0時則不參考,這個register只有用software可以控制,用WKPCL register可以清除。
- WKPND1 bit 0 ~ bit 7控制WUI 10 ~ WUI 17。
- WKPND2 bit 1 ~ bit 7控制WUI 20 ~ WUI 27。
- WKPND3 bit 2 ~ bit 7控制WUI 30 ~ WUI 37。
- WKPND4 bit 3 ~ bit 7控制WUI 40 ~ WUI 47。
- WKEN(Enable Register)
- 這個register控制有輸入觸發訊號時的wake-up功能,設為1時,為Enable,設為0時,為Disable。
- WKEN1 bit 0 ~ bit 7控制WUI 10 ~ WUI 17。
- WKEN 2 bit 1 ~ bit 7控制WUI 20 ~ WUI 27。
- WKEN 3 bit 2 ~ bit 7控制WUI 30 ~ WUI 37。
- WKEN 4 bit 3 ~ bit 7控制WUI 40 ~ WUI 47。
- WKPCL(Pending Clear Register)
- 這個register在清除pending bits,是用來避免硬體及軟體在讀寫時有其他可能操作上的衝突,
- WKPCL 1 bit 0 ~ bit 7控制WUI 10 ~ WUI 17。
- WKPCL 2 bit 1 ~ bit 7控制WUI 20 ~ WUI 27。
- WKPCL 3 bit 2 ~ bit 7控制WUI 30 ~ WUI 37。
- WKPCL 4 bit 3 ~ bit 7控制WUI 40 ~ WUI 47。
Power button Pin GPIO01 – 查詢table 9 MIWU Input為UI21,Interrupt Name為INT 30,查詢table15得知INT 30的Source為External和MIWU,因為Power Button為外部中斷,所以一開始H/W就要定義為External。
- Power button wake up function setting process
- Enter Idle Setting -
- 清除Pending Event – WKPCLn = 0xFF
- 設定Edge Trigger to (HIGH-TO-LOW) – WKEDG2.1 = 1
- 啟動Wake-up功能 – WKEN2.1 = 1
- 啟動中斷向量服務 – IENAM1.E = 1
- Exit Idle Setting –
- 取消Wake-up功能 – WKEN2.1 = 0
- 清除Pending Event – WKPCL2 = 0xFF
留言
張貼留言