áSPI接口
á主要内容
á1.SPI概述 á2.SPI总线 á3.SPI数据传输 á4.SPI通信原理 á5.SPI寄存器描述 á6.操作模式 á7.LPC2000 SPI应用接口实例
á1. SPI概述
áSPI(Serial Peripheral Interface,串行外设接口)是一种全双的同步串行接口,一个SPI总线可以连接多个主机和多个从机。
áSPI以主从方式工作,有一个主设备和一个或多个从设备。但每一次通信只能在主设备和一个由主设备片选信号SSEL选中的从设备之间进行。
á在同一时刻只允许一个主机操作总线,并且同时只能和一个从机通信。
á串行时钟由主机产生,当主机发送一字节数据(通过MOSI)的同时,从机返回一字节数据(通过MISO)。
á á á1.1 SPI特性
áLPC2000系列微处理器具有两个硬件SPI接口,它们具有如下特性:
§完全独立的SPI控制器; §遵循同步串行接口(SPI)规范; §全双工数据通信; §可配置为SPI主机或从机; §最大数据位速率为外设时钟Fpclk的1/8。
á2. SPI总线
áSPI总线系统是一种同步串行外设接口,允许MCU与各种外围设备以串行方式进行通信、数据交换。 á外围设备包括:Flash、RAM、A/D转换器、网络控制器、MCU等。 áSPI可以与多种外围器件直接接口,一般使用4条线:串行时钟线SCK、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SSEL。
á2.1 SPI引脚
á2.2 SPI总线配置 á3. SPI数据传输
áSPI模块为了和外设进行数据交换,根据外设工作要求,可以对其输出串行同步时钟SCK的极性和相位进行配置,SPI总线工作方式分为4种: áCPOL:时钟极性控制。
á1:SCK为低有效; á0:SCK为高有效; áCPHA:时钟相位控制。 á1:时钟前沿数据输出,后沿数据采样; á0:时钟前沿数据采样,后沿数据输出;
á3.1 SPI传输时序
á3.2 SPI数据和时钟的相位关系 á
á当器件为主机时,传输的起始由主机发送数据来启动,此时,主机可激活时钟并开始传输。当传输的最后一个时钟周期结束时,传输结束。
á当器件为从机时,且CPHA=0时,传输在SSEL信号被激活是开始,在SSEL为高电平时结束。
á当器件为从机时,且CPHA=1时,如果该器件被选择,传输从第一个时钟沿开始,并在数据采样的最后一个时钟沿结束。
á á4. SPI通信原理
áSPI工作模式
§ LPC2000在SPI通信中可作为从机也可以作为主机,这取决于硬件设计和软件设置。
§当器件作为主机时,使用一个IO引脚拉低相应从机的选择引脚(SSEL),传输的起始由主机发送数据来启动,时钟(SCK)信号由主机产生。通过MOSI发送数据,同时通过MISO引脚接收从机发出的数据。
§当器件作为从机时,传输在从机选择引脚(SSEL)被主机拉低后开始,接收主机输出的时钟信号,在读取主机数据的同时通过MISO引脚输出数据。
á á5. SPI寄存器的描述 á有5个寄存器控制SPI功能模块
áSPCR--SPI控制寄存器 áSPSR--SPI状态寄存器
áSPDR--SPI数据寄存器 áSPCCR--SPI时钟计数器寄存器 áSPINT--SPI中断标志寄存器
á á5.1 SPI控制寄存器
áSPI控制寄存器根据每个配置位的设定来控制SPI的操作。
§ SPCR寄存器包含一些可编程位来控制SPI功能模块的功能,该寄存器必须在数据传输之前进行设定。
á á á5.2 SPI状态寄存器
SPSR寄存器为只读寄存器,用于监视SPI功能模块的状态,包括一般性功能和异常状况。
在访问SPI数据寄存器之前,必须要先读取SPSR寄存器(清除SPIF位)。
á5.2 SPI状态寄存器
á异常状况 §读溢出:当SPI功能模块内部读缓冲区包含没有读出的数据,而新的传输已经完成,就会发生读溢出。如果SPIF位置位 (读缓冲区已满),新接收到的数据将会丢失,而状态寄存器的读溢出 (ROVR)位将置位。
§写冲突:在SPI数据传输过程当中不应向SPI数据寄存器写入数据。不能向SPI数据寄存器写入数据的时间从传输启动时开始,直到SPIF置位时读取状态寄存器为止。如果在这段时间内写SPI数据寄存器,写入的数据将会丢失,状态寄存器中的写冲突位(WCOL)置位。
§模式错误:SSEL信号在SPI功能模块为主机时必须无效,不能用作GPIO。当SPI功能模块为主机时,如果SSEL信号被激活(将SSEL变为低电平),表示有另外一个主机将该器件选择为从机。这种状态称为模式错误。
§从机中止:如果SSEL信号在传输结束之前变为高电平,从传输将被认为中止。此时,正在处理的发送或接收数据都将丢失,状态寄存器的从机中止(ABRT)位置位。
á5.3 SPI数据寄存器
á数据寄存器SPDR又叫数据缓冲器,是程序所面对的寄存器。
áSPDR寄存器为SPI提供数据的发送和接收。处于主模式时,向该寄存器写入数据,将启动SPI数据传输。从数据传输开始到SPIF状态位置位并且没有读取状态寄存器的这段时间内不能对该寄存器执行写操作。
á5.4 SPI时钟计数寄存器
§ 作为主机时,SPCCR寄存器控制SCK的频率。寄存器的值为一位SCK时钟所占用的PCLK(采样时钟)周期数。该寄存器的值必须为偶数,并且必须不小于8。如果寄存器的值不符合以上条件,可能会导致产生不可预测的动作。
§频率公式: SCK频率=pclk频率/SPCCR数据
á á5.5 SPI中断标志寄存器
á该寄存器包含SPI接口的中断标志。
á6. 操作模式
á使用SPI接口注意要点:
§作主机时,SSEL引脚必须接上拉电阻,不能作为IO口使用;
§作主机时,在发送一字节数据的同时接收一字节数据;
§SPI时钟分频值必须大于或等于8;
§数据寄存器与内部移位寄存器之间没有缓冲区,写SPDR会
使数据直接进入移位寄存器。因此数据只能在上一次数据发送完成后写入SPDR寄存器。
á á6.1 主机操作
áLPC2000系列微处理器的SPI作为主机操作步骤如下: áSPI主机初始化程序 áSPI主机数据发送和接收
á6.2 从机操作
áLPC2000系列微处理器的SPI作为从机操作步骤如下: áSPI从机初始化程序 á7. LPC2000 SPI接口应用实例 á使用LPC2104的SPI向外串行输出数字0--F。要求: á在处理器外部使用两套显示装置分别显示奇数和偶数;使用74HC595芯片将串行数据转换为并行数据后,使用7段数码管中显示。
á7.1 学习74HC595
á74HC595芯片是一种常见的可将8位串行输入数据转换为并行数据的移位寄存器芯片。
á它的优势在于,它除了具有移位寄存器之外,还有一个数据锁存器,于是可以保证在以为过程中输出端的数据保持不变,从而使后面的数码管没有闪烁感。
á7.2 电路图与程序 á1.电路图 á2. 程序 á