微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > SPI总线协议使用与原理

SPI总线协议使用与原理

时间:12-15 来源:互联网 点击:
SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。

SCSPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(用于单向传输时,也就是半双工方式)。也是所有基于SPI的设备共有的,它们是SDI(数据输入MOSI)、SDO(数据输出MISO)、SCLK(时钟)、CS(片选)。

(1)MOSI– SPI总线主机输出/从机输入(SPI Bus Master Output/Slave Input);

(2)MISO– SPI总线主机输入/从机输出(SPI Bus Master Input/Slave Output);

(3)SCLK –时钟信号,由主设备产生;

(4)CS –从设备使能信号,由主设备控制(Chip select),有的IC此pin脚叫SS。

其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。这就允许在同一总线上连接多个SPI设备成为可能。

接下来就负责通讯的3根线了。通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCLK时钟线存在的原因,由SCK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。

在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。在多个从设备的系统中,每个从设备需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。

应用举例:设主机和从机初始化就绪,并且主机的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位时钟周期才把数据读回来。SPI总线是Motorola公司推出的三线同步接口,同步串行3线方式进行通信:一条时钟线SCK,一条数据输入线MISO,一条数据输出线MOSI;用于CPU与各种外围器件进行全双工、同步串行通讯。SPI主要特点有:可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。下图示出SPI总线工作的四种方式,其中使用的最为广泛的是SPI0和SPI3方式

SPI总线四种工作方式SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI

上一篇:ST-BUS总线协议
下一篇:CAN总线仲裁机制

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top