spi总线协议详细说明.docx

上传人:牧羊曲112 文档编号:4925023 上传时间:2023-05-23 格式:DOCX 页数:10 大小:597.02KB
返回 下载 相关 举报
spi总线协议详细说明.docx_第1页
第1页 / 共10页
spi总线协议详细说明.docx_第2页
第2页 / 共10页
spi总线协议详细说明.docx_第3页
第3页 / 共10页
spi总线协议详细说明.docx_第4页
第4页 / 共10页
spi总线协议详细说明.docx_第5页
第5页 / 共10页
亲,该文档总共10页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《spi总线协议详细说明.docx》由会员分享,可在线阅读,更多相关《spi总线协议详细说明.docx(10页珍藏版)》请在三一办公上搜索。

1、SPI总线原理与应用篇电子制作2008年9月站长原创,如需引用请注明出处大家好,通过以前的学习,我们已经对51单片机综合学习系统的使用方法及学习方式有 所了解与熟悉,学会了使用IIC总线的基本知识,体会到了综合学习系统的易用性与易学性, 这一期我们将一起学习SPI总线的基本原理与应用实例。先看一下我们将要使用的51单片机综合学习系统能完成哪些实验与产品开发工作:分别 有流水灯,数码管显示,液晶显示,按键开关,蜂鸣器奏乐,继电器控制,IIC总线,SPI 总线,PS/2实验,AD模数转换,光耦实验,串口通信,红外线遥控,无线遥控,温度传感, 步进电机控制等等。主体系统如图1所示,其配套书本教程单片

2、机快速入门如图2所示。图1 51单片机综合学习系统主机部分图片图2 51单片机综合学习系统配套书本教程一一单片机快速入门上图是我们将要使用的51单片机综合学习系统硬件平台,如图1所示,本期实验我们用 到了综合系统主机、板载的AT93C46芯片,综合系统其它功能模块原理与使用详见前几期 电子制作杂志及后期连载教程介绍。SPI总线简介SPI总线基本概念SPI ( Serial Peripheral Interface 串行外设接口)总线是Motorola公司推出的一种同步串行接口技术SPI总线系统是一种同步串行外设接口,允许MCU与各种外围设备以串 行方式进行通信、数据交换。外围设备包括FLASH

3、RAM、A/ D转换器、网络控制器、MCU 等。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线, 节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的 特性,现在越来越多的芯片集成了这种通信协议。其工作模式有两种:主模式和从模式。 SPI是一种允许一个主设备启动一个从设备的同步通讯的协议,从而完成数据的交换。也就 是SPI是一种规定好的通讯方式。这种通信方式的优点是占用端口较少,一腮根就够基本 通讯了(不算电源线)。同时传输速度也很高。一般来说要求主设备要有SPI控制器(也可 用模拟方式),就可以与基于SPI的芯片通讯了。SPI系统可直

4、接与各个厂家生产的多种标准外围器件直接接口,一般使用4条线:串行时 钟线(SCK)、主机输入/从机输出数据线MISO(DO)、主机输出/从机输入数据线MOSI (DI)和低电平有效的从机选择线CS。MISO和MOSI用于串行接收和发送数据,先为 MSB(高位),后为LSB(低位)。在SPI设置为主机方式时,MISO是主机数据输入给,MOSI 是主机数据输出线。SCK用于提供时钟脉冲将数据一位位地传送。SPI总线器件间传送数据 框图如图3所示:图3 SPI总线器件间传送数据框图SPI总线的接口特性利用SPI总线可在软件的控制下构成各种系统。如1个主MCU和几个从MCU、几个从 MCU相互连接构成

5、多主机系统(分布式系统)、1个主MCU和1个或几个从I/O设备所构 成的各种系统等。在大多数应用场合,可使用1个MCU作为主控机来控制数据,并向1个或 几个从外围器件传送该数据。从器件只有在主机发命令时才能接收或发送数据。其数据的传 输格式是高位(MSB)在前,低位(LSB)在后。当一个主控机通过SPI与几种不同的串行I / O芯片相连时,必须使用每片的允许控制 端,这可通过MCU的I/O端口输出线来实现。但应特别注意这些串行I / O芯片的输入输 出特性:首先是输入芯片的串行数据输出是否有三态控制端。平时未选中芯片时,输出端应 处于高阻态。若没有三态控制端,则应外加三态门。否则MCU的MIS

6、O端只能连接1个输 入芯片。其次是输出芯片的串行数据输入是否有允许控制端。因为只有在此芯片允许时, SCK脉冲才把串行数据移入该芯片;在禁止时,SCK对芯片无影响。若没有允许控制端, 则应在外围用门电路对SCK进行控制,然后再加到芯片的时钟输入端;当然,也可以只在 SPI总线上连接1个芯片,而不再连接其它输入或输出芯片。SPI是一个环形总线结构,其时序其实很简单,主要是在SCK的控制下,两个双向移 位寄存器进行数据交换。SPI数据传输原理很简单,它需要至少4根线,事实上3根也可以。 也是所有基于SPI的设备共有的,它们是SDI(数据输入),SDO(数据输出),SCK(时钟), CS (片选)。

7、其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能 信号时(高电位或低电位),对此芯片的操作才有效。这就允许在同一总线上连接多个SPI 设备成为可能。在SPI方式下数据是一位一位的传输的。这就是SCK时钟线存在的原因, 由SCK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过SDO线,数 据在时钟上沿或下沿时改变,在紧接着的下沿或上沿被读取。完成一位数据传输,输入也使 用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据 的传输。假设8位寄存器内装的是待发送的数据10101010,上升沿发送、下降沿接收、高位 先发送。那么第一个

8、上升沿来的时候数据将会是高位数据SDO=1。下降沿到来的时候,SDI 上的电平将被存到寄存器中去,那么这时寄存器=0101010SD I,这样在8个时钟脉冲以后, 两个寄存器的内容互相交换一次。这样就完成里一个SPI时序。下面举一个实例来说明其数 据传送过程。假设主机和从机初始化就绪,并且主机的sbuff=0xaa,从机的sbuff=0x55,下面将分步 对SPI的8个时钟周期的数据情况演示一遍:(下表中“上”表示上升沿,“下”表示下降沿)脉冲序 号主机缓 存从机缓存SDISD O01010101001010101001上0101010x1010101x011下010101 001010101

9、1012上101010 0x0101011x102下1010100101010110103上0101001x1010110x013下0101001010101101014上101001 0x0101101x104下1010010101011010105上0100101x1011010x015下0100101010110101016上1001010110101x100x6下1001010101101010107上0010101x1101010x017下0010101011010101018上0101010x1010101x108下010101011010101010表1:脉冲与数据变化对应表这样

10、就完成了两个寄存器8位的交换,SDI、SDO是相对于主机而言的。其中CS引脚 作为主机的时候,从机可以把它拉底被动选为从机,作为从机的是时候,可以作为片选脚用。 根据以上分析,一个完整的传送周期是16位,即两个字节,因为,首先主机要发送命令过去, 然后从机根据主机的命令准备数据,主机在下一个8位时钟周期才把数据读回来。这样的传 输方式有一个优点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据, 而SPI允许数据一位一位的传送,甚至允许暂停,因为SCK时钟线由主控设备控制,当没 有时钟跳变时,从设备不采集或传送数据。也就是说,主设备通过对SCK时钟线的控制可 以完成对通讯的控制。S

11、PI还是一个数据交换协议,因为SPI的数据输入和输出线独立,所 以允许同时完成数据的输入和输出对于不带SPI串行总线接口的MCS51系列单片机来说,可以使用软件来模拟SPI的操 作,包括串行时钟、数据输入和数据输出。如我们可以定义三个普画/O 口用来模拟SPI器 件的SCK、MISO、MOSI。对于不同的串行接口外围芯片,它们的时钟时序是不同的。对 于在SCK的上升沿输入(接收)数据和在下降沿输出(发送)数据的器件,一般应将其串 行时钟输出口的初始状态设置为1,而在允许接口后再置为0。这样,MCU在输出1位SCK 时钟的同时,将使接口芯片串行左移,从而输出1位数据至单片机的模拟MISO线,此后

12、再 置SCK为1,使单片机从模拟的MOSI线输出1位数据(先为高位)至串行接口芯片。至此, 模拟1位数据输入输出便宣告完成。此后再置SCK为0,模拟下1位数据的输入输出,依 此循环8次,即可完成1次通过SPI总线传输8位数据的操作。对于在SCK的下降沿输入数据 和上升沿输出数据的器件,则应取串行时钟输出的初始状态为0,即在接口芯片允许时,先 置SCK为1,以便外围接口芯片输出1位数据(MCU接收1位数据),之后再置时钟为0,使 外围接口芯片接收1位数据(MCU发送1位数据),从而完成1位数据的传送。93C46存储器的软硬件设计实例下面就以目前单片机系统中广泛应用的SPI接口的数据存储器93C4

13、6为例,介绍SPI器 件的基本应用。93C46串行存储器简介93C46是1k位串行EEPROM储存器。每一个储存器都可以通过DI/DO引脚写入或读 出。它的存储容量为1024位,内部为128x8位或64x16位。93C46为串行三线SPI操作芯片,在时钟时序的同步下接收数据口的指令。指令码为9位十进制码,具有7个指令,读、擦写使 能、擦除、写、全擦、全写及擦除禁止。该芯片擦写时间快,有擦写使能保护,可靠性高, 擦写次数可达10 0万次,93C46的引脚功能图如图4所示。1日2 常73 金645DIPVccSCKDI匚noVsa图4 93C46的引脚图CS:芯片选择SCK:时钟DI:串行数据输入

14、DO:串行数据输出VSS :接地NC:空脚(应用时不用接任何电路)VCC:电源指令起始位操作数地址64X16128X8数据64X16128X8读(READ)110A5A0A6A0清除(ERASE)111A5A0A6A0写(WRITE)101A5A0A6A0D15D0D7D0写使能(EWEN)10011XXXX11XXXXX写禁止(EWDS)10000XXXX00XXXXX芯片清除(ERAL)10010XXXX10XXXXX芯片写入(WRAL)10001XXXX01XXXXXD15D0D7D0表2:93C46串行EEPROM指令格式选择表指令说明: 读(READ):当下达10XXXXXX指令后,

15、地址(XXXXXXXX)的数据在SCK=1 时由DO输出。 写(WRITE):在写入数据前,必须先下达写使能(EWEN)指令,然后再下达 01XXXXXX指令后,当SCK= 1时,会把数据码写入指定地址(XXXXXXXX);而DO=0 时,表示还在进行写操作,写入结束后DO会转为高电平。写入动作完成后,必须再下 达写禁止(EWDS)命令。 清除(ERASE):下达清除指令11XXXXXX后会将地址(XXXXXXXX)的数据清 除。 写使能(EWEN):下达0011XXXX指令后,才可以进行写(WRITE)操作。 写禁止(EWDS):下达0000XXXX指令后,才可重复进行写入(WRITE)操作

16、。 芯片清除(ERAL):下达0010XXXX指令后,全部禁止。 芯片写入(WRAL):下达0001XXXX指令后,全部写入“0”程序功能本例用来实现对93C46存储器的读写操作,并验证数据是否正确。此程序可以用配套实 验板为硬件平台,在调试时要把功能开关调到93C46处。本程序先分别向0x02和0x03两个地 址写入0x55和0 xAA,然后读其中一个地址,并将读到的数据显示出来验证是否正确。程序 默认是读0 x02地址内的数据,读者也可以修改地址数据来读其它地址数据。在实验前要先把 功能开关切换到93C46的位置上,如图5,图6所示。图5 93C46实验演示图图6 93C46实验演示图硬件原理图图7硬件原理图程序流程图图8软件流程图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号