




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SPI总线综述SPI是英文Serial Peripheral Interface的缩写,中文意思是串行外围设备接口。SPI是Motorola公司推出的一种同步串行通讯方式,是一种标准的四线同步双向串行总线,因其硬件功能很强,与SPI有关的软件就相当简单,使CPU有更多的时间处理其他事务。SPI可以使微控制器(MCU)与各种外围设备(包括FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和微控制器等)以串行方式进行通信以交换信息。SPI总线使用同步协议传送数据,接收或发送数据时由主机产生的时钟信号控制。SPI接口可以连接多个SPI芯片或装置,主机通过选择它们的片选来分时访问不同的芯片1 基本原理SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,设备之间有4线模式(双向传输时)或3线模式(单向传输时)。在4线模式下,它们是 SDI(数据输入),SDO(数据输出),SCLK(时钟),CS(片选);在3线模式下,SDI 和 SDO并为一根,定义为SIO。(1)MOSISPI 总线主机输出/从机输入(SPI Bus Master Output/Slave Input)(2)MISOSPI 总线主机输入/从机输出(SPI Bus Master Input/Slave Output) (3)SCLK时钟信号,由主设备产生 (4)CS从设备使能信号,由主设备控制 其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。这就允许在同一总线上连接多个SPI设备成为可能。接下来就负责通讯的3根线了。通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCLK时钟线存在的原因,由SCK提供时钟脉冲,SDI、SDO则基于此脉冲完成数据传输。数据输出通过 SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。SPI 总线系统有以下几种形式:1个主机和多个从机、多个从机相互连接构成多主机系统(分布式系统)、1个主机与1个或几个I/O设备构成的系统等SPI总线信号线基本连接关系,如下图SPI总线包括1根串行同步时钟信号线以及2根数据线。SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果 CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设音时钟相位和极性应该一致。SPI接口时序如图3、图4所示。SPI是一个环形总线结构由SS(CS)、SCK、SDI、SDO构成,其时序其实很简单,主要是在SCK的控制下,两个双向移位寄存器进行数据交换。假设下面的8位寄存器装的是待发送的数据10101010,上升沿发送、下降沿接收、高位先发送。 那么第一个上升沿来的时候数据将会是SDO=1;寄存器=0101010x。下降沿到来的时候,SDI上的电平将所存到寄存器中去,那么这时寄存器=0101010SDI,这样在8个时钟脉冲以后,两个寄存器的内容互相交换一次。这样就完成里一个SPI时序。 例子: 假设主机和从机初始化就绪:并且主机的SBUFF=0xaa,从机的SBUFF=0x55,下面将分步对SPI的8个时钟周期的数据情况演示一遍:假设上升沿发送数据脉冲主机SBUFF从机SBUFFSDISDO01010101001010101001上0101010x1010101x011下0101010010101011012上1010100x0101011x102下1010100101010110103上0101001x1010110x013下0101001010101101014上1010010x0101101x104下1010010101011010105上0100101x1011010x015下0100101010110101016上1001010x0110101x106下1001010101101010107上0010101x1101010x017下0010101011010101018上0101010x1010101x108下010101011010101010这样就完成了两个寄存器8位的交换,上面的上表示上升沿、下表示下降沿,SDI、SDO相对于主机而言的。其中SS引脚作为主机的时候,从机可以把它拉底被动选为从机,作为从机的是时候,可以作为片选脚用。根据以上分析,一个完整的传送周期是16位,即两个字节,因为,首先主机要发送命令过去,然后从机根据主机的名准备数据,主机在下一个8位时钟周期才把数据读回来。要注意的是,SCLK信号线只由主设备控制,从设备不能控制信号线。同样,在一个基于SPI的设备中,至少有一个主控设备。这样传输的特点:这样的传输方式有一个优点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停,因为SCLK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据。也就是说,主设备通过对SCLK时钟线的控制可以完成对通讯的控制。SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义。在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。在多个从设备的系统中,每个从设备需要独立的使能信号。2 主要特性全双工通信,可以同时发出和接收串行数据1.05Mbit/s的最大主机位速率 四种可编程主机位速率 可编程串行时钟极性与相位 可以当作主机或从机工作 提供频率可编程时钟 发送结束中断标志 写冲突保护 总线竞争保护等3 应用范围SPI主要应用在高速数据传输的外设上,例如 SD卡,FLASH芯片等。在集成电路飞速发展的近几年SPI总线应用非常广泛,大量的新型器件如LCD模块、FLASH、EEPROM存储器、数据输入、输出设备、实时时钟、AD转换器、数字信号处理器和数字信号解码器等都有采用SPI接口。在早期的单片机系统中,CPU大都不具有SPI接口,因此,对SPI接口设备的访问,基本都是通过软件模拟产生SPI接口所需要的时序。但是随着单片机技术的进步,新型的单片机一般都已将SPI接口控制器集成在单片机内部。SPI在单片机上的应用是其应用范围上的一大转折点,进一步拓宽了其应用领域,使得SPI的优势能在更多的领域体现。4 应用实例1) MCP42X2双SPI 数字电位器SPI 模块支持两种(共4 种)标准SPI 模式。它们是模式0 和3。SCK的上升沿数据采样。CS的无效状态Vih,低有效状态Vil和高有效状态Vihh。Vil就是低电平,Vih就是MCP42X2的供电电压,Vihh需要一个MCP42X2的供电的倍压。当与MCP42X2通讯时,CS只需要给出一个有效电平(低电平或倍电压)就可以。SPI0时序图命令格式命令字节具有3 个字段,即地址、命令和2 个数据位。当前仅定义了一个数据位(D8)。它用于写命令。当主器件发送正确的命令字节选择所需的操作时,会访问器件存储器。被访问的存储器单元包含在命令字节的AD3:AD0位中。所期望的操作包含在命令字节的C1:C0位中。C1:C0 决定所期望的存储器单元是被读取、写入、递增(抽头设置 + 1)还是递减(抽头设置 - 1)。递增和递减命令仅对于易失性抽头寄存器有效。当命令字节装入器件(在SDI 引脚上)时,器件的SDO引脚被驱动。对于该命令的前6 位,SDO 引脚将输出高位。在第7 位,SDO 引脚将输出CMDERR 位状态。第8 位的状态取决于所选择的命令命令位:C1C0功能位数11读数据1600写数据1601递增810递减8存储器映射和受支持的命令只有SPI 发送具有正确的SCK 脉冲数时,才会执行SPI发送。只有接收到全部数量的时钟之后,命令才会被执行。如果CS 引脚被强制为无效状态(VIH),串行接口会复位。不完整的命令不会被执行。器件支持连续执行命令的功能。当CS 引脚处于有效状态(VIL 或VIHH)时,可以接收任意的有效命令序列2) 基于LPC2103的SPI总线技术的应用本文给出了一种基于SPI总线的LPC2103控制外围LED显示的设计方法。利用74HC595驱动静态共阳LED数码管,使用串转并的方式实现I/ O口的扩展。1 LPC2103中的SPI功能特性LPC2103是一个基于支持实时仿真的16/32位ARM7TDMIS CPU的微控制器,内部具有2个完全独立的SPI控制器,采用全双工的数据通信方式,最大数据位速率为外设时钟Fpclk的l/8。与SPI总线接口有关的专用寄存器有:(1)SPCR控制寄存器。该寄存器包含一些可编程位来控制SPI总线的功能,而且在数据传输之前进行设定,主要有时钟相位控制、时钟极性控制、主从模式选择、字节传输移动方向及SPI中断使能;(2)SPSR状态寄存器(为只读寄存器)。用于监视SPI功能模块的状态,包括一般性功能和异常情况。主要用途是检测数据传输是否完成,通过判断SPIF位来实现,其他位用于指示异常情况;(3)SPDR数据寄存器。为SPI提供数据的发送和接收,处于主模式时,向该寄存器写入数据,将启动SPI数据传输。串行数据的发送和接收通过内部移位寄存器来实现;(4)SPCCR时钟计数器寄存器。用于设置SPI时钟分频值,SPI处于主模式时,该寄存器用于控制时钟速率,即SPI总线速率,寄存器值为l位SCK时钟所占用的PCLK周期数,并且值为偶数,必须不小于8;(5)SPINT中断标志寄存器。包含了SPI的中断标志位,由数据传输完成及发生模式错误来引发。1.1 SPI电气连接利用SPI总线可在软件的控制下构成各种系统,如l个主MCU和几个从MCU、几个从MCU相互连接构成多主机系统(分布式系统)、1个主MCU和1个或几个从I/O设备所构成的各种系统等。在大多数应用场合,可使用1个MCU作为主机来控制数据,并向1个或几个从外围器件传送该数据。从器件只有在主机发命令时才能接收或发送数据。同一时刻只允许有1个主机操作总线。在数据传输过程中。总线上只能有1个主机和1个从机通信。在一次数据传输中,主机总是向从机发送1个字节数据,而从机也总是向主机发送1个字节数据。图l为SPI在主模式下控制2个SPI从机的硬件连接图。1.2 SPI数据传输在SPI数据传输中,SPCR控制寄存器的CPHA和CPOL位作用非常关键。CPHA为时钟相位控制,该位决定SPI传输时数据和时钟的关系,并控制从机传输的起始和结束,该位为1,时钟前沿数据输出,后沿数据采样;为0,时钟前沿数据采样,后沿数据输出。CPOL为时钟极性控制。为l时,SCK为低电平有效;为0时。SCK努高电平有效。图2为SPI的4种不同数据传输格式时序。描述的是8位数据传输。该时序图水平方向分成3部分:(1)描述SCK和SSEL信号;(2)描述CPHA为0时的MOSI和MISO信号;(3)描述CPHA为l时的MOSI和MISO信号。SSEL信号为低电平,说明SPI工作在从模式。其中,MOSI和MISO信号中的bitlbit8表示传输的第几位数据。2 74HC595扩展I/O接口电路SPI是一个串行输入输出的接口,使用串转并的接口芯片可以实现扩展I/0口。74HC595芯片为一种常用的8位串转并移位寄存器芯片。本系统利用74HC595来驱动静态共阳LED数码管。74HC595的主要优点:具有数据存储寄存器。在移位过程中。输出端的数据可以保持不变。这在串行速度慢的场合很有用处,数码管没有闪烁感。LPC2103I作在SPI主模式下。图3为74HC595逻辑图。图中,SI为串行数据输入引脚,用来连接LPC2103的MOSI功能引脚;SCK为移位寄存器的时钟输入,连接LPC2103串行时钟线SCK;SCLR 为清移位寄存器引脚;RCK为锁寄存器锁存时钟引脚;即输出触发端与SSEL连接;OE为输出使能引脚;SQH为串行数据输出引脚,连接MISO;QAQH引脚为并行输出。当SCLR为高电平、OE使能接低时,SCK产生一个上升沿,SI引脚当前电平值将在移位寄存器中左移l位,在下一个上升沿到来时移位寄存器中的所有位都会向左移l位,同时SQH引脚也会串行输出移位寄存器中的高位的值。当RCK产生上升沿时,移位寄存器的值将会被锁存到锁存器里,并从QAQH引脚输出。图4为SPI接13与74HC595的连接原理图。其中QAQH分别连接共阳LED数码管的8个段。在SPI输出1个字节的数据时,SSEL产生1个低电平,SPI主机串行地发该字节的各个位,各个位都依次被锁存在74HC595的移位寄存器内,当1个字节的数据传输完成后,SSEL由低电平变为高电平,从而使74HC595的移位寄存器的值被锁存到74Hc595的锁存器并从其QAQH引脚输出;在SPI输出1个字节数据的同时,74HC595移位寄存器之前的值也通过MISO引脚被SPI主机读回。3 软件设计软件设计包括:进行IO口初始化,设置SPI引脚连接,启用LPC2103的SPI0总线,设置GPIO的P0.4、P0.5、P0.6、P0.7为SPl 0总线的SCK0、MIS00、MOSIO、SSELO特殊功能,置74HC595片选端的I/O口为输出功能。其代码如下:PINSEL0=0x00005500;/股置SPI引脚连接PINSELl=Ox00000000;IODIR=HC595_CS;/设置片选端I/O口为输出3.1 SPI总线操作初始化图5为SPI总线操作流程图。使用LPC2103的SPI总线主模式下实现对74HC595的数据传输,用来驱动外围LED数码管。设置SPI时钟。在SPI主模式下,SPCCR寄存器控制SCK的频率,SPI速率为Fpclk/SPCCR。通过SPCR控制寄存器设置时钟相位、时钟极性、主模式控制、字节移动方向及SPI中断使能等。代码实现如下:Void MSpilni(void)SPI_SPCCR=0x52; /设置SPI时钟分频SPI_SPCR=(03) / CPHA=0,数据再从SCK的第一时钟沿采样(14) /CPOL=1,SCK为低有效(15) /STR=1,SPI处于主模式(06) / LSBF=0,SPI数据传输MSB(位71)在先(07); /SPIE=0,SPI中断被禁止3.2 SPI总线主模式下数据发送过程首先选择从机。设置片选。选择74HC595为从机,置片选端SSEL为低有效。将发送的数据写入SPDR。发送出去。等待SPIF置位,即数据发送完毕。最后可从SPDR读取收到的数据。以下为发送函数:uint8 MSendData(uint8 data) IOCLR=HC595_CS;/片选端,由LPC2103指定的I/O口置位SPI_SPDR=data;while(0=(SPI_SPSR&Ox80); /等待
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 影视文化产业的发展现状与未来
- 连云港师范高等专科学校《家具设计》2023-2024学年第一学期期末试卷
- 陕西科技大学镐京学院《中国古代科技史》2023-2024学年第一学期期末试卷
- 教育信息化推动文化教育发展
- 青海交通职业技术学院《电视包装设计》2023-2024学年第一学期期末试卷
- 南昌健康职业技术学院《运动(二)》2023-2024学年第一学期期末试卷
- 提升教师团队建设与协作能力
- 西安外事学院《心理护理与精神障碍护理》2023-2024学年第一学期期末试卷
- 重庆商务职业学院《风景园林设计》2023-2024学年第一学期期末试卷
- 陕西警官职业学院《药物代谢实验》2023-2024学年第一学期期末试卷
- GB/T 27024-2014合格评定人员认证机构通用要求
- 1:1000地形图测绘项目技术设计书
- 2023年天河区中小学生游泳比赛成绩册
- 气功修炼十奥妙
- 可定的疗效与安全性
- 电力电子技术第五版(王兆安)课件全
- QB∕T 2080-2018 高回弹软质聚氨酯泡沫塑料
- 工程机械设备保险附加第三者责任保险条款
- 医院感染知识培训记录范文(精选6篇)
- 日周月安全检查记录表
- 上海电动汽车充电设施建设管理暂行规定
评论
0/150
提交评论