SPI接口简介0x0001

合集下载

SPI接口详解

SPI接口详解

SPI接口详解SPI(Serial Peripheral Interface,串行外围设备接口)是由Motorola公司开发,用来在微控制器和外围设备芯片之间提供一个低成本、易使用的接口(SPI有时候也被称为4线接口)。

这种接口可以用来连接存储器(存储数据)、A/D转换器、D/A转换器、实时时钟日历、LCD 驱动器、传感器、音频芯片,甚至其他处理器。

支持SPI的元件很多,并且还一直在增加。

SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,地位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。

与标准的串行接口不同,SPI是一个同步协议接口,所有的传输都参照一个共同的时钟,这个同步时钟信号由主机(处理器)产生,接收数据的外设(从设备)使用时钟来对串行比特流的接收进行同步化。

可能会有许多芯片连到主机的同一个SPI接口上,这时主机通过触发从设备的片选输入引脚来选择接收数据的从设备,没有被选中的外设将不会参与SPI传输。

SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。

SPI主要使用4个信号:主机输出/从机输入(MOSI)、主机输入/主机输出(MISO)、串行SCLK或SCK和外设芯片(CS)。

有些处理器有SPI接口专用的芯片选择,称为从机选择(SS)。

(1)MOSI –主器件数据输出,从器件数据输入(2)MISO –主器件数据输入,从器件数据输出(3)SCLK –时钟信号,由主器件产生(4)/SS –从器件使能信号,由主器件控制在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。

在多个从器件的系统中,每个从器件需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。

MOSI信号由主机产生,从机接收。

在有些芯片上,MOSI只被简单的标为串行输入(SI),或者串行数据输入(SDI)。

spi简介——精选推荐

spi简介——精选推荐

◆ SPI 工作原理总结① 硬件上为4根线。

② 主机和从机都有一个串行移位寄存器,主机通过向它的SPI 串行寄存器写入一个字节来发起一次传输。

③ 串行移位寄存器通过MOSI 信号线将字节传送给从机,从机也将自己的串行移位寄存器中的内容通过MISO 信号线返回给主机。

这样,两个移位寄存器中的内容就被交换。

④ 外设的写操作和读操作是同步完成的。

如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。

◆ SPI 接口简介SPI:Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口。

SPI ,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,主要应用在 EEPROM ,FLASH ,实时时钟,AD 转换器,还有数字信号处理器和数字信号解码器之间。

STM32F4 的 SPI 功能很强大, SPI 时钟最高可以到 37.5Mhz ,支持 DMA 。

◆ SPI 内部结构简明图移位寄存器移位寄存器SPI 时钟发生器MISO MOSI SCLKVDDCS CS主机(Master)从机(Slave)SPI 接口一般使用4条线通信:MISO 主设备数据输入,从设备数据输出。

MOSI 主设备数据输出,从设备数据输入。

SCLK 时钟信号,由主设备产生。

CS从设备片选信号,由主设备控制。

◆SPI接口框图⏹STM32 SPI接口可配置为支持SPI协议或者支持I2S音频协议,默认是SPI模式。

可以通过软件切换到I2S方式。

27.2.1 SPI 特性● 基于三条线的全双工同步传输● 基于双线的单工同步传输,其中一条可作为双向数据线● 8 位或16 位传输帧格式选择● 主模式或从模式操作● 多主模式功能● 8 个主模式波特率预分频器(最大值为f PCLK/2)● 从模式频率(最大值为f PCLK/2)● 对于主模式和从模式都可实现更快的通信● 对于主模式和从模式都可通过硬件或软件进行NSS 管理:动态切换主/从操作● 可编程的时钟极性和相位● 可编程的数据顺序,最先移位MSB或LSB● 可触发中断的专用发送和接收标志● SPI 总线忙状态标志● SPI TI 模式● 用于确保可靠通信的硬件CRC 功能:—在发送模式下可将CRC 值作为最后一个字节发送—根据收到的最后一个字节自动进行CRC 错误校验● 可触发中断的主模式故障、上溢和CRC 错误标志● 具有DMA 功能的1字节发送和接收缓冲器:发送和接收请求时钟相位和时钟极性通过SPI_CR1 寄存器中的CPOL 和CPHA 位,可以用软件选择四种可能的时序关系。

SPI接口详解1

SPI接口详解1

SPI接口是一种同步串行总线(Serial Peripheral Interface)。

四线SPI接口连线图:CS为片选脚,用于选中从机。

SCLK为时钟脚,用于数据传输时提供时钟信号。

MOSI为主output,从input,即主机发送脚。

对应从机的引脚为SDI。

MISO为主input,从output,机主机接收脚。

对应从机的引脚为SDO。

上述SPI为标准SPI协议(Standard SPI)或单线SPI协议(Single SPI),其中的单线是指该SPI协议中使用单根数据线MOSI 进行发送数据,单根数据线MISO 进行接收数据。

为了适应更高速率的通讯需求,半导体厂商扩展SPI协议,主要发展出了Dual/Quad/Octal SPI协议,加上标准SPI协议(Single SPI),这四种协议的主要区别是数据线的数量及通讯方式,见下表:除了上述接法,SPI还支持半双工1bit模式:SCLK:时钟线。

I/O:数据线,同一时刻要么主机发送,要么主机接收。

SS:片选脚。

Dual SPI的2bit模式:由于是半双工,同一时刻要么主机使用MOSI、MISO线,要么从机使用MOSI、MISO线。

Quad SPI(4线)模式与Dual SPI类似,也是针对SPI Flash,也是半双工,Quad SPI Flash增加了两根I/O线(SIO2,SIO3),目的是SCLK一次触发传输4bit数据。

以AC63芯片SPI接口为例,进行代码分析:根据SPI接口的时序要求,SPI接口可以通过软件实现,也可以通过硬件实现。

这里仅分析硬件实现方式。

查看数据手册可知,芯片最多支持三个SPI接口,SPI接口支持DMA发送、接收功能。

每个SPI接口引脚可以映射到不同的引脚,分别为不同的组,即组A、组B、组C、组D。

SPI硬件包含控制寄存器、波特率寄存器、buf缓冲区寄存器、DMA地址寄存器、DMA计数寄存器。

寄存器结构体定义如下:typedef struct {__RW __u32 CON;__WO __u32 BAUD;__RW __u32 BUF;__WO __u32 ADR;__WO __u32 CNT;} JL_SPI_TypeDef;每个SPI接口寄存器基地址:#define JL_SPI0_BASE (ls_base + map_adr(0x1c, 0x00))#define JL_SPI0 ((JL_SPI_TypeDef *)JL_SPI0_BASE)#define JL_SPI1_BASE (ls_base + map_adr(0x1d, 0x00))#define JL_SPI1 ((JL_SPI_TypeDef *)JL_SPI1_BASE)#define JL_SPI2_BASE (ls_base + map_adr(0x1e, 0x00))#define JL_SPI2 ((JL_SPI_TypeDef *)JL_SPI2_BASE)现将三个SPI寄存器首地址定义在数组中:static JL_SPI_TypeDef *const spi_regs[SPI_MAX_HW_NUM] = { JL_SPI0,JL_SPI1,JL_SPI2,};通过SPI的编号就可以进行对应SPI寄存器的访问操作。

SPI及其接口介绍

SPI及其接口介绍

一、SPI接口简介SPI(Serial Peripheral Interface--串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。

SPI有三个寄存器分别为:控制寄存器SPCR,状态寄存器SPSR,数据寄存器SPDR。

外围设备FLASHRAM、网络控制器、LCD显示驱动器、A/D 转换器(如图一所示)和MCU等。

图一、ADC中的SPI二、SPI接口一个典型的SPI模块的核心部件是一个8位的移位寄存器和一个8位的数据寄存器SPIDR。

通过SPI进行数据传送的设备有主SPI和从SPI之分,即SPI传送在一个主SPI和一个从SPI之间进行。

图二给出了两个SPI模块相互连接、进行SPI传送的示意图,图左边是一个主SPI,图右边为一个从SPI。

图二、典型SPI示意图在AN-877应用笔记中,对spi的接口定义与典型spi接口有所不同,AN-877使用一根线SDIO代替了典型SPI的MISO和MOSI,SS接口用CSB代替。

图三和图四分别是双线模式下单器件控制(主从一对一)和双线模式下多器件控制(主从一对多)。

图三:主从一对一控制图四:主从一对多控制但是原理都一样。

主从机之间一般由3个引脚组成:串行时钟引脚(SCLK)、串行数据输入/输出引脚(SDIO)、片选引脚(CSB)。

1、引脚数据输入/输出(SDIO):该引脚用作数据的输入/输出,用作输入还是用作输出具体取决于所发送的指令(读或写)以及时序帧中的相对位置(指令周期或数据周期)。

在读或写的第一个阶段,该引脚用作输入,将信息传递到内部状态机。

如果该命令为读命令,状态机把该引脚(SDIO)变为输出,然后该引脚将数据回传给外部控制器。

如果该命令为写命令,该引脚始终用作输入。

串行时钟(SCLK):SCLK由外部控制器提供,时钟频率最高为25MHZ。

所有数据的输入输出都是与SCLK同步的。

输入数据在SCLK的上升沿有效,输出数据在SCLK的下降沿有效。

SPI详解

SPI详解

1、 SPI简介SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。

首先在其MC68HCXX系列处理器上定义的。

SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。

SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。

2、 SPI特点2.1采用主-从模式(Master-Slave) 的控制方式SPI 规定了两个 SPI 设备之间通信必须由主设备 (Master) 来控制次设备 (Slave). 一个 Master 设备可以通过提供 Clock 以及对 Slave 设备进行片选 (Slave Select) 来控制多个 Slave 设备, SPI 协议还规定Slave 设备的 Clock 由 Master 设备通过 SCK 管脚提供给 Slave 设备, Slave 设备本身不能产生或控制 Clock, 没有 Clock 则 Slave 设备不能正常工作2.2采用同步方式(Synchronous)传输数据Master 设备会根据将要交换的数据来产生相应的时钟脉冲(Clock Pulse), 时钟脉冲组成了时钟信号(Clock Signal) , 时钟信号通过时钟极性 (CPOL) 和时钟相位 (CPHA) 控制着两个 SPI 设备间何时数据交换以及何时对接收到的数据进行采样, 来保证数据在两个设备之间是同步传输的.2.3数据交换(Data Exchanges)SPI 设备间的数据传输之所以又被称为数据交换, 是因为 SPI 协议规定一个 SPI 设备不能在数据通信过程中仅仅只充当一个 "发送者(Transmitter)" 或者 "接收者(Receiver)". 在每个 Clock 周期内, SPI设备都会发送并接收一个 bit 大小的数据, 相当于该设备有一个 bit 大小的数据被交换了. 一个 Slave 设备要想能够接收到 Master 发过来的控制信号, 必须在此之前能够被 Master 设备进行访问 (Access). 所以, Master 设备必须首先通过 SS/CS pin 对 Slave 设备进行片选, 把想要访问的 Slave 设备选上. 在数据传输的过程中, 每次接收到的数据必须在下一次数据传输之前被采样. 如果之前接收到的数据没有被读取, 那么这些已经接收完成的数据将有可能会被丢弃, 导致 SPI 物理模块最终失效. 因此, 在程序中一般都会在 SPI 传输完数据后, 去读取 SPI 设备里的数据, 即使这些数据(Dummy Data)在我们的程序里是无用的。

SPI接口简介

SPI接口简介

图1 含主机和从机的SPI配置
图7 多从机SPI菊花链配置
图3 SPI模式1,CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出
图2 SPI模式0,CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出
图4 SPI模式2,CPOL = 1,CPHA = 1:CLK空闲状态 = 高电平,数据在下降沿采样,并在上升沿移出
图5 SPI模式3,CPOL = 1,CPHA = 0:CLK空闲状态 = 高电平,数据在上升沿采样,并在下降沿移出
图6 多从机SPI配置
图3给出了SPI 模式1的时序图。

在此模式下,时钟极性为0,表示时钟信号的空闲状态为图8 菊花链配置:数据传播
图9 微控制器GPIO用作开关的控制信号
图11 使用串行转并行转换器的多从机开关
图12 支持SPI的开关节省微控制器GPIO
图13 菊花链配置的SPI开关可
进一步优化GPIO
下一个从机。

在此配置中,所有从机同时接收同一
时钟。

来自主机的数据直接送到第一个从机
数据提供给下一个从机,依此类推
使用该方法时,由于数据是从一个从机传播到下一个从机,所以传输数据所需的时钟周期数与菊花链中的从机位置成比例。

例如在图7所示的
3个从机能够获得数据,需要24
模式下只需8个时钟脉冲。

图8
菊花链的数据传播。

并非所有SPI。

SPI接口

SPI接口

SPI interfaceSPI接口介绍SPI 是由美国摩托罗拉公司推出的一种同步串行传输规范,常作为单片机外设芯片串行扩展接口。

SPI有4个引脚:SS(从器件选择线)、SDO(串行数据输出线)、SDI(串行数据输入线)和SCK(同步串行时钟线)。

SPI可以用全双工通信方式同时发送和接收8(16)位数据,过程如下:主机启动发送过程,送出时钟脉冲信号,主移位寄存器的数据通过SDO移入到从移位寄存器,同时从移位寄存器中的数据通过SDI移人到主移位寄存器中。

8(16)个时钟脉冲过后,时钟停顿,主移位寄存器中的8(16)位数据全部移人到从移位寄存器中,随即又被自动装入从接收缓冲器中,从机接收缓冲器满标志位(BF)和中断标志位(SSPIF)置“1”。

同理,从移位寄存器中的8位数据全部移入到主寄存器中,随即又被自动装入到主接收缓冲器中.主接收缓冲器满标志位(BF)和中断标志位(SSPIF)置“1”。

主CPU检测到主接收缓冲器的满标志位或者中断标志位置1后,就可以读取接收缓冲器中的数据。

同样,从CPU检测到从接收缓冲器满标志位或中断标志位置1后,就可以读取接收缓冲器中的数据,这样就完成了一次相互通信过程。

这里设置dsPIC30F6014为主控制器,ISD4002为从器件,通过SPI口完成通信控制的过程。

SPI总线协议SPI是一个环形总线结构,由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck 的控制下,两个双向移位寄存器进行数据交换。

假设下面的8位寄存器装的是待发送的数据10101010,上升沿发送、下降沿接收、高位先发送。

那么第一个上升沿来的时候数据将会是sdo=1;寄存器=0101010x。

下降沿到来的时候,sdi上的电平将所存到寄存器中去,那么这时寄存器=0101010sdi,这样在 8个时钟脉冲以后,两个寄存器的内容互相交换一次。

这样就完成里一个spi时序。

例子:假设主机和从机初始化就绪:并且主机的sbuff=0xaa,从机的sbuff=0x55,下面将分步对spi的8个时钟周期的数据情况演示一遍:假设上升沿发送数据这样就完成了两个寄存器8位的交换,上面的上表示上升沿、下表示下降沿,sdi、sdo相对于主机而言的。

SPI接口 Microsoft Office Word 文档

SPI接口 Microsoft Office Word 文档

SPI接口的应用介绍SPI(Serial Peripheral Interface--串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息,SPI 总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCLK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线NSS(有的SPI接口芯片带有中断信号线INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。

结合在学习STM32的过程中,对SPI的学习和使用,简单的介绍一下SPI 的一个应用,SPI的原理框图如下如图所示,SPI有三个寄存器分别为:控制寄存器SPCR,状态寄存器SPSR,数据寄存器SPDR,SPI通过四个接口和外部进行连接。

MISO:主设备输入/从设备输出引脚。

该引脚在从模式下发送数据,在主模式下接收数据。

MOSI:主设备输出/从设备输入引脚。

该引脚在主模式下发送数据,在从模式下接收数据。

SCK:串口时钟,作为主设备的输出,从设备的输入NSS:从设备选择。

这是一个可选的引脚,用来选择主/从设备。

它的功能是用来作为“片选引脚”,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突。

从设备的NSS引脚可以由主设备的一个标准I/O引脚来驱动。

一旦被使能(SSOE位),NSS引脚也可以作为输出引脚,并在SPI处于主模式时拉低;此时,所有的SPI设备,如果它们的NSS引脚连接到主设备的NSS引脚,则会检测到低电平,如果它们被设置为NSS硬件模式,就会自动进入从设备状态。

当配置为主设备、NSS配置为输入引脚(MSTR=1,SSOE=0)时,如果NSS被拉低,则这个SPI 设备进入主模式失败状态:即MSTR位被自动清除,此设备进入从模式。

下图是一个单主和单从设备互连的例子SPI的时钟信号控制主要由SPI_CR寄存器的CPOL和CPHA位决定,CPOL和CPHA位能够组合成四种可能的时序关系。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本文介绍spi接口与串行spi接口应用。

SPI(Serial Peripheral Interface,串行外设接口)是Motorola公司提出的一种同步串行数据传输标准,在很多器件中被广泛应用。

1. 接口
SPI接口经常被称为4线串行总线,以主/从方式工作,数据传输过程由主机初始化。

如图1所示,其使用的4条信号线分别为:
1)SCLK:串行时钟,用来同步数据传输,由主机输出;
2)MOSI:主机输出从机输入数据线;
3)MISO:主机输入从机输出数据线;
4)SS:片选线,低电平有效,由主机输出。

在SPI总线上,某一时刻可以出现多个从机,但只能存在一个主机,主机通过片选线来确定要通信的从机。

这就要求从机的MISO口具有三态特性,使得该口线在器件未被选通时表现为高阻抗。

2. 数据传输
在一个SPI时钟周期内,会完成如下操作:
1)主机通过MOSI线发送1位数据,从机通过该线读取这1位数据;
2)从机通过MISO线发送1位数据,主机通过该线读取这1位数据。

这是通过移位寄存器来实现的。

如图2所示,主机和从机各有一个移位寄存器,且二者连接成环。

随着时钟脉冲,数据按照从高位到低位的方式依次移出主机寄存器和从机寄存器,并且依次移入从机寄存器和主机寄存器。

当寄存器中的内容全部移出时,相当于完成了两个寄存器内容的交换。

3. 时钟极性和时钟相位
在SPI操作中,最重要的两项设置就是时钟极性(CPOL或UCCKPL)和时钟相位(CPHA 或UCCKPH)。

时钟极性设置时钟空闲时的电平,时钟相位设置读取数据和发送数据的时钟沿。

主机和从机的发送数据是同时完成的,两者的接收数据也是同时完成的。

所以为了保证主从机正确通信,应使得它们的SPI具有相同的时钟极性和时钟相位。

举例来说,分别选取MSP430控制器和OLED驱动SH1101A为主从机,图3和图4为它们的SPI时序。

由图4可知,SH1101A的SPI时钟空闲时为高电平,并且在后时钟沿接收数据,则MSP430控制器SPI的设置应与此保持一致。

从图3中可以看出,要使得时钟在空闲时为高电平,应将UCCKPL置1;要使得在后时钟沿接收数据,应将UCCKPH清零。

4. 优缺点
SPI接口具有如下优点:
1)支持全双工操作;
2)操作简单;
3)数据传输速率较高。

同时,它也具有如下缺点:
1)需要占用主机较多的口线(每个从机都需要一根片选线);
2)只支持单个主机。

5,新型SPI接口
这是spansion公司的新型norflash芯片,采用新型的spi接口,数据传输更快,详细参考另一文档(转载)。

相关文档
最新文档