SPI协议详解
以实际用到的ARM PrimeCell SSP(PL022)为主,针对SPI分享以下:
SSP是一种同步串行接口控制器,可以兼容SPI、4线SSI或者Microwire总线。在一条总线上可以有多个主机或从机。在一次数据传输中,总线上只有一个主机和一个从机进行通信。数据传输原则上为全双工方式,4 位到 16 位数据帧由主机发送到从机或由从机发送到主机。实际上通常情况下只有一个方向上的数据流包含有意义的数据。
1.特性总结
(1).兼容Motorola SPI、4线TI SSI和国家半导体Microwire总线;
(2).同步串行通信;
(3).主/从操作;
SSP总线可以挂接一个主机、多个从机;同一时刻主机只能与一个从机进行通信;SSP总线上的通讯原则上是全双工的。
(4).8 帧收发FIFO;
(5).可编程数据大小,每帧4~16位;
(6)中断生成器可服务于收发FIFO或错误标识;
(7)可使用DMA驱动
2.信号
3.功能描述
3.1单主机、多从机模式
多条SSPFSSIN
菊花链
在设备信号(总线信号或中断信号)以串行的方式从一 个设备依次传到下一个设备,不断循环直到数据到达目标设备的方式被称为菊花链。
3.2SPI通信模式
模式一:空闲时SSPCLK为低电平;在前沿开始采样
模式二:空闲时SSPCLK为低电平;在后沿开始采样
模式三:空闲时SSPCLK为高电平;在前沿开始采样
模式四:空闲时SSPCLK为高电平;在后沿开始采样
以上通过配置SSPCR0寄存器中的SPH(时钟相位)、SPO(时钟极性)实现。
强调一点,两spi为主机、从机交互时,需配置:
主机在第二个时钟跳变沿捕获数据,从机在第一个时钟跳变沿捕获数据。
即,主机SPH=1;从机SPH=0;原因:主机SSP设置为前沿输出后沿采样。从机设置为前沿采样后沿输出。在主从机之间进行数据传输时,正好可以做到主机输出时从机开始采样,从机输出时主机开始采样。
3.3传输机制
实际上SPI的全双工传输,就是靠移位寄存器来完成的,通过8个时钟周期的移位,来达到交换主从数据的目的,也就是说: 在每个SPI时钟周期内,都会发生全双工数据传输。外设的写操作和读操作是同步完成的。如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。
主机先将片选信号拉低,这样保证开始接收数据;
当接收端检测到时钟的边沿信号时,它将立即读取数据线上的信号,这样就得到了一位数据(1bit);
主机发送到从机时:主机产生相应的时钟信号,然后数据一位一位地将从MOSI(主机输出从机输入)信号线上进行发送到从机;
主机接收从机数据:如果从机需要将数据发送回主机,则主机将继续生成预定数量的时钟信号,并且从机会将数据通过MISO(主机输入从机输出)信号线发送;
4.SPI寄存器
4.1分类
根据功能的不同将SSP寄存器分为4大类:数据收发相关、控制相关、中断相关和状态相关。
4.2寄存器信息表
4.3关于中断
SSPIMSC:SSP中断屏蔽置位/清零寄存器
SSPRIS:SSP原始中断状态寄存器
SSPMIS:SSP屏蔽中断状态寄存器。该寄存器是一个只读寄存器。注意使用的Masked在ARM中是使能的意思;当中断条件出现且相应的中断在 SSPnIMSC 寄存器中使能时,该寄存器中对应的位就会置 1。
分析如下:
一旦产生中断条件,原始中断状态寄存器会记录中断状态TXRIS,再由intrerrupt mask信号TXIM使能中断,以产生屏蔽中断状态信号TXMIS。
中断产生逻辑输入的信号就是TXMIS。
追设计代码:
发生中断条件,原始中断状态TXRIS置位。
TXIM通过PWDATA写入使能中断。
&逻辑,发生中断条件且使能中断,TXIM置位。
TXMIS输入,|逻辑输出INTR
4.4寄存器相互关系
5.SPI基本操作
5.1初始化
5.1.1工作模式设置
SSPCR1[0:3]相应位置1设置工作模式:
主机模式、从机模式、正常模式、回写模式
5.1.2通信模式设置
帧格式:SSPCR0 FRF位设置 SSP、SSI、Micro wire
帧长度:SSPCR0 DSS位可配置4-16位
通信速率:由SSPCR0的SCR(位速率控制位)和SSPCPSR的CPSDVSR(时钟预分频寄存器)共同决定
即所配置的从机的clk频率必须大于主机的clk时钟频率的12倍,这样从机才能检测到主机输入时钟的变化沿;
而主机模式中,只要采样频率大于被采样的2倍即可。
5.2 状态信息
5.2.1发送FIFO状态
标志位状态:TXFIFO空、未满
5.2.2接收FIFO状态
接收FIFO不空、满
5.2.3忙状态
5.2.4中断状态
四种情形触发中断:1)发送FIFFO至少一半为空;2)接收溢出;3)接收FIFO至少一半为满;4)接收超时
5.3DMA方式传输数据
DMA:直接存储器访问。实现数据的直接传输
DMA用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU的干预,通过DMA数据可以快速地移动。这就节省了CPU的资源来做其他操作。
5.3.1DMA所需要的核心参数:
1数据的源地址 2 数据传输位置的目标地址 ,3 传递数据多少的数据传输量 ,4 进行多少次传输的传输模式
5.3.2DMA操作
包含查询和中断两种方式
6.SPI的优缺点
6.1SPI的优势
(1)全双工串行通信;(2)高速数据传输速率;(3)简单的软件配置;(4)灵活的数据配置,可以是任意大小的字;(5)简单的硬件结构:从机不需要像IIC一样需要唯一地址;从机使用主机时钟,不需要像UART一样使用精密时钟震荡器/晶振,不需要像CAN一样需要收发器
6.2 SPI的缺点
没有硬件应答信号;仅支持单一主设备;没有规定错误检查;只支持非常短的距离。