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 是高电平触发。
全部0条评论
快来发表一下你的评论吧 !