串行外设接口SPI.ppt
1,第10章 串行外设接口SPI,10.1 串行外设接口的结构10.2 SPI操作10.3 串行外设接口中断10.4 数据格式10.5 SPI波特率和时钟模式10.6 SPI的复位和初始化10.7 SPI应用实例,SPI(Serial Peripheral Interface)是高速同步串行输入/输出端口,传送速率可编程。可用于外部移位寄存器、D/A、A/D、串行EEPROM、LED显示驱动器等外部芯片的扩展。,2,10.1 串行外设接口的结构,1.4个外部引脚,以下引脚都可用作数字I/O引脚。SPISIMOSPI从输入、主输出 SPISOMISPI主输入、从输出 SPICLK SPI时钟/SPISTESPI从发送使能2.主/从操作模式。3.发送、接收双缓冲。SPI模块中有9个寄存器用于控制该模块的操作:(1)SPICCR:SPI配置控制寄存器。(2)SPICTL:SPI操作控制寄存器。(3)SPISTS:SPI状态寄存器。,3,(4)SPIBRR:SPI波特率寄存器。(5)SPIRXEMU:SPI仿真缓冲寄存器。(6)SPIRXBUF:SPI串行输入缓冲寄存器。(7)SPITXBUF:SPI串行发送缓冲寄存器。(8)SPIDAT:SPI串行数据寄存器。(9)SPIPRI:SPI优先级控制。,4,10.2 SPI操作,下图是SPI用于两个控制器(一个主控制器和一个从控制器)通信的典型连接方式。,5,SPI可工作于主模式或从模式。SPICTL.2位-MASTER/SLAVE用来选择操作模式和SPICLK的源。(1)主模式将Master的数据传送给Slave,数据传送完毕,申请中断。,6,(2)从模式将 Slave的数据传送给 Master,数据传送完毕,申请中断。,7,SPI有两种工作模式:主模式和从模式,操作模式由SPICTL.2(MASTER/SLAVE位)决定。数据的发送方式有三种:(1)主控制器发送数据,从控制器发送伪数据;(2)主控制器发送数据,从控制器发送数据;(3)主控制器发送伪数据,从控制器发送数据。主控制器控制SPICLK信号,通过发出SPICLK信号启动数据发送,从控制器则通过检测SPICLK信号接收数据。一个主控制器可以连接多个从控制器,但是一次只允许一个从控制器给主控制器发送数据,8,10.3 串行外设接口中断,有五个控制位用于初始化串行外设接口的中断:SPI中断使能位:SPI INT ENA(SPICTL.0);SPI中断标志位:SPI INT FLAG(SPISTS.6);SPI超限中断使能位:OVERRUN INT ENA(SPICTL.4);SPI接收器超限中断标志位:RECEIVER OVERRUN FLAG(SPISTS.7);SPI中断优先级选择位:SPI PRIORITY(SPIPRI.6)。,9,10.4 数据格式,SPI通信时,要发送的数据从SPIDAT寄存器的MSB依次移出,接收的数据则从SPIDAT的LSB依次移入。SPI数据字符位数(1-16位)由SPICCR.3-0指定。当写入SPIDAT或SPITXBUF时,数据必须是左对齐的。数据从SPIRXBUF读回时是右对齐的。,10,10.5 SPI波特率和时钟模式,SPI模块支持125种不同的波特率和4种不同的时钟模式。SPI最大波特率为CLKOUT频率的四分之一。10.5.1 SPI波特率的确定SPI波特率取决于CLKOUT和SPIBRR的值。(1)对于SPIBRR=3-127SPI波特率=CLKOUT/(SPIBRR+1)(2)对于SPIBRR=0-2SPI波特率=CLKOUT/4SPI最大波特率=CLKOUT/4=10 MHz,11,10.5.2 SPI时钟模式SPI有四种时钟模式,由CLOCK POLARITY 和CLOCK PHASE位控制。CLOCK POLARITY位:选择时钟的有效沿是上升沿还是下降沿;CLOCK PHASE位:选择是否有半个时钟周期的延时。(1)下降沿,无延时:SPI在时钟下降沿发送数据,在时钟的上升沿接收数据;(2)下降沿,有延时:SPI在时钟下降沿前半个周期发送数据,在时钟的下降沿接收数据;,12,(3)上升沿,无延时:SPI在时钟上升沿发送数据,在下降沿接收数据;(4)上升沿,有延时:SPI在时钟上升沿前半个周期发送数据,在上升沿接收数据。4种时钟模式如图所示。,13,14,10.6 SPI的复位和初始化,系统复位使SPI引脚功能被选定为通用输入,要对SPI的配置,需做以下工作:(1)设置SPI SW RESET位(SPICCR.7)的值为0,强制SPI复位;(2)初始化SPI的配置、格式、波特率和引脚功能为期望值;(3)设置SPI SW RESET位为1,从复位状态释放SPI;(4)向SPIDAT或SPITXBUF写数据;(5)数据发送完成后(SPISTS.6=1),读取SPIRXBUF以确定接收的数据。,15,10.7 SPI应用实例,SPI串行接口连接D/A。DAC714是美国BB公司生产的16位具有串行接口的数模转换器,电压输出型,输出范围是-10V+10V。,16,由控制时序图可知,SPI时钟模式应为下降沿,无延时。即SPI在时钟下降沿发送数据,在时钟的上升沿将数据锁存到DAC714。,17,思考题与习题,SPI接口有哪些用途?如何使用SPI接口?,