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接通的测试模式。
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接口设计与实现。