SPI中断解析

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

SPI中断控制时钟设置复位初始化SPIFIFO串行外设接口中断有五个控制位用于初始化串行外设接口的中断:SPI中断使能位:SPIINTENA(SPICTL.0);SPI中断标志位:SPIINTFLAG(SPISTS.6);SPI超限中断使能位:OVERRUNINTENA(SPICTL.4);SPI接收器超限中断标志位:RECEIVEROVERRUNFLAG(SPISTS.7);SPI中断优先级选择位:SPIPRIORITY(SPIPRI.6)。数据格式SPI通信时,要发送的数据从SPIDAT寄存器的MSB依次移出,接收的数据则从SPIDAT的LSB依次移入。SPI数据字符位数(1-16位)由SPICCR.3-0指定。当写入SPIDAT或SPITXBUF时,数据必须是左对齐的。数据从SPIRXBUF读回时是右对齐的。数据格式数据传输过程A.从设备Slave写0D0h到SPIDAT,等待主设备Master移出数据。B.主设备设置从设备的SPISTE信号为低,激活从设备C.主设备写058h到SPIDAT寄存器,开始传数据输过程。D.第一个字节完成,设置中断标志。E.从设备读取它的SPIRXBUF寄存器(右对齐)读取0BhF从设备写04Ch到SPIDAT寄存器,等待主设备移出数据。G.主设备写06Ch到SPIDAT寄存器,开始传输过程。H.主设备从SPIRXBUF寄存器(右对齐)读取01Ah。I.第二个字节完成,设置中断标志。J.主设备和从设备分别从各自的SPIRXBUF寄存器中读89h和8Dh。在用户软件清除不用的数据位后,主设备读09h,从设备读0Dh。K.主设备清除从设备的SPISTE信号,使其变高电平,禁止从设备时钟模式SPI有四种时钟模式,由CLOCKPOLARITY和CLOCKPHASE位控制。CLOCKPOLARITY位:选择时钟的有效沿是上升沿还是下降沿;CLOCKPHASE位:选择是否有半个时钟周期的延时SPI波特率和时钟模式根据SPI时钟是在从模式还是主模式下,SPICLK引脚可以接收一个外部SPI时钟信号,或为SPI提供时钟信号。在从模式下,SPI时钟是通过SPICLK引脚从外部时钟源引入的,其频率最大不能超过CLKOUT频率的四分之一。在主模式下,SPI时钟由SPI产生,并通过SPICLK引脚输出。其频率最大不能超过CLKOUT频率的四分之一。(1)下降沿,无延时:SPI在时钟下降沿发送数据,在时钟的上升沿接收数据;(2)下降沿,有延时:SPI在时钟下降沿前半个周期发送数据,在时钟的下降沿接收数据;(3)上升沿,无延时:SPI在时钟上升沿发送数据,在下降沿接收数据;(4)上升沿,有延时:SPI在时钟上升沿前半个周期发送数据,在上升沿接收数据。SPI波特率和时钟模式SPI模块支持125种不同的波特率和4种不同的时钟模式。SPI最大波特率为CLKOUT频率的四分之一1SPI波特率的确定SPI波特率的计算可以由如下的两种情况进行计算得出:(1)对于SPIBRR-3~127,波特率的计算公式为:SPI波特率=CLKOUT/(SPIBRR+1)(2)对于SPIBRR=0~2,波特率的计算公式为:式中,CLKOUT=器件的CPU时钟频率,SPIBRR=主SPI器件中的SPIBRR内容。SPI波特率和时钟模式为了确定装入SPIBRR的值,必须知道期间的系统时钟(CLKOUT)的频率(器件专用的)和工作将使用的波特率。下面的实例显示如何确定LF240xADSP可以获得最大串行外设通信的波特率CLKOUT=40MHz。SPI总线波特率的设置由于不同SPI器件的最高工作频率有所不同,为了使SPI总线高效工作,应了解各个SPI器件最高能接受的频率,然后取低频率的SPI器件的最高频率作为通讯波特率。SPI的复位和初始化系统复位使SPI引脚功能被选定为通用输入,要对SPI的配置,需做以下工作:(1)设置SPISWRESET位(SPICCR.7)的值为0,强制SPI复位;(2)初始化SPI的配置、格式、波特率和引脚功能为期望值;(3)设置SPISWRESET位为1,从复位状态释放SPI;(4)向SPIDAT或SPITXBUF写数据;(5)数据发送完成后(SPISTS.6=1),读取SPIRXBUF以确定接收的数据。SPI的复位初始化系统复位强制SPI外设模块进入以下缺省配置:该单元被配置为—个从模块(MASTER/SLAVE=0);发送功能被禁止(TALK=0);在SPICLK信号的下降沿到来时,输入数据被锁存;字符长度假定为1位;SPI中断被禁止;SPIDAT中的数据复位为0000h;管脚功能选定为通用输入;SPI模块的引脚功能选作通用目标输入输出(这可以由I/O多路复用控制寄存器B[MCRB]来设置)。SPI通过控制寄存器文件中的控制寄存器来控制和访问。下面详细介绍串行外设接口的控制寄存器。1、SPI配置控制寄存器(SPICCR),D7D6D5~D4D3D2D1D0SPISWRESETCLOCKPOLARITYReservedSPICHAR3SPICHAR2SPICHAR1SPICHAR0D7SPISWRESET—SPI软件复位。当改变配置时,在改变之前清除此位并且恢复操作之前设置此位:0初始化SPI操作标志为复位条件,此时SPISTS.7、SPISTS.6位和SPISTS.5位被清除。SPI配置保持不变。如果该模块用作主模块,SPICLK信号输出返回其无效电平。1SPI准备好发送或接收下一字符,当该位被置位时,一个写入发送器的字符将不会被移出,必须向串行数据寄存器写入一个新的宁符。串行外设接口的控制寄存器D6CLOCKPOLARITY—移位时钟的极性。该位抑制SPICLK信号的极性。CLOCKPOLARITY和CLOCKPHASE(SPICTL.3)控制SPICLK引脚上的四种时钟模式。0SPICLK信号的上引沿时,数据输出;下降沿时,数据输入。当没有SPI数据发送时,SPICLK处于低电平。数据输入、输出的边沿决定于CLOCKPHASE(SPICTL.3)位的值,具体如下:CLOCKPHASE=0:数据在SPICLK信号的上升沿输出;输入的数据在SPICLK信号的下降沿锁存。CLOCKPHASE=1:数据在SPICLK信号第一个上升沿前的半个周期和后续的SPICLK信号的下降沿输出;输入的数据在SPICLK信号的上升沿锁存。1SPICLK信号的下降沿时,数据输出;上升沿时,数据输入。当没有SPI数据发送时,SPICLK处于高电平。数据输入、输出的边沿决定于CLOCKPHASE(SPICTL.3)位的值,具体如下:CLOCKPHASE=0:数据在SPICLK信号的下降沿输出,输入的数据在SPICLK信号的上升沿锁存。CLOCKPHASE=1:数据在SPICLK信号第一个下降沿前的半个周期和随后的SPICLK信号的上升沿输出;输入的数据在SPICLK信号的下降沿锁存。D5~D4Reserved—保留位。D3~D0SPICHAR3~SPICHAR0—字符长度控制位3~0。这4位决定了单个字符在一个移位序列周期移入或移出的位数。表4.27列出了不同位值所SPI操作控制寄存器(SPICTL)控制有数据的发送、SPI产生中断的能力、SPICLK的相位以及操作模式(主模式或从模式)。SPI操作控制寄存器(SPICTL)的映射地址:7041h。SPI操作控制寄存器(SPICTL)D7~D5Reserved—保留位。读返回0,写访问无效。D4OVERRUNINTENA,超限中断使能0禁止RECEIVEROVERRUNFLAG位(SPISTS.7)中断1使能RECEIVEROVERRUNFLAG位(SPISTS.7)中断D3CLOCKPHASE—SPI时钟相位选择。该位控制SPICLK信号的相位:0普通SPI时钟模式,决定于CLOCKPOLARITY位(SPICCR.6)1SPICLK信号延时半个周期,极性由CLOCKPOLARITY确定D2MASTER/SLAVE—SPI网络模式选择。该位次定SPI是一个网络主模块还是从模块。在复位初始化期间,SPI自动配置为一个网络从模块。0SPI配置为—个从模块1SPI配监为一个主模块D1TALK—主/从模式发送使能。0禁止发送从模式操作:如果先前没有配置为一个通用I/O引脚,SPISOMI引脚置为高阻态;主模式操作:如果先前没有配置为一个通用I/O引脚,SPISOMI引被置为高阻;1使能发送D0SPIINTENA,SPI中断使能—该位控制SPI产生发送/接收中断的能力。SPIINTFLAG位(SPISTS.6)不受该位影响。0禁止中断1使能中断SPI串行数据寄存器(SPIDAT)SPIDAT是发送/接收移位寄存器。写入SPIDAT的数据按照SPICLK的周期节拍移出(先移最高位)、对于每一个移出SPI的位,会有一个位移入移位寄存器的最低位(LSB)那一端。写入SPIDAT的操作可执行两种功能:如果TALK位(SPICTL.l)被置位,它在串行输出引脚上提供将要输的数据。当SPI是一个主模块时,会启动一个传送操作。当启动了一个传送操作时,其动作要根据CLOCKPOLARITY位(SPICCR.6)和CLOCKPHASE位(SPICTL.3)的情况而定。在主动工作模式下,将伪数据写入到SPIDAT用以启动接收器的序列,因为硬件不支持少于16位的数据进行对齐处理,所以发送的数据必须先进行左对齐,而接收的数据则用右对齐格式读取。优先级控制寄存器优先级控制寄存器为SCIPRI。SCI优先级控制制寄存器(SCIPRI)包含了接收器和发送器的中断优先级选择位,并且在编程挂起(如遇到程序断点)时冲制XDS仿真器的SCI操作。●SCI优先级控制寄存器(SCIPRI)D7D6D5D4D3D2~D0ReservedSCITXPRIORITYSCIRXPRIORITYSCISOFTSCIFREEReservedD7Reserved,保留位。读返回0,写访问无效。D6SCITXPRIORITY,SCI发送器中断优先级选择。该位直到SCI发送器中断的优先级。0中断为高优先级请求1中断为低优先级请求D5SCIRXPRIORITY,SCI接收器中断优先级选择。该位指定SCI接收器中断的优先级。0中断为高优先级请求1中断为低优先级请求D4~D3SCISOFT和FREE。这些位决定了当一个仿真挂起事件(例如当调试器遇到断点时)发生后,将采取什么动作。外设可继续正在进行的工作(自由运行模式),或者如果在停止模式,它可以立即停止或者在当前操作(当前的接收/发送队列)运行结束后停止。00仿真挂起时立即停止10停止前完成当前的接收/发送操作x1自由运行,不管是否发生挂起,继续SCI操作D2~D0Reserved,保留位。读返回0,写访问无效。FIFO特征和使用FIFO时SPI的编程SPIFIFO的描述•上电复位时,SPI工作在标准SPI模式,禁止FIFO功能。FIFO的寄存器SPIFFTX、SPIFFRX和SPIFFCT不起作用通过将SPIFFTX寄存器中的SPIFFEN置1,使能FIFO模式。SPIRST能在操作的任意阶段复位FIFO模式•缓冲器:发送和接收器使用两个16*16FIFO•延时发送:FIFO的发送速率可编程;便于SPI与许多速率较慢的外设接口•FIFO状态位可定义FIFO中可获得的字的数量。SPIFIFO编程说明1)复位复位时SPI工作在标准SPI模式,FIFO功能禁止。FIFO寄存器SPIFFTX,SPIFFRX和SPIFFCT不被激活.2)标准SPI.标准240xSPI模式使用SPIINT/SPIRXINT作为中断源3)模式改变.通过设置SPIFFTX寄存器的SPIFFEN位为1使能FIFO模式。SPIRST可以在操作的任何时候复位FIFO。4)激活寄存器.所有的SPI寄存器和SPIFIFO寄存器SPIFFTX,SPIFFRX,和SPIFFCT将被激活。5)中断.FIFO模式有两个中断,一个用于传输FIFO,SPI

1 / 27
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功