SPI接口设计与实现
- 格式:docx
- 大小:33.54 KB
- 文档页数:3
SPI 串行外设接口总线,最早由Motorola提出,出现在其M68系列单片机中,由于其简单实用,又不牵涉到专利问题,因此许多厂家的设备都支持该接口,广泛应用于外设控制领域。
SPI接口是一种事实标准,并没有标准协议,大部分厂家都是参照Motorola的SPI接口定义来设计的。
但正因为没有确切的版本协议,不同家产品的SPI接口在技术上存在一定的差别,容易引起歧义,有的甚至无法直接互连(需要软件进行必要的修改)。
虽然SPI接口的内容非常简单,但本文仍将就其中的一些容易忽视的问题进行讨论。
SPI ( Serial Peripheral Interface )SPI接口是Motorola 首先提出的全双工三线同步串行外围接口,采用主从模式(Master Slave)架构;支持多slave模式应用,一般仅支持单Master。
时钟由Master控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后(MSB first);SPI 接口有2根单向数据线,为全双工通信,目前应用中的数据速率可达几Mbps的水平。
SPI接口信号线SPI接口共有4根信号线,分别是:设备选择线、时钟线、串行输出数据线、串行输入数据线。
设备选择线SS-(Slave select,或CS-)SS-线用于选择激活某Slave设备,低有效,由Master驱动输出。
只有当SS-信号线为低电平时,对应Slave设备的SPI接口才处于工作状态。
SCLK:同步时钟信号线,SCLK用来同步主从设备的数据传输,由Master驱动输出,Slave设备按SCK的步调接收或发送数据。
串行数据线:SPI接口数据线是单向的,共有两根数据线,分别承担Master到Slave、Slave到Master的数据传输;但是不同厂家的数据线命名有差别。
Motorola的经典命名是MOSI和MISO,这是站在信号线的角度来命名的。
MOSI:When master, out line; when slave, in lineMISO:When master, in line; when slave, out line比如MOSI,该线上数据一定是Master流向Slave的。
SPl接口的设计笫二章介绍了模数转换器的可编程控制架构,其中可编程控制功能的实现需要分成两部分:一部分为SPl接口电路,以及其根据内部寄存器存储的数据产生的控制信号;另一部分是具体的电路受控模块。
本章将介绍接口与数字逻辑电路的设计,包括应用于本模数转换器的SPl接口与数字逻辑电路的设计、综合以及仿真验证。
数据通信接口3.1.1串行通信基本的通信方式有两种:并行通信和串行通信。
并行通信是指数据以成组的方式,在多条并行信道上同时进行传输。
串行通信指要传送的数据或信息按一定的格式编码,然后在单根线上,按位的先后顺序进行传送。
接收数据时,每次从单根线上按位接收信息,再把它们拼成一个字符,送给CPU (Central PrOCeSSing Unit)做进一步的处理。
收发双方必须保持字符同步,以使接收方能从接收的数据比特流中正确区分出与发送方相同的一个一个字符。
串行通信只需要一条传输信道,易于实现,是目前主要釆用的一种通信方式,它具有通信线少以及传送距离远等优点。
串行通信时,按数据的传送的方向可以分为单工、半双工和全双工等三种方式。
(1)单工(Simplex):数据线仅能向一个方向传输数据,两个设备进行通信时,一边只能发送数据,另一边只能接收数据。
(2 )半双工(HaIfDupIex):数据可在两个设备间向任一个方向传输,但因为只有一根传输线,故同一时间内只能向一个方向传输数据,不能同时收发。
(3 )全双工(FUll Duplex):对数据的两个传输方向采用不同的通路,可以同时发送和接收数据,串行通信有两种基本工作方式:异步方式和同步方式。
采用异步方式(ASynChrOnOUS)时,数据发送的格式如图3-1所示。
不发送数据时,数据信号线呈现高电平,处于空闲状态。
当有数据要发送时,数据信号线变成低电平,并持续一位的时间,用于表示字符的开始,称为起始位。
起始位之后,在信号线上依次出现待发送的每一位字符数据,最低有效位Q最先出现。
SPI接口存储芯片测试系统的设计与实现摘要:近年来,社会进步迅速,随着网络技术和嵌入式技术的迅猛发展,嵌入式系统已成为继PC 和Internet 之后,IT 界新的技术热点。
利用嵌入式技术实现远程监控和视频数据传输已经得到了广泛的应用,为了实现这些应用,数据传输是很重要的环节。
为了减轻数字逻辑电路数据处理的压力和便于数据交换,会用到很多起承上启下枢纽作用的芯片,而与这些芯片进行连接的接口技术大多是采用SPI 接口技术。
在很多高档单片机中,高效率高速的SPI 串行接口技术作为一种标准配置,已经应用于数据交换和扩展外设。
在嵌入式数据传输中,对于波特率、数据格式等有着严格限制的工业控制中,通用串口不再适用,必须对串口进行重新开发。
关键词:SPI接口存储芯片测试系统;设计;实现引言数字电位器亦称数控可编程电阻器,是一种代替传统机械电位器(模拟电位器)的新型CMOS 数字、模拟混合信号处理的集成电路。
数字电位器也可作为普通电阻使用,但现在更多的作为数字可调电位器使用。
数字电位器采用数控方式调节电阻值,具有使用灵活、调节精度高、无触点、低噪音等显著优点。
数字电位器有数字输入控制,产生一个模拟量的输出,依据数字电位器的不同,抽头电流最大值可以从几百微安到几个毫安。
1数字电位器的特性参数数字电位器的电参数分为两类,直流参数和交流参数。
直流参数主要包括理论电阻值、变阻器差分非线性偏差、变阻器积分线性度、电刷阻抗、电位器非线性误差、电位器积分非线性偏差、满幅偏差、零阻值偏差、高输入电平、低输入电平、电源静态电流、电源工作电流、电源灵敏度等。
交流参数包括建立时间、最高工作速率、时钟信号的高持续时间、时钟信号的低持续时间、控制脚下降沿到时钟信号第一个上升沿的时间等重要指标,这些都是考核数字电位器性能的关键参数。
数字电位器一般有两种工作模式:电位器模式和模拟电阻器模式。
模拟电阻器模式时,电位器就类似于一个普通的两端电阻,利用电刷端的滑动实现不同的电阻值。
SPI接⼝串⾏外设接⼝(Serial Peripheral Interface)是⼀种同步外设接⼝,它可以使单⽚机与各种外围设备以串⾏⽅式进⾏通信以交换信息。
SPI最早是Motorola公司提出的全双⼯三线同步串⾏外围接⼝,采⽤主从模式(Master—Slave)架构,⽀持⼀个或多个Slave设备,由于其简单实⽤、性能优异,因此许多⼚家的设备都⽀持该接⼝,⼴泛应⽤于单⽚机和外设模块之间的连接。
SPI接⼝只需4条线:串⾏时钟线(SCK)、主机输⼊/从机输出数据线(MISO)、主机输出/从机输⼈数据线(MOSI)和低电平有效的从机选择线(SS)。
(1)MISO:主设备输⼊/从设备输出引脚。
该引脚在从模式下发送数据,在主模式下接收数据。
(2)MOSI:主设备输出/从设备输⼊引脚。
该引脚在主模式下发送数据,在从模式下接收数据。
(3)SCK:串⼝时钟,作为主设备的输出,从设备的输⼊。
(4)SS:从设备选择。
这是⼀个可选的引脚,⽤来选择主/从设备。
它的功能是⽤来作为⽚选引脚,让主设备可以单独地与特定从设备通信,避免数据线上的冲突。
SPI是⼀个环形总线结构,MOSI引脚相互连接,MISO引脚相互连接,数据在主和从之间串⾏地传输(MSB位在前),具体如下图所⽰。
SPI有主从两种⼯作模式,在主模式下,SPI为其他节点的CLK引脚提供串⾏时钟,数据从MOSI引脚输出,从MISO引脚输⼊。
在从模式下,数据从MISO引脚移出并由MOSI引脚移⼊,CLK引脚作为串⾏移位时钟的输⼊。
LPC824⽚内设计有SPI接⼝,具体的引脚取决于开关矩阵SWM的配置。
LPC824的SPI接⼝具有以下特点:•直接⽀持1⾄16位的数据发送。
软件⽀持更⼤的帧。
•主机和从机操作。
•⽆需读取输⼊数据即可将数据发送⾄从机,这在设置SPI存储器的时候很有⽤。
•控制信息还可与数据⼀同写⼊,这样便实现了极为丰富的操作,包括任意长度的帧。
•最多4个从机选择输⼊/输出,极性可选且使⽤灵活。
SPI 接口的设计第二章介绍了模数转换器的可编程控制架构,其中可编程控制功能的实现需要分成两部分:一部分为SPI 接口电路,以及其根据内部寄存器存储的数据产生的控制信号;另一部分是具体的电路受控模块。
本章将介绍接口与数字逻辑电路的设计,包括应用于本模数转换器的SPI 接口与数字逻辑电路的设计、综合以及仿真验证。
3.1 数据通信接口 3.1.1 串行通信基本的通信方式有两种:并行通信和串行通信。
并行通信是指数据以成组的方式,在多条并行信道上同时进行传输。
串行通信指要传送的数据或信息按一定的格式编码,然后在单根线上,按位的先后顺序进行传送。
接收数据时,每次从单根线上按位接收信息,再把它们拼成一个字符,送给CPU (Central Processing Unit )做进一步的处理。
收发双方必须保持字符同步,以使接收方能从接收的数据比特流中正确区分出与发送方相同的一个一个字符。
串行通信只需要一条传输信道,易于实现,是目前主要采用的一种通信方式,它具有通信线少以及传送距离远等优点。
串行通信时,按数据的传送的方向可以分为单工、半双工和全双工等三种方式。
(1)单工(Simplex ):数据线仅能向一个方向传输数据,两个设备进行通信时,一边只能发送数据,另一边只能接收数据。
(2)半双工(Half Duplex ):数据可在两个设备间向任一个方向传输,但因为只有一根传输线,故同一时间内只能向一个方向传输数据,不能同时收发。
(3)全双工(Full Duplex ):对数据的两个传输方向采用不同的通路,可以同时发送和接收数据,串行通信有两种基本工作方式:异步方式和同步方式。
采用异步方式(Asynchronous )时,数据发送的格式如图3-1所示。
不发送数据时,数据信号线呈现高电平,处于空闲状态。
当有数据要发送时,数据信号线变成低电平,并持续一位的时间,用于表示字符的开始,称为起始位。
起始位之后,在信号线上依次出现待发送的每一位字符数据,最低有效位0D 最先出现。
十二SPI总线接口的verilog的实现1.实验目的项目中使用的许多器件需要SPI接口进行配置,比如PLL:ADF4350,AD:AD9627,VGA:AD8372等,本实验根据SPI协议,编写了一个简单的SPI读写程序,可以进行32位数据的读写,可以设置SPI SCLK相对于主时钟的分频比。
2.实验原理SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。
外围设置FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。
SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOST和低电平有效的从机选择线SS(有的SPI接口芯片带有中断信号线INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。
SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。
也是所有基于SPI的设备共有的,它们是SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)。
(1)MOSI –主设备数据输出,从设备数据输入(2)MISO –主设备数据输入,从设备数据输出(3)SCLK –时钟信号,由主设备产生(4)CS –从设备使能信号,由主设备控制其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。
这就允许在同一总线上连接多个SPI设备成为可能。
接下来就是负责通讯的3根线了。
通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。
这就是SCK时钟线存在的原因,由SCK 提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。
数据输出通过 SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。
一、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的下降沿有效。
串行显示驱动器PS7219及单片机的SPI接口设计在单片机的应用系统中,为了便于人们观察和监视单片机的运行情况,常常需要用显示器显示运行的中间结果及状态等等。
因此显示器往往是单片机系统必不可少的外部设备之一。
常用的显示器有很多种,其中LED(发光二极管显示器)是应用较多的一种,它特别适用于强光和光线极弱的场合。
要使LED显示,必须提供段选码和位选码。
传统的硬件译码显示接口广泛采用由中央处理器CPU(如:Intel 8031)扩展I/O口(如:8255),然后再使用逻辑门驱动芯片(如7407等)驱动相应的位码和段码。
这种设计,芯片间连线十分复杂,系统工作可靠性不高,已越来越不适应单片机系统集成化、小型化的发展要求。
特别是系统并行扩展I/O,其缺点十分明显(1)连线太多,系统连线复杂,印制板布线不方便;(2)并行总线上挂靠的器件太多,系统工作的稳定性和可靠性低;(3)体积较大,集成度不高。
正是由于上述原因,近年来,各厂家相继开发出了集成度较高、驱动能力较强、驱动位数较多、功能齐全的LED显示驱动器。
本文介绍一种低价位、高性能的多位LED显示驱动器PS7219芯片,以及它与单片机89C51具体的SPI接口设计与应用软件。
1PS7219简介PS7219是一种新型的串行接口的8位数字静态显示芯片。
它是由武汉力源公司新推出的24脚双列直插式芯片,采用流行的同步串行外设接口(SPI),可与任何一种单片机方便接口,并可同时驱动8位LED (或64只独立LED),其引脚图如图1所示。
PS7219内部具有15×8RAM功能控制寄存器,可方便选址,对每位数字可单独控制、刷新、不需重写整个显示器。
显示数字亮度可由数字进行控制,每位具有闪烁使能控制位。
当引脚CON(13脚)置高电平,可禁止所有显示,达到降低功耗的效果,但同时并不影响对控制寄存器的修改。
PS7219还有一个掉电模式、一个允许用户从1位数显示到8位数显示选择的扫描界限寄存器和一个强迫所有LED接通的测试模式。
一种3线制半双工SPI接口设计
串行外围设备接口SPI(serial peripheralinterface)技术是Motorola 公司推出的一种微处理器、微控制器及其外设间的一种全/半双工同步串行数据接口标准,具有衔接线少、传输效率高等特点,因其硬件功能很强,与SPI有关的软件就相当容易,使CPU有更多的时光处理其他事务。
SPI接口普通采纳4条衔接线:串行时钟线(SCK)、主机输出/从机输入数据线(MOSI)、主机输入/从机输出数据线(MISO)和低电平使能的从机挑选线(SS),有的还带有中断信号线(INT),半双工或单向模式则不需要主机输出/从机输入数据线(MOSI)。
为了在削减引脚的基础上完成主从机的双向通讯,本文采纳半双工机制实现了一种3线制双向SPI 总线模块,即通过使能信号实现数据传输的方向控制,因此将主机输出/从机输入(MOSI)线和主机输入/从机输出线(MISO)线合并为一条双向信号线。
该模块是某芯片中的接口模块,其作用是实现基带芯片对射频芯片的控制以及数据交换,而且为了便于和射频集成,该模块终于以硬IP形式实现。
1 SPI总线协议
射频芯片的SPI接口具有两个主要特征:Slave工作模式和半双工方式通讯。
SPI接口信号描述如表1。
接口时序要求如下:
1)输出时序
当SEN为高电平常,SPI接口处于输出状态。
每次数据传输开头于SCK 信号的升高沿。
数据传输过程中,数据由SCK信号控制,并遵循下列规章:数据传输时,低位在前,高位在后;每个输出数据位在SCK下降沿采样;当本帧数据输出达到24 bit时,结束数据输出;当本帧数
第1页共4页。
S PI 总线接口的FPG A 设计与实现 杨承富1,徐志军2(1.解放军理工大学通信工程学院研究生2队,江苏南京210007;2.解放军理工大学通信工程学院电子信息工程系)摘 要:文中介绍了采用Alter ea 公司F LEX 10K 型的F PG A 器件实现串行外设接口(SPI)的原理与过程,给出了逻辑框图以及部分V erilog代码。
用此种方法实现的接口与专用接口芯片相比,具有使用灵活,系统配置方便的优点。
关键词:串行外设接口;现场可编程门阵列;V erilog 硬件描述语言中图分类号:T P336文献标识码:A 文章编号:0032-1289(2004)02-0072-05Design and Implemen t SPI Bus Interface with FPGAYAN G Cheng -fu 1,X U Zhi -jun 2(1.Postg raduate T ea m 2ICE,P L AU S T,Na njing 210007,China;2.Depar tment of Eelc tro nic Info r ma tio n Eng nee ring ICE,PL A U ST )Abstract :The theo ry and the wa y of im plementing a SPI interface w ith FPGA areintroduced,and the blo ck diag ram a nd som e Verilog code are presented.The chip implemented in this way has mo re agility and is m ore conv enient to co nfigure than others.Key words :SPI interface ;FPGA ;Verilog HDL串行外设接口SPI(Serial Peripheral Interface)是Mo to ro la 公司推出的一种同步串行接口。
电子与电气工程系课程设计、专题(综合)实验报告课题名称__串行接口IP核的设计与验证(spi)_专业____ 电子信息工程________班级_____ 08电子1班__________学号__0806012103_ 0806012104_姓名___ 高江柯____吴冠雄__ ______成绩________________________指导教师_______袁江南____________2011年 6 月 15 日串行接口IP核的设计与验证(SPI)(FPGA作为主机)一、实验目的:通过本实验的学习,使学生掌握使用VHDL 设计一个实用数字系统的能力,以及单片机串行接口编程等知识,训练 VHDL以及单片机的编程与综合使用能力,培养工程设计的基本技能,为今后毕业设计以及实际工作奠定基础。
二、实验原理SPI 接口是在CPU 和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,地位在后,为全双工通信,数据传输速度总体来说比I2C 总线要快,速度可达到几Mbps。
SPI 接口是以主从方式工作的,这种模式通常有一个主器件和一个或多个从器件,其接口包括以下四种信号:(1)MOSI –主器件数据输出,从器件数据输入(2)MISO –主器件数据输入,从器件数据输出(3)SCLK –时钟信号,由主器件产生(4)/CS –从器件使能信号,由主器件控制在点对点的通信中,SPI 接口不需要进行寻址操作,且为全双工通信,显得简单高效。
SPI接口在内部硬件实际上是两个简单的移位寄存器,传输的数据为8位,在主器件产生的从器件使能信号和移位脉冲下,按位传输,高位在前,低位在后。
下图所示,在SCLK 的下降沿上数据改变,同时一位数据被存入移位寄存器。
三、实验步骤:1、查找关于SPI的资料,认识理解SPI。
2、根据SPI传输数据的时序图构建出SPI的框图。
3、利用自顶向下的方法根据框图分模块进行程序的编写。
STM32 SPI接口的简单实现通常SPI通过4个引脚与外部器件相连:・MISO:主设备输入/从设备输出引脚。
该引脚在从模式下发送数据,在主模式下接收数据。
・MOSI:主设备输出/从设备输入引脚。
该引脚在主模式下发送数据,在从模式下接收数据。
・SCK:串口时钟,作为主设备的输出,从设备的输入・NSS:从设备选择。
这是一个可选的引脚,用来选择主/从设备。
它的功能是用来作为“片选引脚”,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突。
从设备的NSS引脚可以由主设备的一个标准I/O引脚来驱动。
一旦被使能(SSOE位),NSS引脚也可以作为输出引脚,并在SPI处于主模式时拉低;此时,所有的SPI设备,如果它们的NSS引脚连接到主设备的NSS引脚,则会检测到低电平,如果它们被设置为NSS硬件模式,就会自动进入从设备状态。
当配置为主设备、NSS配置为输入引脚(MSTR=1, SSOE=0)时,如果NSS被拉低,则这个SPI 设备进入主模式失败状态:即MSTR位被自动清除,此设备进入从模式。
时钟信号的相位和极性SPI_CR寄存器的CPOL和CPHA位,能够组合成四种可能的时序关系。
CPOL(时钟极性)位控制在没有数据传输时时钟的空闲状态电平,此位对主模式和从模式下的设备都有效。
如果CPOL被清‘ 0’,SCK引脚在空闲状态保持低电平;如果CPOL 被置’ 1’,SCK引脚在空闲状态保持高电平。
如果CPHA (时钟相位)位被置‘ 1’,SCK时钟的第二个边沿(CPOL位为0时就是下降沿,CPOL位为‘ 1’时就是上升沿)进行数据位的采样,数据在第二个时钟边沿被锁存。
如果CPHA位被清‘ 0’,SCK时钟的第一边沿(CPOL位为‘ 0’时就是下降沿,CPOL位为‘ 1’时就是上升沿)进行数据位采样,数据在第一个时钟边沿被锁存。
CPOL时钟极性和CPHA时钟相位的组合选择数据捕捉的时钟边沿。
图212显示了SPI传输的4种CPHA和CPOL位组合。
第11章11.SPI主机接口设计11.1.概述本章考虑一个经过实际运行验证的,可以综合到各种FPGA的SPI主机的设计过程,并给出所有相关的Verilog HDL程序。
SPI是一种全双工,同步的串行数据通信标准,主要用于微处理器、微控制器、外设之间的通信。
采用SPI接口可以实现处理器和外设之间以及处理器内部的通信。
SPI系统设计灵活,可以直接实现主机与许多的具有SPI接口的外设之间的通信。
本章设计的SPI主机可以为没有标准SPI接口的微处理器或者微控制器提供标准的SPI接口。
图11-1给出SPI主机在系统中的连接框图。
注意:SPI主机设计提供标准的8051微处理器的总线读写周期,简单修改设计代码实现,可以是SPI主机支持其它微处理器接口。
图11-1 SPI主机连接框图11.2.SPI总线标准本节简要介绍SPI总线的通信协议。
关于SPI总线更多细节请参考Motorala公司的Reference Manual 68HC11。
SPI总线包括4根信号线,Serial Clock((SCK),Master Out Slave In(MOSI),Master In Slave Out(MISO)和Slave Selected(SS_N),负责在不同器件之间传递信息。
SCK信号由SPI主机驱动,管理数据传输过程。
主机以不同的波特率传输数据,数据线每传输1bit的数据SCK切换1次状态(1->0或者0->1)。
在面向字节的数据传输过程中,SPI Specification提供两种不同的时钟方案以及时钟极性选择,主机可以从四种不同的SCK传输速率中选择一种。
数据位在SCK的某个时钟沿(上升沿或者下降沿)被移出,在另一个的时钟沿,数据信号稳定时被采样。
主机将输出数据发送到MOSI,MOSI信号作为输入数据移入被选择的从机。
MISO数据线包含从机的输出数据,这些数据会被移入主机。
SPI总线在同一时刻只能有一个从机传输数据。
基于FPGA的SPI接口设计SPI是一种在FPGA和其他芯片之间传输数据的简单有效的接口方式。
SPI项目第一部分:什么是SPI第二部分:SPI的简单实现第三部分:应用第一部分:什么是SPISPI是允许一个器件同其他一个或多个器件进行通讯的简单接口。
SPI是什么样的?首先让我们来看看两个芯片之间的SPI接口是如何连接的。
在两个芯片时间通讯时,SPI需要4条连线。
正如你所看到的,他们是SCK、MISO、MOSI以及SSEL。
其中一个芯片叫做主控芯片,另一个叫从芯片。
SPI基础基本特点:1.同步2.串行3.全双工4.非即插即用5.一主多从更多细节:1.同步时钟有主控芯片产生,每个时钟传输一位数据2.数据在传输前,首先许要进行并转串,才能用一条线传输3.两条数据线,一条输入、一条输出4.主从双方有关于SPI传输的先验知识,如比特顺序、数据长度等5.数据传输有主控芯片发起,每次只与一个从芯片通讯SPI是一种同步全双工的通讯接口,每个时钟在两条数据线上各传输一比特数据。
简单的传输假设在主从芯片之间进行的是8位长度的,高位数据在前的SPI传输,则单个字节的传输在波形上看起来是这样的。
MOSI是主输出线,而MISO则是从输出线。
由于SPI是全双工的,所以在时钟沿上两条线同时传输数据。
MOSI将数据从主控芯片传输至从芯片,MISO则将从芯片的数据传输到主控芯片。
详细的说是这样的:1,首先主控芯片使能相应的SSEL信号,通知相应的从芯片数据传输要开始了;2,主控芯片产生8个SPI时钟周期,并将数据在每个时钟沿发送出去,同时从芯片在也每个时钟沿将数据发送到MISO线上。
3,主控芯片撤销SSEL信号,一次SPI传输结束多个从芯片的情况通过扩展SSEL信号,一个主控芯片可以和多个从芯片进行SPI通讯。
下图是有三个从芯片的情况:主控芯片有3条SSEL线,每次只使能条,和其中一个从芯片进行SPI通讯。
由于所有芯片的MISO都连接在一起,所以不允许同时有多个从芯片驱动MISO线。
1简介AX1K系列8位RISC微处理器内置SPI主、从设备接口,可以方便地挂接SPI接口的串行Flash。
而由于速度快,IO数量丰富,所以即使在某些无法使用内置的SPI设备的特殊场合,AX1K仍能通过用普通IO来模拟,实现高性能的软SPI接口。
2软件架构图 2-1软SPI接口的架构中间部分的信号驱动层和基础操作层合起来就是软SPI接口。
软件SPI接口一方面驱动IO 信号与SPI设备通信;另一方面向芯片命令层提供一套统一的软件接口。
3软SPI接口的应用3.1配置IO与内置SPI接口不同的是,软SPI接口可以随意选择IO。
SPI接口主要涉及4个信号:CS、SCK、SI、SO。
因此在芯片命令层需要为这几个信号定义IO,并在适当的位置进行IO初始化。
在本例中,4个信号分别加入了“SSPI_”前缀,以避免命名冲突:SSPI_CSSSPI_SCKSSPI_SISSPI_SO3.2软件接口3.2.1输入z宏SSPI_SCK_DELAY©2006 AppoTech Limited. All rights reserved. AN-AX1000-004-V10-CH-SoftSPISPI设备的速度有差异,有些支持高达数十MHz,有些只支持3MHz。
因此不同SPI设备的SCK高、低电平维持时间要求不一致。
SSPI_SCK_DELAY是插入到SCK上升沿和下降沿之后的延时,在芯片命令层定义。
z宏SPI_MODE如果SPI设备支持mode0,可以定义SPI_MODE为0。
如果SPI设备支持mode3,可以定义SPI_MODE为3。
3.2.2输出z宏SSPI_PDCS该宏负责拉高CS信号z宏SSPI_PUCS该宏负责拉低CS信号z函数SSPI_W2SI该函数将W的内容(8位)输出到SI信号线z函数SSPI_SO2W该函数从SO信号线读一字节到Wz函数SSPI_DRAM2SI该函数从Data Ram中读取W字节(1~256字节,0表示256)的数据,依次输出到SI信号线。
SPI接口设计与实现
SPI(SerialPeripheralInterface)总线是一种同步串行外设接口,它
能够使MCU与各种外围设备以串行方式实行通信以交换信息。
SPI总线应用广泛,已经成为很多器件的标准配置,能够直接和各个厂家生产的
多种标准外围器件直接接口。
其它常用的串行接口还有I2C、UART这
两种接口,这三种接口互有优缺点。
与I2C接口相比,SPI接口速度更快、协议更简单、并且是全双工的,但连线也相对多一些。
与UART接口相比,SPI更灵活,因为其使用主设备的时钟实行同步,所以两个比特之间
的时间间隔能够是任意的。
在点对点的通信中,SPI接口不需要实行寻
址操作,且为全双工通信,显得简单高效。
1SPI总线工作原理
SPI总线一般以主/从模式工作,通常有一个主设备和一个或多个从设备,数据传输由主机操纵,典型SPI结构框图如图1所示。
SPI总线包含四条信号线,分别是sclk、miso、mosi和cs,其中,sclk为数据传输时钟,由主机产生;miso是从机输出,主机输入数据线;mosi是主机输出,
从机输入数据线;cs是从设备片选信号,由主机操纵,当连接多个从设备时,通过该信号选择不同的从设备。
SPI总线是按字节发送数据的,主机和从机内部都包含一个8位串行移位寄存器,在时钟信号操纵下,寄存
器内的数据由高到低输出至各自的数据线,8个时钟后,两个寄存器内的数据就被交换了。
如果只实行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机
的传输。
当主机发送一个连续的数据流时,能够实行多字节传输,在这
种传输方式下,从机的片选端必须在整个传输过程中保持低电平。
根据串行同步时钟极性和相位不同,SPI有四种工作方式。
时钟极性(CPOL)为0时,同步时钟的空闲状态为低电平,为1时,同步时钟的空闲
状态为高电平。
时钟相位(CPHA)为0时,在同步时钟的第一个跳变沿采
样数据,为1时,在同步时钟的第二个跳变沿采样数据。
因为主设备时
钟极性和相位都是以从设备为基准的,所以主设备时钟极性的配置和从设备时钟极性的配置是相反的。
SPI工作原理:以寄存器CPOL=1、CPHA=0为例,当要传输数据时,主机操纵cs信号有效,sclk管脚输出时钟信号,在时钟上升沿,主机将需要发送的数据锁存有mosi线上,同时从miso线上读取从机发送的数据;在时钟下降沿,从机将需要发送的数据锁存有miso线上,同时从mosi 线上读取主机发送的数据,完成一次数据交换后,SPI总线重新回到空闲状态,等待下一次通信的发起。
2SPI总线硬件设计和软件实现
某项目的操纵器硬件采纳ARM+CPLD的技术方案,其中ARM为主控器,主要实现流程操纵等,CPLD为从操纵器。
ARM与CPLD之间主要通过SPI 接口实行通信,CPLD根据ARM发送的命令产生各模块的操纵逻辑,完成一百多路IO操纵,并且实现从一路UART接口到20路半双工RS485接口的收发切换。
ARM与CPLD之间的硬件接口如图2所示。
特别的,在ARM和CPLD之间设计了一个中断信号,用来提示SPI主机ARM,SPI从机CPLD有数据需要读取,请求发起SPI通信。
当CPLD作为SPI接口从机使用时,需要在CPLD中实现sclk下降沿检测、SPI操纵模块。
2.1sclk下降沿检测因为ARM在sclk的上升沿读取CPLD输出的数据,所以CPLD必须在sclk的下降沿发数,上升沿时数据稳定。
同时为了在一个sclk时钟周期只接收或发送一个比特的数据,需要使该信号仅保持一个clk周期,该信号的产生方式如图3所示。
在clk信号驱动下,当该下降沿检测信号有效时(定为高电平有效),CPLD采集miso线上的数据,并将需要发送的数据输出至mosi。
2.2SPI操纵模块如图4为从机软件设计流程图。
CPLD在系统上电后进入idle状态,idle表示空闲状态,当CPLD有数据需要传输时,通过int向ARM发送中断信号;当检测到cs信号有效时,进入spi数据传输状态;同步sclk信号,在下降沿,首先发送数据信息字节,通过数据信息字节通知ARM这次总共需要发送几个字节的数据,然后依次发送后续数
据,直到数据传输完成。
在上升沿,接收ARM发送的数据,并按字节存入RAM。
3SPI接口软件的设计仿真
对该项目SPI操纵程序实行了仿真,其仿真波形如图5所示。
这个SPI 接口每次只有8bit,8bit代表地址还是数据由用户自己的协议来定,每启动一次接口模块,无论是主设备还是从设备都会写出一个数据和接收一个数据。
接收数据流程是:当cs下降沿到来时启动SPI接收操纵模块,每个sclk下降沿读取1bit数据,ovalid有效时(高)读取odata数据(8bit)。
发送流程是:先确定从设备要写出的数据,再给主设备中断信号,主设备响应中断,启动一个读取流程,就能够读取从设备的一个
8bit数据。
4结语
SPI接口设计与实现。