eSPI 協議在物理層是遵循 SPI 通訊規范的,但是協議層有差異,因此不能使用 SPI 協議去解析(沒有 eSPI 協議分析儀的情況下,可以使用 SPI 協議分析儀去做單獨 Byte 的初步解析,接下來就人肉解析 eSPI)。
一般邏輯分析儀只能解析 I2C、SPI 等通用協議。要分析 eSPI 協議必須使用可以解析 eSPI 協議的邏輯分析儀 Acute TravelLogic。
目前市場上常用的 eSPI 分析儀如下圖,型號是 TL4234B。
下載邏輯分析儀軟件
打開官網鏈接,下載配套軟件并且安裝,如下圖。
軟件設置
打開軟件后,如下圖,選擇邏輯分析儀。
抓取 eSPI 波形,可以采用快速通道配置。點擊快速設置,選擇 eSPI 協議。
點擊下圖,配置按鈕,可以配置 eSPI Bus 采集的參數。
通道設置
通道配置中,channel 默認從 0 開始,一共占用 7 個 channel。依次為 CS#、SCK、IO-0、IO-1、IO-2、IO-3、Alert、Reset。
事實上,使用 signal IO Mode 時,Alert 是復用在 IO-1上,因此沒有實際的 Alert pin。
CS 工作模式選擇 Active Low,即低電平選擇。
Response 采樣點選擇 Clock Rising,即上升沿采樣。
IO Mode 默認 signal mode 即可。
解碼顯示設置
解碼顯示設置中,選擇需要顯示的內容即可。
硬件連線
筆記本設計中,采用的是 Signal Master - Signal Slave 模式,Master 是 PCH,Slave 是 EC。
如下圖,IO 有 4個,分別是 IO-0,IO-1,IO-2,IO-3。實際應用中通訊模式選擇 Signal Mode居多。
如果通訊模式是 Signal Mode,邏輯分析儀可以不抓取 IO-2,IO-3 信號。
按上述軟件配置,邏輯分析儀的 CH[0--7] 分別接硬件的 CS#、CLK、I/O 0、I/O 1、I/O 2、I/O 3、Alert、Reset#。
同時記得連接一個地線。
抓取 eSPI 波形
點擊采集,即可開啟捕獲波形。捕獲完成后,軟件自動解析,黑色區域顯示具體波形,底下框中顯示每一筆數據包的詳情。
持續抓取 eSPI 波形
eSPI 數據包
筆記本的 eSPI 的應用中,是 Signal Master - Signal Slave,即一主一從。
PCH 作為 eSPI Master,當 EC 把 RSMRSET 拉高后,PCH 拉高 eSPI Reset,開始做 eSPI 的初始化。
主要內容有通訊速率、通訊模式、通訊通道等信息配置。
eSPI 初始化數據包
PCH 端的 eSPI Master 對 EC 端的 eSPI Slave 初始化,其實就是根據實際需求,改寫 eSPI Slave Register。
使用到的指令是 GET_CONFIGURATION 和 SET_CONFIGURATION。
所以基本邏輯就是 eSPI Master 讀取 eSPI Slave 寄存器,改寫寄存器,回讀確認。寄存器操作最小單位是 4Byte。
eSPI Slave 端需要配置的寄存器只有如下 5個,即 Offset 08、10、20、30、40。
Offset 08h: General Capabilities and Configurations
通用功能描述和配置寄存器。包括通訊速率、模式、校驗使能,通道支持。
讀取 offset 08h 寄存器
改寫 offset 08h 寄存器
eSPI Master 選擇 Quad I/O mode,66MHz 通訊。下圖可以明顯看到改寫 08 寄存器后,CLK 變快,I/O[2-3] 參與通訊。
Offset 10h: Channel 0 Capabilities and Configurations
通道 0 功能描述和配置寄存器。 Peripheral Channel 。
寫 offset 10h 寄存器,使能 Peripheral Channel。
Offset 20h: Channel 1 Capabilities and Configurations
通道 1 功能描述和配置寄存器。 Virtual Wire Channel 。
讀取 offset 20h 寄存器
寫 offset 20h 寄存器,使能 Virtual Channel。
Offset 30h: Channel 2 Capabilities and Configurations
通道 2 功能描述和配置寄存器。 OOB Message Channel 。
讀取 offset 30h 寄存器
寫 offset 30h 寄存器,使能 OOB Message Channel。
Offset 40h: Channel 3 Capabilities and Configurations
通道 3 功能描述和配置寄存器。 Flash Access Channel 。
寫 offset 40h 寄存器,使能 Flash Access Channel。
PCH SLP Signal 數據包
PCH 端的 eSPI Master 使用 PUT_VWIRE 指令把 SLP 信號傳遞給 EC。
Index = 0x02,代表 System Event 2。
Data = 0x76,代表 SLP_S5、SLP_S4、SLP_S3 信號有效,其中 SLP_S5、SLP_S4 為 High,SLP_S3 為 Low。
EC 端的 eSPI Slave 有 Virtual Wire 信號發送時,會先在 I/O[1] 上產生一個 Alert#,然后 Host 使用 GET_VWIRE 獲取 Virtual Wire 狀態。
KBC 數據包
按下 “A” 鍵后松開。有按鍵觸發后,KBC 端需要主動發送 IRQ 并且發送 Key Code(Make and Release)。
EC 端的 KBC 有數據需要發送給 Host,需要用 Virtual Wire 發送一個 SERIRQ。
Host 讀取 Virtual Wire,返回值是 Index=0x00,Data=0x81。
Index = 0x00,代表 Interrupt Event 0。
Data = 0x81,BIT-7 為 1 代表 Interrupt Level High。BIT[0-6] 為 1 代表 IRQ-1。
Host 端發收到 IRQ-1,讀取 I/O 64 判斷 OBF 是否為 1,即 KBC 端是否已經準備好數據。然后讀取 I/O 60 獲取數據(1E,即 “A” 鍵 Scan Code Set-1)。
Host 讀取完“Key Code”,緊接著讀取 Virtual Wire 狀態,發現 IRQ-1 變為 Low。因此 KBC 的 IRQ-1 是高電平觸發。
-
SPI
+關注
關注
17文章
1717瀏覽量
91845 -
波形
+關注
關注
3文章
379瀏覽量
31608 -
邏輯分析儀
+關注
關注
3文章
214瀏覽量
23219 -
SPI協議
+關注
關注
0文章
18瀏覽量
8381
發布評論請先 登錄
相關推薦
評論