eSPI自学笔记(一):前言和简介

1981年,IBM生产出以Intel 8088为CPU的面向个人和办公的微型计算机。为了便于对其生产的PC机进行功能扩展,IBM推出了ISA总线。基本上包括鼠标键盘串口在内的低速IO设备都挂在ISA总线上,从ISA总线衍生出来的X-BUS也是类似的功能。(ISA/X-BUS的关系类似于I2C/SMBUS间的关系)。

但是随着CPU频率和工艺的提高,ISA总线逐渐显得不堪重用,不仅传输速率过低,CPU占用率高,而且引脚众多,耗费硬件资源,业界急需一款的新的接口规范方便进行PC机的功能扩展。

终于到1997年9月29日,Intel公布了取代ISA总线的接口方案,并且采取免费开放授权的方式。同ISA总线地址数据分离译码的工作方式不同,新总线采取了类似PCI的地址数据共享译码的方式,信号线数量大幅度降低,工作速率由PCI总线同步驱动。由于其所需的信号引脚位数大幅度降低(7个必需引脚,6个可选引脚),Intel称这个新接口规范为 Low Pin Count(LPC)。

LPC总线面世二十多年来,基本成为了低速外设和PC芯片组之间的专用接口,所面向的设备包括但不限于SuperIO/BMC/EC/80port Debug Card。其中,SuperIO面向Desktop Platform,EC面向Notebook Platform,而BMC面向Server Platform。如下图所示为LPC BUS与芯片组的连接示意图。

在这里插入图片描述

注意在早些时候,包含BIOS的Flash芯片也是LPC接口的,或者叫做Firmware Hub,LPC Spec中的Firmware Read/Write 就是针对这类device而定义的。但是受限于容量限制等原因,目前已经很难在主板上见到LPC Flash了,基本上都被SPI Flash所取代。

随着技术的不断迭代,LPC总线也开始显得捉襟见肘。

首先,LPC总线规定定义了7个必需信号和6个可选信号,总共需要占用处理器13个引脚,再加上芯片组和EC/BMC/SIO之间数量众多的sideband信号,管脚资源紧张的系统架构急需一种占用硬件管脚更少的总线通信方式;

再者,LPC现有的实现都是基于3.3V IO电平,不利于低功耗设计;

最后,LPC总线时钟固定为33MHz,总线数据吞吐量最高只能到133Mbps,已经成为了系统的数据瓶颈。

于是到了2016年,Intel又推出新一代总线接口规范Enhanced Serial Peripheral

Interface (eSPI)用于取代LPC。eSPI总线借鉴和复用了SPI总线的电气时钟规范,但是在协议层使用了全新的定义,所以二者无论是从功能还是从应用上完全是两码事,请大家不要单纯因为名字类似就混淆。除了全面兼容LPC总线的作用和功能外,eSPI总线还把OOB(out of band)的SMBUS和SideBand的GPIO都转化给可以在eSPI Bus上传递的In Band Message,除此以外,还可以和chipset实时共享flash。eSPI BUS与Chipset的连接示意图如下:

在这里插入图片描述

从中我们可以发现,eSPI BUS在同一组物理总线上传递了四类信息流,为了在保证这四类信息流之间相互独立互不干扰,eSPI Spec引入了Channel的概念。

所谓Channel,引用Spec的原话,其定义为:A channel provides a means to allow multiple independent flows of traffic to share the same physical bus。在协议层面,为每个channel都定义了自己专用的指令和payload格式;在硬件层面,每个channel都有属于自己的data buffer,并且相应的Tx avail和Rx Free状态状态都可以显示到status register中。

在这里插入图片描述

上图所示为eSPI SPEC给出的一个概念图,可以看到在图中,定义Channel 0为Perpheral Channel,Channel 1为Virtual Wire Channel,Channel 2为 OOB Message Channel,Channel 3为Flash Access Channel。至于这四个Channel都是起到什么作用,又是怎么在不影响其他Channel的前提下进行数据传输的,我们在后续的内容中会进一步讲解。

更多内容欢迎扫码关注公众号:第五位面壁者

在这里插入图片描述

  • 16
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
引用:在文件pio\libdeps\esp32dev\TFT_eSPI\TFT_eSPI.cpp的开头处发生了一个错误,报告了一个fatal error,指出找不到SPI.h文件。解决这个问题的方法是在platformio.ini文件中添加一行代码。 引用:你可以在这个网址https://techoverflow.net/2020/12/14/how-to-fix-platformio-esp8266-esp32-fatal-error-spi-h-no-such-file-or-directory找到更多关于解决这个问题的信息。 所以,问题TFT_eSPI.h: No such file or directory发生在编译过程中,可能是由于缺少SPI.h文件导致的。你可以尝试按照上述引用中的方法进行解决。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [解决platformio添加库报错问题](https://blog.csdn.net/my_id_kt/article/details/122380175)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [ESP32解码显示JPG和PNG图片](https://blog.csdn.net/Z1576796635/article/details/130496714)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值