DSP原理与应用TheTechnology&ApplicationsofDSP北京交通大学电气工程学院郝瑞祥夏明超万庆祝电话:51687064-11办公室:电气楼602email:haorx@bjtu.edu.cnDSP原理与应用2020年8月2日2第六讲TMS320F28335片内外设---CAN,SPI教学目标:掌握TMS320F28335芯片现场总线CAN通信接口,SPI串行外设接口通信相关知识;教学重点:掌握TMS320F28335芯片常用串行通信接口的特点和应用.教学难点:现场总线CAN通信编程及应用.教学内容:第一节:TMS320F28335系列SPI通信接口第二节:TMS320F28335系列CAN总线通信接口DSP原理与应用2020年8月2日3§6.1.1TMS320F2833x系列SPI通信SPI模块的主要特点:四个外部引脚SPISOMI:SPIslave-output/master-inputpinSPISIMO:SPIslave-input/master-outputpinSPISTE:SPIslavetransmit-enablepinSPICLK:SPIserial-clockpin两个可编程模式:主(master)和从(slave)125种可编程波特率设置.数据长度1至16位.四种时钟模式接收和发送可同时操作(发送功能可以软件禁止)12个SPI模块控制寄存器增强特性16级发送/接收FIFO;延时传输控制.DSP原理与应用2020年8月2日4SPI模块CPU接口DSP原理与应用2020年8月2日5SPI模块内部结构框图DSP原理与应用2020年8月2日6§6.1.2典型SPI主/从通信连接模式DSP原理与应用2020年8月2日7SPI有关寄存器(共12个)DSP原理与应用2020年8月2日8关于SPI操作说明ThisSPIhas16-bittransmitandreceivecapability,withdouble-bufferedtrans-mitanddouble-bufferedreceive.Alldataregistersare16-bitswide.TheSPIisnolongerlimitedtoamaximumtransmissionrateofLSPCLK/8inslavemode.ThemaximumtransmissionrateinbothslavemodeandmastermodeisnowLSPCLK/4.Writesoftransmitdatatotheserialdataregister,SPIDAT(andthenewtrans-mitbuffer,SPITXBUF),mustbeleft-justifiedwithina16-bitregister.SPIDAT(SPIdataregister).ContainsdatatobetransmittedbytheSPI,actingasthetransmit/receiveshiftregister.DatawrittentoSPIDATisshiftedoutonsubsequentSPICLKcycles.ForeverybitshiftedoutoftheSPI,abitfromthereceivebitstreamisshiftedintotheotherendoftheshiftregisterDSP原理与应用2020年8月2日9(一)主模式(MASTER)在该模式下(MASTER/SLAVE=1),SPI模块通过SPICLK引脚提供整个串行通信网络的时钟.数据通过SPISOMI引脚接收.SPIBRR寄存器决定网络上发送和接收的波特率。SPIBRR可以选择126种不同的波特率。数据写入SPIDAT或者SPITXBUF开始从SPISIMO引脚发送数据。最高位MSB(mostsignificantbit)首先发送。同时通过SPISOMI引脚接收到的数据传送到SPIDAT的最低位LSB(leastsignificantbit)。当传输完特定的位数据后,接收到的数据传送到接收缓冲寄存器SPIRXBUF,以备CPU读取该数据。数据存放在SPIRXBUF寄存器中,采用右对齐的方式存储。当指定的数据位数被移到SPIDAT寄存器后,会产发生以下事件:(1)SPIDAT内容被传送到SPIRXBUF寄存器。(2)SPIINTFLAG(SPISTS.6)标志位被置1。DSP原理与应用2020年8月2日10如果在SPITXBUF寄存器中还存在有效数据(通过SPISTS寄存器中的TXBUFFULL位可以查看是否有效),则该数据将被传送到SPIDAT寄存器,否则,在所有的数据位移出SPIDAT寄存器后,SPICLK将停止工作。如果SPIINTENA(SPICTL.0)位被设为1,将产生一个中断。在典型的应用中,SPISTE引脚用多作从SPI设备的片使能信号。在传送数据之前,该引脚被主设备驱动为低,在传输完成后拉高。DSP原理与应用2020年8月2日11(二)从模式(SLAVE)在从模式下(MASTER/SLAVE=0),数据从SPISOMI引脚输出,从SPISIMO引脚输入,SPICLK引脚用作输入串行移位时钟,该时钟由外部网络中的主控制器MASTER提供。数据传输率由该时钟决定,SPICLK输入频率最高不应超过LSPCLK频率的1/4.写入到SPIDAT或者SPITXBUF的数据在适当的SPICLK时钟沿被发送到网络。要发送字符的所有位移出SPIDAT寄存器后,写入到SPITXBUF寄存器的数据在所有被传输的字符位移出后将被传送到SPIDAT寄存器。如果向SPITXBUF写入数据时没有数据被传输,则数据将被立刻写入SPIDAT。为了能够接收数据,从SPI设备等待网络中主控制器发送时钟信号SPICLK,然后将SPISIMO引脚上的数据移入到SPIDAT寄存器。如果从控制器准备发送数据,且SPITXBUF没有被装入数据,则数据必须在SPICLK信号开始之前就写入到SPITXBUF或SPIDAT寄存器。SPISTE引脚在从处理器中多用作处理器输出使能控制。DSP原理与应用2020年8月2日12当TALK位(SPICTL.1)被清零时,数据发送功能被会被禁止,输出引脚SPISOMI就会被设置为高阻态。如果当前正在进行传送数据,则在当前字符传送完毕后禁止使能才有效,即使SPISOMI被强制进入高阻态。这主要是为了确保SPI能够正确接收数据。该位可以允许多个从设备连接在同一个网络当中,但是仅有一个从设备通过SPISOMI向网络发送数据.DSP原理与应用2020年8月2日13§6.1.3SPI通信数据格式SPICCR.3-0指定数据字符的位数(1-16)。写入SPIDATA和SPITXBUF寄存器的数据必须左对齐(left-justified)。从SPIRXBUF寄存器中读取的数据是右对齐(right-justified)。SPIRXBUF寄存器包含最近收到的字符,右对齐,加上已经被传输且保留的位的个数共16位。具体格式如下:例如:传输字符长度为1,当前SPIDAT=737Bh=01110011011110111B01110011011110111B111001101111011xB111001101111011xBDSP原理与应用2020年8月2日14§6.1.4SPI通波特率和时钟SPI波特率计算:SPIBRR=3-7时:SPI波特率=LSPCLK/(1+SPIBRR);SPIBRR=0,1或2时:SPI波特率=LSPCLK/4;这里LSPCLK:DSP的低速外围时钟频率;SPIBRR:主SPI设备的SPIBRR内容;SPI时钟模式:时钟极性位SPICCR.6和时钟相位位SPICTL.3控制着SPICLK引脚上的4种不同时钟产生模式。SPICCR.6位控制上升沿或下降沿,SPICTL.3控制是否选择半周期时钟延时。具体时钟模式见下图。DSP原理与应用2020年8月2日15SPI时钟格式DSP原理与应用2020年8月2日16§6.1.5上电复位时SPI寄存器的状态默认从模式,即MASTER/SLAVE=0;禁止发送数据,即TALK=0;数据在SPICLK信号的下降沿锁存;字符长度默认为1位;SPI中断禁止;SPIDAT中的数据复位为0000h;SPI模块引脚被用作通用IO引脚,由I/OMUXcontrolregisterB[MCRB]决定。要想使用SPI通信,需要单独设置SPI有关寄存器。注意:SPI通信过程中,不能改变SPI配置!DSP原理与应用2020年8月2日17为改变SPI模块配置,应完成以下操作:(1)清除SPISWRESET位(SPICCR.7),以迫使SPI进入复位状态;(2)初始化SPI的配置包括数据格式、波特率、工作模式和引脚功能;(3)设置SPISWRESET位为1,使SPI退出复位状态;(4)写数据到SPIDAT或SPITXBUF;(5)数据传输结束后(SPISTS.6=1),读取SPIRXBUF中的数据。DSP原理与应用2020年8月2日18§6.1.6SPI数据具传输举例01011011011101001001字符D0H5位左对齐字符58H5位字符4CH5位字符6CH5位DSP原理与应用2020年8月2日19数据传输过程描述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信号,使其变高电平,禁止从设备。DSP原理与应用2020年8月2日20§6.1.7SPIFIFO编程说明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,SPITXINT,一个用于接收FIFO.SPIINT/SPIRXINT。SPI接收,接收错误或接收FIFO溢出时会产生SPIINT/SPIRXINT中断。6)缓冲区.发送和接收缓冲区由两组16x16FIFO提供。标准SPI功能的具有一个字传输缓冲区的TXBUF用作发送FIFO和移位寄存器之间的传输缓冲区。在移位寄存器的最后位被移出后,发送缓冲区将从发送FIFO数据。DSP原理与应用2020年8月2日217)延时传输FIFO到传输移位寄存器传输数据的频率是可编程的。寄存器SPIFFCT的位(7−0)FFTXDLY7−FFTXDLY0定义字传输之间的延时。延时时间定义以SPI时钟周期为单位。8位寄存器可以最少定义0个串行时钟,最多255个串行时钟。零延时时,SPI模块可以可以连续地将FIFO数据循环(backtoback)移出;在255个时钟延时时,SPI可以把FIFO中的数据移出,每两个字之间最多时间间隔为255个SPI时钟。可编程延时简化了各种慢速SPI外设接口的无缝链接,如EEPROMs,ADC,