SPI是串行外设接口(Serial Peripheral Interface)的缩写。是Motorola公司推出的一种同步串行接口技术,是一种高速的、全双工,同步的通信总线。
SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线:它们是SDI(数据输入)、SDO(数据输出)、SCLK(时钟)、CS(片选)。
(1)SDO/MOSI——主设备数据输出,从设备数据输入;
(2)SDI/MISO——主设备数据输入,从设备数据输出;
(3)SCLK——时钟信号,由主设备产生;
(4)CS/SS——从设备使能信号,由主设备控制。
CS作为片选信号不难理解。当总线上挂有多个从设备时,主机通过控制对应从设备的片选信号,即可选中激活该设备,完成与该设备的通讯。一般片选为低电平时,处于选中状态。
需要说明的是,SPI通信有4种不同的模式,不同的从设备可能在出厂时就是配置为某种模式,这是不能改变的;但我们的通信双方必须是工作在同一模式下,所以我们可以对我们的主设备的SPI模式进行配置,通过CPOL(时钟极性)和CPHA(时钟相位)来控制我们主设备的通信模式,具体如下:
Mode0:CPOL=0,CPHA=0
Mode1:CPOL=0,CPHA=1
Mode2:CPOL=1,CPHA=0
Mode3:CPOL=1,CPHA=1
时钟极性CPOL是用来配置SCLK的电平出于哪种状态时是空闲态或者有效态,时钟相位CPHA是用来配置数据采样是在第几个边沿。
作为特殊应用的加密芯片来说,其SPI通讯大多数采用标准SPI接口协议,但也不乏例外,调试过程中有几点注意:
1、加密芯片作为防盗版功能模块或者是数据加解密模块,大多数需作为SPI从机设备,上位机端作为SPI主机。
2、主机SPI设置成CKPOL=0 ,CKPHA=0。其含义:此时空闲态时,SCLK处于低电平,数据采样是在第1个边沿,也就是SCLK由低电平到高电平的跳变,所以数据采样是在上升沿,数据发送是在下降沿。
3、有些加密芯片协议特殊,而且由于SPI没有同步信号功能,所以加密芯片需要借助BUSY引脚来给主机发送通知信号,当BUSY为高电平,允许SPI主设备发送数据,反之允许主机接收数据。
4、BUSY为SPI请求信号。当BUSY拉低时允许SPI主设备读取数据,此时SPI主机端将CS/SS拉低,SPI_CLK产生时钟。
5、芯片发生故障无法正常运行时可通过复位重置。
转载于:https://blog.51cto.com/13520299/2307488