SPI总线bus的综述.docx

上传人:b****7 文档编号:9398540 上传时间:2023-02-04 格式:DOCX 页数:15 大小:336.74KB
下载 相关 举报
SPI总线bus的综述.docx_第1页
第1页 / 共15页
SPI总线bus的综述.docx_第2页
第2页 / 共15页
SPI总线bus的综述.docx_第3页
第3页 / 共15页
SPI总线bus的综述.docx_第4页
第4页 / 共15页
SPI总线bus的综述.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

SPI总线bus的综述.docx

《SPI总线bus的综述.docx》由会员分享,可在线阅读,更多相关《SPI总线bus的综述.docx(15页珍藏版)》请在冰豆网上搜索。

SPI总线bus的综述.docx

SPI总线bus的综述

SPI总线综述

SPI是英文SerialPeripheralInterface的缩写,中文意思是串行外围设备接口。

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)MOSI–SPI总线主机输出/从机输入(SPIBusMasterOutput/SlaveInput)

(2)MISO–SPI总线主机输入/从机输出(SPIBusMasterInput/SlaveOutput)

(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

从机SBUFF

SDI

SDO

0

10101010

01010101

0

0

1上

0101010x

1010101x

0

1

1下

01010100

10101011

0

1

2上

1010100x

0101011x

1

0

2下

10101001

01010110

1

0

3上

0101001x

1010110x

0

1

3下

01010010

10101101

0

1

4上

1010010x

0101101x

1

0

4下

10100101

01011010

1

0

5上

0100101x

1011010x

0

1

5下

01001010

10110101

0

1

6上

1001010x

0110101x

1

0

6下

10010101

01101010

1

0

7上

0010101x

1101010x

0

1

7下

00101010

11010101

0

1

8上

0101010x

1010101x

1

0

8下

01010101

10101010

1

0

这样就完成了两个寄存器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读数据16

00写数据16

01递增8

10递减8

存储器映射和受支持的命令

只有SPI发送具有正确的SCK脉冲数时,才会执行SPI发送。

只有接收到全部数量的时钟之后,命令才会被执行。

如果CS引脚被强制为无效状态(VIH),串行接口会复位。

不完整的命令不会被执行。

器件支持连续执行命令的功能。

当CS引脚处于有效状态(VIL或VIHH)时,可以接收任意的有效命令序列

2)基于LPC2103的SPI总线技术的应用

本文给出了一种基于SPI总线的LPC2103控制外围LED显示的设计方法。

利用74HC595驱动静态共阳LED数码管,使用串转并的方式实现I/O口的扩展。

1LPC2103中的SPI功能特性

LPC2103是一个基于支持实时仿真的16/32位ARM7TDMI—SCPU的微控制器,内部具有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.1SPI电气连接

利用SPI总线可在软件的控制下构成各种系统,如l个主MCU和几个从MCU、几个从MCU相互连接构成多主机系统(分布式系统)、1个主MCU和1个或几个从I/O设备所构成的各种系统等。

在大多数应用场合,可使用1个MCU作为主机来控制数据,并向1个或几个从外围器件传送该数据。

从器件只有在主机发命令时才能接收或发送数据。

同一时刻只允许有1个主机操作总线。

在数据传输过程中。

总线上只能有1个主机和1个从机通信。

在一次数据传输中,主机总是向从机发送1个字节数据,而从机也总是向主机发送1个字节数据。

图l为SPI在主模式下控制2个SPI从机的硬件连接图。

1.2SPI数据传输

在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信号中的bitl—bit8表示传输的第几位数据。

274HC595扩展I/O接口电路

SPI是一个串行输入输出的接口,使用串转并的接口芯片可以实现扩展I/0口。

74HC595芯片为一种常用的8位串转并移位寄存器芯片。

本系统利用74HC595来驱动静态共阳LED数码管。

74HC595的主要优点:

具有数据存储寄存器。

在移位过程中。

输出端的数据可以保持不变。

这在串行速度慢的场合很有用处,数码管没有闪烁感。

LPC2103I作在SPI主模式下。

图3为74HC595逻辑图。

图中,SI为串行数据输入引脚,用来连接LPC2103的MOSI功能引脚;SCK为移位寄存器的时钟输入,连接LPC2103串行时钟线SCK;

为清移位寄存器引脚;RCK为锁寄存器锁存时钟引脚;即输出触发端与SSEL连接;

为输出使能引脚;SQH为串行数据输出引脚,连接MISO;QA~QH引脚为并行输出。

为高电平、

使能接低时,SCK产生一个上升沿,SI引脚当前电平值将在移位寄存器中左移l位,在下一个上升沿到来时移位寄存器中的所有位都会向左移l位,同时SQH引脚也会串行输出移位寄存器中的高位的值。

当RCK产生上升沿时,移位寄存器的值将会被锁存到锁存器里,并从QA~QH引脚输出。

图4为SPI接13与74HC595的连接原理图。

其中QA~QH分别连接共阳LED数码管的8个段。

在SPI输出1个字节的数据时,SSEL产生1个低电平,SPI主机串行地发该字节的各个位,各个位都依次被锁存在74HC595的移位寄存器内,当1个字节的数据传输完成后,SSEL由低电平变为高电平,从而使74HC595的移位寄存器的值被锁存到74Hc595的锁存器并从其QA~QH引脚输出;在SPI输出1个字节数据的同时,74HC595移位寄存器之前的值也通过MISO引脚被SPI主机读回。

3软件设计

软件设计包括:

进行IO口初始化,设置SPI引脚连接,启用LPC2103的SPI0总线,设置GPIO的P0.4、P0.5、P0.6、P0.7为SPl0总线的SCK0、MIS00、MOSIO、SSELO特殊功能,置74HC595片选端的I/O口为输出功能。

其代码如下:

PINSEL0=0x00005500;//股置SPI引脚连接

PINSELl=Ox00000000;

IODIR=HC595_CS;//设置片选端I/O口为输出

3.1SPI总线操作初始化

图5为SPI总线操作流程图。

使用LPC2103的SPI总线主模式下实现对74HC595的数据传输,用来驱动外围LED数码管。

设置SPI时钟。

在SPI主模式下,SPCCR寄存器控制SCK的频率,SPI速率为Fpclk/SPCCR。

通过SPCR控制寄存器设置时钟相位、时钟极性、主模式控制、字节移动方向及SPI中断使能等。

代码实现如下:

VoidMSpilni(void)

{

SPI_SPCCR=0x52;//设置SPI时钟分频

SPI_SPCR=(0<<3)|//CPHA=0,数据再从SCK的第一时钟沿采样

(1<<4)|//CPOL=1,SCK为低有效

(1<<5)|//STR=1,SPI处于主模式

(0<<6)|//LSBF=0,SPI数据传输MSB(位71)在先

(0<<7);//SPIE=0,SPI中断被禁止

}

3.2SPI总线主模式下数据发送过程

首先选择从机。

设置片选。

选择74HC595为从机,置片选端SSEL为低有效。

将发送的数据写入SPDR。

发送出去。

等待SPIF置位,即数据发送完毕。

最后可从SPDR读取收到的数据。

以下为发送函数:

uint8MSendData(uint8data)

{IOCLR=HC595_CS;//片选端,由LPC2103指定的I/O口置位

SPI_SPDR=data;

while(0==(SPI_SPSR&Ox80));//等待SPIF置位,即等待数据发

//完毕

IOSET=HC595_CS;//片选置高无效,结束发送

return(SPI_SPDR);//返回接收到的数据

}

3.3控制LED数码管主函数

主函数使用LPC2103的SPI接口输出给74HC595,用来

控制LED数码管显示。

DISP_TAB[]为LED显示0一F字模的

16进制码表。

MSendData()实现每一字节数据的发送。

#defineHC595_CSOx00000100//P0.8口为74HC595的片选

uint8constDISP_TAB[16I={0xC0,OxF9,0xA4,OxBO,0x99,0x92,Ox82,OxF8,0x80,0x90,0x88,0x83,0xC6,0xAl,0x86,Ox8E};

intmain(void)

{uint8rcv_data;

uint8i;

PINSEL0=0x00005500;//设置SPI引脚连接

PINSELl=0x00000000;

IODIR=HC595_CS;//设置LPC2103片选I/O口为输出功能

MSpiIni();//初始化SPI接口

while

(1)

{for(i=0;i<16;i++)

{rcv_data=MSendData(DISP_TAB[i]);//发送显示数据

DelayNS(50);//延时

}

}

return(O);

}

基于SPI总线的数据通信技术已经广泛应用在MCU与各种外围设备的串行通信中。

如存储系统、A/D转换系统、网络控制器和多MCU构成的分布式系统。

本文给出了74HC595芯片驱动LED数码管显示的电路,采用SPI总线技术实现对LED显示的数据传输,方便快捷、准确性高、速度快。

满足了复杂微控制系统对外围设备控制的要求。

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

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1