当前位置:首页 » 存储配置 » spi接口存储器

spi接口存储器

发布时间: 2023-02-15 03:21:26

‘壹’ 用8051的单片机的SPI口和存储器通信,2个芯片之间的连线应该用什么呢普通导线就可以吗

单片机 存储器
MOSI——MISO
MISO——MOSI
SCLK——SCLK
任意IO——CS
普通导线可以,试试看吧!

‘贰’ SPI接口的介绍

SPI(Serial Peripheral Interface--串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。SPI有三个寄存器分别为:控制寄存器SPCR,状态寄存器SPSR,数据寄存器SPDR。外围设备包括FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCLK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线NSS(有的SPI接口芯片带有中断信号线INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。

‘叁’ spi接口功耗

第一部分:SPI接口介绍
SPI是一种串行通信接口,全称是Serial Peripheral Interface。它是一种full-plex(全双工:支持发射端TX与接收端RX同时双向传输数据)接口。最基础的SPI接口由四根线组成:

SCLK(Serial Clock)
SS(Slave Select或CS:Chip Select)
MOSI(Mater Out Slave In)
MISO(Mater In Slave Out)
如下图。

SPI接口pin
1. SCLK:
首先是这跟时钟线,这也是将接口分为Synchronous(同步接口)与asynchronous(异步接口)的重要标志。由于异步接口发送与采集数据没有一个统一控制信号,所以没法确保发送端与接收端有相同的收发data rate,这给现在许多使用同步设计方法的芯片带来的很多难题,所以这也是目前同步接口更受欢迎的原因。

异步通信接口
同步通信接口
不过当然了,异步接口也有它的好处。可以在数据的起始位和终止位来添加两个flag(标记符)来控制数据的接收,而且需要在使用前确保两个模块收发数据的速率是相同的。

所以要是有了这个由Master(一般是一个microcontroller)发出的CLK给slave,slave端就知道什么时候接受数据了,可以是上升沿也可以是下降沿,一般有datasheet决定。时钟的频率也取决于slave能够正常工作的时钟频率范围,一般在80MHz左右。

2.SS/CS:
因为SPI接口有时候会连有多个Slave(一般不超过三个),所以随着slave的增加,master端就会需要越来越多的pin口。当Master与slave处于断链状态时,SS/CS一般是置成高位的,这样在master决定要给与哪个slave交互的时候就会把相应的SS/CS置低,称作active low。

3.MISO/MOSI:
剩下的几个接口都是SPI的数据线,在每个时钟周期内,master都会向slave发送1bit数据,slave也可以同时向master发送1bit数据。所以说假设某个SPI接口正工作在50MHz的时钟频率,那么它的数据传输速率可以达到50Mbps/100Mbps(随着数据线的增加SPI的数据传输速率还能增大更多)。相较于普通的IIC接口已经高出不少了。这也是为什么对于许多传感器来说会选择SPI接口。

多数据位宽的数据传输pin口
其实呢,SPI作为一个常用的外设接口,却不存在一个标准,因此没有用于验证给定产品的接口一致性的基准。。所以SPI可以说是一个de facto standard*(在实践中被接受,但尚未经过任何正式程序以达成共识的标准,甚至可能没有公开可用的文档)。*

A de facto standard :is one that has become accepted in practice but has not undergone any formal process to obtain consensus and may not even have publicly available documentation。
并且在SPI中没有任何通信流程控制单元,SPI的硬件实现有时候就是靠一个简单的shift register,时钟这个唯一的控制信号的稳定性至关重要。除此之外,如何确保数据的传输是否准确也十分重要,一般只能通过软件来检测。在一些real-time embedded system(实时嵌入式系统)中,软件必须以比数据到达更快的速度处理接收到的数据。通过接收端的FIFO Buffer,可以缓解此问题。SPI接口中没有嵌入到错误检测和校正功能中。如果需要,必须在软件中实现错误检测/纠正。

第二部分:SPI接口在存储器接口上的应用
除了SPI这种串行接口比较受存储器设计厂商的欢迎,还有比如由samsung和toshiba设计的Toggle NAND Interface,也被称为Asynchronous DDR NAND Interface(DDR:double data rate,之所以设计成Asynchronous是因为最开始传统的存储器用的就是异步设计方法),虽然数据的传输速率得到了大大提升(使用DDR设计方法),但是确保数据准确性的设计却较为复杂。

另外一种比较受欢迎的接口就是由Cypress设计的ONFI(Open NAND Flash Interface) NAND Interface,据说现在的4.1版本已经能够达到1200MBps的传输速率了。而且使用的是NV-DDR3的1.2V电压标准,使得功耗也得到了改进。以上两种接口不是本篇文章讨论的重点,就暂且介绍到这里,感兴趣的朋友们可以在网上自行搜索更详细的资料了解学习,我们还是回到SPI接口上来。

下面我们就来讲讲为什么芯片常选用SPI作为与存储器互联的接口,也就是说SPI相较于其他接口有什么优势。

所使用的pin口较少,最少为4个
拥有较高的数据传输速率,前文提到过
功耗较低,相较于IIC没有上拉电阻
设计简单,成本低
同步接口(勉强也算一个)
最主要的一个原因也是目前业界使用的大部分存储器(Serial NAND FLASH)使用的都是SPI接口,比如WINBOND家的,MICRON家的和GIGADEVICE家的,好像有种被绑架的感觉。。。

一般在SPI接口的数据端还会设计一个FIFO(数据宽度一般为8bit)来控制数据能够稳定被接收到,因此,SPI由一个缓冲区组成,该缓冲区通过DMA(直接存储器访问)或CPU可寻址缓冲区与系统接口。时钟逻辑从内部系统时钟获得时钟,并可针对所需的速度进行编程。引脚控制逻辑提供输出驱动和延迟设置。可以有各种控制和状态寄存器为器件提供可编程性。

除此之外在物理实现的过程中会在接口产生一个延迟(正常情况不会超过两个时钟周期)。所以如果在full-plex mode下,当slave已经将所需的数据都发送出去(发送的数据多少需要提前由master发出的指令决定),但是master还是会多产生几个时钟周期的SCLK和CS信号,这个时候就会采集到几个没有意义的数据线上的信号(signal low)。这个时候就需要系统软件识别出多余的信号然后将它们从有效数据中剔除出去。

目前除了最开始介绍的传统四线数据线的SPI接口,为了进一步增大接口的数据传输速率,已经发展成了具有多个数据传输pin口的接口,比如说al,quad SPI。

多个数据pin口的SPI接口
结语
SPI作为一个芯片常见的片外接口,适用于许多目前业界流行的Serial存储器设备,这些Serial NAND Flash一般作为储存芯片boot code的存储设备。有许多的优势所在,而相比于并行接口,改进后的串行接口目前也有较高的数据吞吐率以及成本较低的优势,无论是在工艺上还是功耗上。

文中涉及的参考来源:
Sanjeeb Mishra, Vijayakrishnan Rousseau, in System on Chip Interfaces for Low Power Design, 2016

Peter Barry, Patrick Crowley, in Modern Embedded Computing, 2012

发布于 6 月前着作权归作者所有

赞同 1

‘肆’ SPI闪存,什么是SPI闪存

SPI串行闪存是一种小体积的低功耗闪存存储器,它具有串行外设接口(SPI),并与业界标准SPI EEPROM器件保持引脚兼容。由于体积小,它可以减少ASIC控制器引脚数,降低封装成本,缩小电路板空间,并降低系统成本。与并行闪存相比,SPI串行闪存功耗更低、连线更少,它是一种理想的高成本效益的数据传输解决方案。

产品种类日益丰富的SST 25
系列,为电池供电应用提供了超低功耗的串行闪存,并且包含有8引脚XFBGA Z-Scale™封装,它能够以更小的尺寸来提高产品的可靠性和性能

热点内容
mssqlpython 发布:2025-07-13 17:24:34 浏览:468
oraclesqloracle数据库 发布:2025-07-13 17:19:04 浏览:218
磊科如何修改密码 发布:2025-07-13 17:03:06 浏览:864
oracle数据库类型 发布:2025-07-13 17:01:39 浏览:200
linuxeclipse安装 发布:2025-07-13 16:44:56 浏览:176
内部服务器做什么用 发布:2025-07-13 16:43:54 浏览:118
toppython 发布:2025-07-13 16:34:05 浏览:906
安卓微信好友删除怎么找回来 发布:2025-07-13 16:28:10 浏览:125
华为微信自动存储 发布:2025-07-13 16:26:45 浏览:197
svn外网不能访问 发布:2025-07-13 16:26:33 浏览:724