第10章_SPI接口及其应用
- 格式:pdf
- 大小:3.02 MB
- 文档页数:61
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)。
3852007年第11期,第40卷 通 信 技 术 Vol.40,No.11,2007总第191期 Communications Technology No.191,Totally·业务与系统·SPI 接口及其在数据交换中的应用杨美刚, 李小文(重庆邮电大学,重庆 400065)【摘 要】SPI 是一种常用的串行通信协议,用于MCU 系统与外围设备的通信。
文中以OMAP1612/11的SPI 接口为例,论述了SPI 接口的端口、寄存器等结构,介绍了SPI 协议,给出了SPI 在主模式MCU_DSP 发送/接收协议下的数据发送/接收过程,并在FPGA 从端对SPI 接口进行仿真。
【关键词】SPI 接口;FPGA;串行接口技术;数据交换【中图分类号】TN929.5 【文献标识码】A 【文章编号】1002-0802(2007)11-0385-03SPI Interface and Its Application in Data ExchangeYANG Mei-gang, LI Xiao-wen(Chongqing University of Posts and Telecommunication, Chongqing 400065, China)【Abstract】SPI is a common-use serial communication protocol, which is used for communication between MCU and peripherals. Taking the SPI interface of OMAP1612 as an example, the paper gives an account of the structure, including the port for SPI interface and register etc,and describes the SPI protocol in detail. The SPI receive/transmit process of MCU-DSP receive/transmit protocol in master mode is also given, including the simulation of the whole process with FPGA in the terminal.【Key words 】SPI;FPGA;Serial Interface Technology;Data Commutation0 引言在数字技术高速发展的今天,有许多芯片被用作数据交换的核心器件,以起到承上启下的枢纽作用,或者是在集成电路之间进行数据的存储和显示等。
SPI的接口及其应用2010-09-01 00:10:29| 分类:ARM及程序设计| 标签:|字号大中小订阅1 SPI接口的特点目前很多单片机都配置有SPI、I2C或UART等串行接口。
在SPI、I2C及UART三种串行接口一般情况下速度最快的是SPI。
I2C接口由于是二线协议速度很难超过1MHz/ Bit,而UART工作在方式0(8位移位寄存器)时时钟速度为系统时钟的十二分之一(Fosc/12),而SPI接口时钟速度一般为系统时钟的四分之一(Fosc/4)。
典型SPI接口结构如图1所示。
串行外围设备接口SPI(serial peripheral interface)总线技术是Motorola公司推出的一种同步串行接口,Motorola公司生产的绝大多数MCU(微控制器)都配有SPI硬件接口,如68系列MCU。
SPI 用于CPU与各种外围器件进行全双工、同步串行通讯。
SPI可以同时发出和接收串行数据。
它只需四条线就可以完成MCU与各种外围器件的通讯,这四条线是:串行时钟线(CSK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)、低电平有效从机选择线CS。
这些外围器件可以是简单的TTL移位寄存器,复杂的LCD显示驱动器,A/D、D/A转换子系统或其他的MCU。
当SPI工作时,在移位寄存器中的数据逐位从输出引脚(MOSI)输出(高位在前),同时从输入引脚(MISO)接收的数据逐位移到移位寄存器(高位在前)。
发送一个字节后,从另一个外围器件接收的字节数据进入移位寄存器中。
主SPI的时钟信号(SCK)使传输同步。
SPI主要特点有:可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。
图2和图3中还给出了SPI总线工作的四种方式及SPI总线接口的时序。
SPI 模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。
ADμC812串行外设接口(SPI)工作原理及应用实例分析本文主要从全集成的12位数据采集系统ADμC812入手,通过首先分析其串行外设接口SPI的工作原理与系统组成,并用一个主机与从机的电路连接实例来说明其串行外设接口的具体应用特征,提供给嵌入式学习研究者一个完整的SPI 串行接口方案。
ADμC812在单个芯片内包含了高性能的自校准多通道ADC、2个12位DAC以及可编程的8位MCU(与8051兼容)。
为便于MCU与各种外围设备进行通信,ADμC812提供了3种串行I/O端口:UART接口、I2C兼容的串行接口和串行外设接口(SPI)。
其中,SPI接口是工业标准的同步串行接口,是一种全双工、三线通信的系统。
它允许MCU与各种外围设备以串行方式(8位数据同时、同步地被发送和接收)进行通信。
在SPI接口中,数据的传输需要1个时钟信号和两条数据线。
SPI可工作在主模式或从模式下。
在主模式,每一位数据的发送/接收需要1次时钟作用;而在从模式下,每一位数据都是在接收到时钟信号之后才发送/接收。
1个典型的SPI系统包括1个主MCU和1个或几个从外围器件。
SPI接口可设置成在发送/接收1个字节的结束时产生1次中断。
主时钟可以通过编程而成为不同的状态,既可编程为4种不同主波特率的任一种,又可对时钟的极性和相位进行编程。
SPI也可用于那些需要比微控制器上的并行I/O端口更多输入或输出端的场合中。
SPI提供了一种扩展I/O功能的最简单的办法,只需使用最少的微控制器引脚。
SPI串行接口可以在短距离内进行主机与从机的数据传送,并且具有多种可调的传输方式、连接电路简单、使用方便等优点。
为实现主机和从机及从外围设备的通信提供了一种简单、易行的方案。
一、工作原理1、SPI的信号说明SPI系统使用4条线可与多种标准外围器件直接接口:ADμC812的串行外设接口(SPI)及其应用2串行时钟线(SCLOCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SS。
SPI接口介绍
SPI接口的全称是"Serial Peripheral Interface",串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的。
SPI接口主要应用在EEPROM、FLASH、实时时钟、AD转换器,还有数字信号处理器和数字信号解码器之间。
SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。
SPI接口是以主从方式工作的,这种模式通常有一个主器件和一个或多个从器件,其接口包括以下四种信号:
(1)MOSI –主器件数据输出,从器件数据输入
(2)MISO –主器件数据输入,从器件数据输出
(3)SCLK –时钟信号,由主器件产生
(4)/SS –从器件使能信号,由主器件控制
在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。
在多个从器件的系统中,每个从器件需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。
SPI接口在内部硬件实际上是两个简单的移位寄存器,传输的数据为8位,在主器件产生的从器件使能信号和移位脉冲下,按位传输,高位在前,低位在后。
如下图所示,在SCLK的下降沿上数据改变,同时一位数据被存入移位寄存器。
SPI接口内部硬件图示:
最后,SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。
串行外设接口SPI通信协议的应用简介SPI(全称SerialPeripheral Interface),串行外设接口。
SPI是串行外设接口(SerialPeripheral Interface)的缩写。
SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB 的布局上节省空间,提供方便,正是出于这种简单易用的特性,如今越来越多的芯片集成了这种通信协议,比如AT91RM9200。
--from 百度百科该接口由摩托罗拉在20世纪80年代中期开发,并已成为事实标准。
--from Wiki从维基百科查阅的的“事实标准”,在这来科普一下知识盲点:事实标准是指非由标准化组织制定的,而是由处于技术领先地位的企业、企业集团制定(有的还需行业联盟组织认可,如DVD标准需经DVD论坛认可),由市场实际接纳的技术标准。
--from 百度百科SPI接口定义了一主多从这样的一个通信架构,在同一SPI总线上只有一个主机,可以有多个从机。
这样的架构就限制了通信的主动权只能在主机端,主机发起一次通信,从机做出想要。
信号线SPI被称为四线串行总线,其信号线分别有:SCLK:串行时钟(主机输出)MOSI:主输出从机输入或主机输出从机输入(主机输出的数据)MISO:主输入从输出或主输入从输出(从输出的数据输出)SS:从机选择(通常为低电平有效,主机输出)信号线命名也是五花八门,以下的命名也是会遇见的:串口时钟:SCLK:SCK主输出--->从输入(MOSI):SIMO,MTSR -对应主设备和从设备上的MOSI,相互连接SDI,DI,DIN,SI -在从设备上;连接到主设备上的MOSI,或连接到下面的连接SDO,DO,DOUT,SO -在主设备上;连接到从站上的MOSI,或连接到上面的连接主输入<---从输出(MISO):SOMI,MRST -对应主设备和从设备上的MISO,相互连接SDO,DO,DOUT,SO -在从设备上;连接到主设备上的MISO,或连接到下面的连接SDI,DI,DIN,SI -主设备;连接到奴隶上的MISO或上面的连接从机选择:SS:SSEL,CS,CE,nSS,/SS,SS#以上容易让人混淆的名字是SDO、SDI、DOUT、DIN等,这些都需要看具体印在主设备还是从设备上单独讨论。
一、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的下降沿有效。