欢迎来到天天文库
浏览记录
ID:10011050
大小:463.01 KB
页数:16页
时间:2018-05-12
《第10章 串行外设接口spi》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第10章串行外设接口SPISPI:高速同步串行输入/输出端口,传送速率可程,应用:外部移位寄存器、D/A、A/D、串行EEPROM、LED显示驱动器等外部设备进行扩展。10.1串行外设接口的结构(1)4个外部引脚,以下引脚都可用作数字I/O引脚。•SPISIMO-SPI从输入、主输出•SPISOMI-SPI主输入、从输出•SPICLK-SPI时钟•SPISTE*-SPI从发送使能(2)主/从操作模式。(3)发送、接收双缓冲。SPI模块中有9个寄存器用于控制该模块的操作:(1)SPICCR:SPI配置控制寄存器。(2)SPICTL:SPI操作控制寄存器。(3)SPISTS:SPI状
2、态寄存器。(4)SPIBRR:SPI波特率寄存器。(5)SPIRXEMU:SPI仿真缓冲寄存器。(6)SPIRXBUF:SPI串行输入缓冲寄存器。(2)主/从操作模式。(3)发送、接收双缓冲。SPI模块中有9个寄存器用于控制该模块的操作:(1)SPICCR:SPI配置控制寄存器。(2)SPICTL:SPI操作控制寄存器。(3)SPISTS:SPI状态寄存器。(4)SPIBRR:SPI波特率寄存器。(5)SPIRXEMU:SPI仿真缓冲寄存器。(6)SPIRXBUF:SPI串行输入缓冲寄存器。(7)SPITXBUF:SPI串行发送缓冲寄存器。(8)SPIDAT:SPI串行数据寄存器
3、。(9)SPIPRI:SPI优先级控制。10.2SPI操作下图是SPI用于两个控制器(一个主控制器和一个从控制器)通信的典型连接方式。SPI可工作于主模式或从模式。SPICTL.2位---MASTER/SLAVE用来选择操作模式和SPICLK的源。(1)主模式将Master的数据传送给Slave,数据传送完毕,申请中断。(2)从模式将Slave的数据传送给Master,数据传送完毕,申请中断。由图知,SPI有两种工作模式:主模式和从模式,操作模式由SPICTL.2(MASTER/SLAVE位)决定。数据的发送方式有三种:(1)主控制器发送数据,从控制器发送伪数据;(2)主控制器发
4、送数据,从控制器发送数据;(3)主控制器发送伪数据,从控制器发送数据。主控制器控制SPICLK信号,通过发出SPICLK信号启动数据发送,从控制器则通过检测SPICLK信号接收数据。一个主控制器可以连接多个从控制器,但是一次只允许一个从控制器给主控制器发送数据10.3串行外设接口中断有五个控制位用于初始化串行外设接口的中断:SPI中断使能位:SPIINTENA(SPICTL.0);SPI中断标志位:SPIINTFLAG(SPISTS.6);SPI超限中断使能位:OVERRUNINTENA(SPICTL.4);SPI接收器超限中断标志位:RECEIVEROVERRUNFLAG(SP
5、ISTS.7)SPI中断优先级选择位:SPIPRIORITY(SPIPRI.6)。10.4数据格式SPI通信时,要发送的数据从SPIDAT寄存器的MSB依次移出,接收的数据则从SPIDAT的LSB依次移入。SPI数据字符位数(1-16位)由SPICCR.3-0指定。当写入SPIDAT或SPITXBUF时,数据必须是左对齐的。数据从SPIRXBUF读回时是右对齐的。10.5SPI波特率和时钟模式SPI模块支持125种不同的波特率和4种不同的时钟模式。SPI最大波特率为CLKOUT频率的四分之一。10.5.1SPI波特率的确定SPI波特率取决于CLKOUT和SPIBRR的值。(1)对
6、于SPIBRR=3-127SPI波特率=CLKOUT/(SPIBRR+1)(2)对于SPIBRR=0-2SPI波特率=CLKOUT/4SPI最大波特率=CLKOUT/4=10MHz10.5.2SPI时钟模式SPI有四种时钟模式,由CLOCKPOLARITY和CLOCKPHASE位控制。CLOCKPOLARITY位:选择时钟的有效沿是上升沿还是下降沿;CLOCKPHASE位:选择是否有半个时钟周期的延时。(1)下降沿,无延时:SPI在时钟下降沿发送数据,在时钟的上升沿接收数据;(2)下降沿,有延时:SPI在时钟下降沿前半个周期发送数据,在时钟的下降沿接收数据;(3)上升沿,无延时:
7、SPI在时钟上升沿发送数据,在下降沿接收数据;(4)上升沿,有延时:SPI在时钟上升沿前半个周期发送数据,在上升沿接收数据。4种时钟模式如图所示。10.6SPI的复位和初始化系统复位使SPI引脚功能被选定为通用输入,要对SPI的配置,需做以下工作:(1)设置SPISWRESET位(SPICCR.7)的值为0,强制SPI复位;(2)初始化SPI的配置、格式、波特率和引脚功能为期望值;(3)设置SPISWRESET位为1,从复位状态释放SPI;(4)向SPIDAT或SPITXBUF写
此文档下载收益归作者所有