24小(xiǎo)时联系電(diàn)话:18217114652、13661815404
中文(wén)
- 您当前的位置:
- 首页>
- 電(diàn)子资讯>
- 行业资讯>
- SPI与I2C:如何為(wèi)您的...
行业资讯
SPI与I2C:如何為(wèi)您的存储芯片选择最佳协议
SPI与I2C:如何為(wèi)您的存储芯片选择最佳协议
SPI和I2C可(kě)能(néng)是最常用(yòng)的数字协议,用(yòng)于连接各种产品中的集成電(diàn)路。SPI和I2C都是易于使用(yòng)、难以破解的串行数字协议,从信号完整性的角度来看,它们很(hěn)容易路由。与阻抗控制的高速差分(fēn)串行协议不同,这两种协议没有(yǒu)阻抗规范,通常被认為(wèi)是電(diàn)气短路的。这意味着,在PCB上,设计要求相对简单,并且在标准中仍有(yǒu)一些自由度可(kě)以根据需要调整性能(néng)。
PCB布局中SPI和I2C的常见实现之一是作為(wèi)用(yòng)于读取和写入外部闪存的协议。闪存芯片是嵌入式系统中非常常见的组件,可(kě)以提供高达Gb值的高容量非易失性存储器。选择内存芯片时,您需要将应用(yòng)程序要求和功能(néng)与内存芯片中读写操作所需的总線(xiàn)速度相匹配。还有(yǒu)您需要访问的闪存类型的问题(NOR与NAND)。
SPI和I2C比较
串行外设接口(SPI)和内部集成電(diàn)路(I2C)协议都是以低速到中速运行的简单串行数字协议。这两个接口有(yǒu)一些共同的特点:
他(tā)们使用(yòng)不止一根線(xiàn)来发送/接收数据
时钟是源同步的,这意味着只有(yǒu)一条走線(xiàn)承载时钟線(xiàn)
总線(xiàn)上的其他(tā)芯片是可(kě)寻址或可(kě)切换的
大多(duō)数微控制器将集成其中一个或两个接口
信号電(diàn)平可(kě)以通过给芯片的核心電(diàn)压来设置
这些接口都没有(yǒu)阻抗要求
显然,这些接口非常相似。它们确实有(yǒu)一些重要的區(qū)别,如下表所示。
|
I2C |
SPI |
网名 |
- 串行数据(SDA) - 串行时钟(SCL) |
- 主输入,从输出(MISO) - 主输出,从输入(MOSI) - 串行时钟(SCK或SCLK) - 片选(CS,可(kě)选) |
拓扑 |
- 广播总線(xiàn)拓扑 |
- 共享味噌/MOSI/SCK - CS引脚的星号 |
数据速率 |
- 标准模式:高达100 kbps - 快速模式:高达400 kbps - 快速模式加:高达1 Mbps - 高速模式:高达3.4 Mpbs |
- 由时钟窗口时间固定,最高可(kě)达60Mbps |
上升/下降时间 |
- 取决于总線(xiàn)電(diàn)容和上拉電(diàn)阻值(使用(yòng)RC时间常数) |
- 指定给定负载阻抗 |
寻址 |
- 固定在每个组件上的地址引脚 |
- 主控制器中用(yòng)于切换芯片的CS引脚(可(kě)通过GPIO或专用(yòng)CS引脚切换) |
方向性 |
- 半双工 |
- 全双工 |
信号驱动 |
- 开漏 |
- 推挽式(带CMOS缓冲器) |
与I2C相比,SPI标准提供更高的数据速率并且可(kě)以以更快的边沿速率运行。由于在I2C上使用(yòng)上拉電(diàn)阻、通常较高的总線(xiàn)電(diàn)容以及驱动方法是开漏极的事实,I2C总線(xiàn)的上升时间可(kě)以达到100纳秒(miǎo)。对于驱动低负载電(diàn)容的高级组件,SPI总線(xiàn)的上升时间可(kě)以低至1 ns ,这意味着它们在切换期间可(kě)能(néng)会出现瞬态振铃。SPI線(xiàn)路也更容易产生串扰,因為(wèi)它们的开关速度非常快。要了解有(yǒu)关SPI总線(xiàn)中这两种协议和信号完整性的更多(duō)信息,请阅读以下资源。
為(wèi)存储芯片选择SPI和I2C时的重要考虑因素
访问NAND与NOR闪存
在本节中,我不想深入讨论NAND与NOR闪存的细节,而是想关注如何使用(yòng)串行协议访问它们。如果您可(kě)以采購(gòu)正确的内存组件,则可(kě)以使用(yòng)SPI或I2C总線(xiàn)访问这两种类型的闪存芯片:
NOR闪存 -绝大多(duō)数使用(yòng)SPI访问,即使在更小(xiǎo)和更慢的闪存芯片上也是如此。可(kě)以使用(yòng)I2C访问速度较慢的芯片。
NAND闪存 -绝大多(duō)数使用(yòng)并行总線(xiàn)访问,但具有(yǒu)I2C和SPI总線(xiàn)的芯片数量大致相等。
如果您查看Octopart并使用(yòng)过滤器功能(néng),您将能(néng)够找到一些使用(yòng)任一接口的高容量存储器。
用(yòng)于存储器的I2C到SPI接口桥接
如果需要在I2C和SPI接口之间进行转换,可(kě)以使用(yòng)接口桥接器。这些组件在这些接口之间转换数据格式,因此可(kě)能(néng)只有(yǒu)SPI总線(xiàn)的组件可(kě)以访问只有(yǒu)I2C总線(xiàn)的外围组件。这包括内存芯片,但如果控制器仅使用(yòng)I2C并且内存使用(yòng)SPI,则速度可(kě)能(néng)会受到限制,并且接收组件可(kě)能(néng)由于上升时间長(cháng)而无法工作。
要克服I2C的这一限制,最好使用(yòng)带SPI的控制器,然后使用(yòng)接口桥访问只有(yǒu)I2C的外设。请注意,SPI端的时钟必须更低,以确保它可(kě)以在I2C速度下使用(yòng)。这将在以下拓扑中完成:
需要SPI到I2C接口桥接器的首选配置。
電(diàn)平转换
开漏和推挽串行协议(其中信号電(diàn)平由内核電(diàn)压设置)中的另一个常见要求是電(diàn)平转换。构建PCB的最简单方法是使用(yòng)调节到所需核心電(diàn)压的单个電(diàn)源,例如使用(yòng)LDO。实际上,您可(kě)能(néng)有(yǒu)一些外围设备在较高電(diàn)压下运行(例如3.3 V),而主控制器在较低電(diàn)压下运行多(duō)个轨(2.5 V、1.8 V等)。如果您的MCU以3V3运行,但您的内存以 1V8运行(这是一种常见情况),那么您将需要通过電(diàn)平转换器路由SPI或I2C信号。请注意,一些接口桥将包括一个電(diàn)平转换器,连接到两个電(diàn)源轨;拓扑如下图所示。
用(yòng)于電(diàn)平转换的拓扑。
一旦您為(wèi)您的设计找到了组件,您如何在SPI与I2C接口之间做出选择?以下几点将推动您做出决定:
速度:当您批量传输数据或有(yǒu)一个狭窄的窗口来验证用(yòng)户输入与存储在内存芯片中的数据时,每一微秒(miǎo)都很(hěn)重要。如果系统的其余部分(fēn)需要实时重复读写功能(néng),请使用(yòng)SPI。如果控制器只需要偶尔从内存读取或写入,则使用(yòng)I2C。
控制器:如果您使用(yòng)的是非常小(xiǎo)的MCU或外围设备,并且可(kě)用(yòng)的引脚很(hěn)少,那么您应该使用(yòng)I2C。事实上,对于某些微控制器,您可(kě)能(néng)别无选择。例如,经典的ATTiny MCU 只有(yǒu)I2C,因此如果它们需要来自外部存储器的数据,则必须找到支持I2C的存储芯片。
電(diàn)源:如果您正在设计需要重复访问数据的電(diàn)池供電(diàn)设备,您可(kě)能(néng)会选择SPI,因為(wèi)该接口的平均功耗低于I2C接口。