0.嵌入式控制器EC实战 Embedded Controller开发概述
文章目錄
- 1.嵌入式控制器EC概述
- 2.EC芯片框圖(IT8502為例)
- 3.General Purpose I/O Port (GPIO)
- 4.SMBus(System Management Bus,系統管理總線)
- 5.PWM、TACH
- 6.KBC(KeyBoard Controller)
- 7.PS/2
- 8.ADC(模數轉換)
- 總結
1.嵌入式控制器EC概述
嵌入式控制器EC是掛在CPU的LPC(Low Pin Count)總線下的一顆嵌入主控芯片,嵌入式控制器的目的是幫助計算機(主要是筆記本)管理低速外設,像觸摸板、矩陣鍵盤等,當然最重要的是計算機通過EC來做電源管理,在筆記本電腦中,電源管理尤為重要,不僅僅需要控制開關機的電源,還要控制筆記本做休眠掛起即之后的喚醒。EC就像計算機的隱形管家,在電腦的正常運行中起到了至關重要的作用。
接下來列舉一下我們所使用的商用筆記本電腦都有哪些功能是通過EC來實現的。
- 開關機的上下電時序控制(GPIO);
- 休眠掛起的上下電時序控制(GPIO);
- 開關機按鍵(GPIO);
- 筆記本開合蓋檢測(GPIO);
- 電源燈、大小寫燈、數字燈的控制(GPIO);
- 筆記本電池的充放電控制(SMBUS);
- CPU/GPU/主板溫度檢測功能(SMBUS);
- 散熱風扇智能溫控(PWM/TACH);
- 筆記本鍵盤(KBC鍵盤控制器);
- 觸摸板(PS/2);
- 電壓檢測(ADC);
2.EC芯片框圖(IT8502為例)
通過框圖的最上端LPC總線與CPU的LPC總線相連,EC通過LPC總線與操作系統或BIOS進行通信,最上端的SERIRQ是用于向CPU發送串行中斷信號的。
在框圖中有兩條總線,Internal Bus(內部總線),EC Bus(EC總線)。內部總線用于CPU的LPC總線對內部總線下外掛的各個邏輯設備(KBC/PMC/UART等)的訪問,也可以用于各個邏輯設備之間的通信。EC總線則用于EC下面各個功能模塊間、EC下模塊與內部總線下的邏輯設備間的通信。
芯片中的最重要的部分是EC8032的部分,他是一個MSC-51系列的單片機,對EC的編程和對51單片機的編程幾乎是一樣的。后面在代碼框架講解中會提到。
當EC芯片上電后,8032微處理器將從SPI Flash的0x0000地址中取出固件(代碼)運行,下面列出了EC中最常用的矩陣鍵盤,PS/2觸摸板、主機接口0x60/0x64等功能。
3.General Purpose I/O Port (GPIO)
通用I/O端口由寄存器控制的獨立I/O管腳組成。
在EC中有十組通用GPIO,分別是GPIOA—GPIOJ,每組GPIO有8個pin腳,總共是80個pin腳。
在EC芯片上電后,代碼執行的第一步復位后初始化Reset_Initialization()函數中就會首先配置這80個pin的工作模式。有以下幾種工作模式:
- 輸入模式;
- 上拉輸出模式;
- 下拉輸出模式;
- 復用為其他工作方式(例如PWM、ADC、UART等);
在上下電時序控制中,完全是由GPIO來控制的,首先按照CPU廠商提供的各設備的上電時序圖,EC控制各個電源及設備的復位,這一部分的控制引腳都是配置為輸出模式。而各個電源的PowerGood信號則需要將相應的引腳配置為輸入模式。
電源燈、大小寫燈、數字燈的控制也是將相應的引腳配置為輸出模式。
開關機按鍵、開合蓋霍爾傳感器、適配器拔插信號在代碼中則需要定義為輸入模式,并添加相應的事件函數,當有相應動作產生時,需要進入事件處理函數中執行相應的控制。例如適配器插入后需要控制充放電芯片對電池進行充電,切換為適配器對筆記本電腦進行供電,并通過LPC總線通知操作系統。
4.SMBus(System Management Bus,系統管理總線)
在筆記本電腦中一般會用到兩個SMBus接口,一個接口用于與智能鋰電池、一個用于CPU、GPU和主板等溫度傳感器溫度監控。
SMBus為I2C協議的子集,SMBus協議幀在I2C定義的通用幀格式基礎上針對事務的不同進行了更加確定的定義。
通過SMBCLK和SMBDAT信號引腳來進行通信,與I2C通信協議的CLK與DATA引腳的通信方式是相似的。
5.PWM、TACH
在筆記本中PWM一般有兩個用處,一個用于控制風扇的風速,一個用于顯示屏的亮度調節。
TACH則是用于監控風扇的轉速,用于風扇的智能調速。
6.KBC(KeyBoard Controller)
KBC作為一個邏輯設備掛在LPC總線下,操作系統或BIOS可以通過LPC的0x60/0x64與EC進行通信,KBC在EC與操作系統或BIOS的通信過程中起到了非常重要的作用。矩陣鍵盤、PS/2觸摸板的數據都是通過KBC提供的0x60和0x64端口上報給操作系統或BIOS的。詳細的通信過程可以通過《8.嵌入式控制器(Embedded Controller,EC)學習 操作系統或BIOS通過KBC(0x60/0x64)和PMC(0x62/0x66)對EC ram進行讀寫》博文了解。
7.PS/2
只用作PS/2觸摸板,數據最終是通過KBC的0x60和0x64端口上報操作系統或BIOS。
通信細節參考博文:
《5.嵌入式控制器(Embedded Controller,EC)學習 PS/2協議》
《6.嵌入式控制器(Embedded Controller,EC)學習 嵌入式控制器EC中的PS/2觸摸板的通信過程》
8.ADC(模數轉換)
在EC中GPI0—GPI7這8個引腳可以配置為ADC工作模式,用于監測主板的各個電壓。
總結
本文作為嵌入式控制器EC開發的總體概述,介紹了EC中各個部分的功能,簡單的介紹了相關的開發方式,在本專欄中的后續章節中將詳細介紹開發流程。
總結
以上是生活随笔為你收集整理的0.嵌入式控制器EC实战 Embedded Controller开发概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【EasyRL学习笔记】第十一章 模仿学
- 下一篇: 静心之旅