您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 6.6 串行外设接口SPI
南京航空航天大学自动化学院DSP技术应用实验室6.6串行外设接口SPI一、概述二、SPI模块特性三、两种控制模式四、SPI模块的波特率和时钟模式五、SPI的复位六、SPI的控制寄存器七、SPI模块的控制过程八、SPI模块通信示例南京航空航天大学自动化学院DSP技术应用实验室一、概述串行外设接口SPI模块是一个高速、同步的串行输入/输出(I/O)端口,它只需要3根引线即可与外设通信。SPI可以用于DSP控制器和外部器件或其它控制器间的通信,典型的应用包括与移位寄存器、显示驱动器、串行A/D、串行D/A、串行EEPROM以及日历时钟芯片等外围I/O器件相连进行外设扩展。SPI与SCI相同点:都是串行信息交换。不同点:SPI同步通信、传输速率高、3根引线;SCI异步通信、传输速率低、2根引线。南京航空航天大学自动化学院DSP技术应用实验室二、SPI模块特性1)两种工作方式:主动和从动2)波特率:125种可编程的波特率3)数据字长:1~16位4)4种时钟方案5)可同时接收和发送6)发送和操作可通过中断或查询方式来完成7)9个SPI模块控制寄存器8)4个外部引脚:SPISOMI:从动输出/主动输入引脚SPISIMO:从动输入/主动输出引脚SPISTE:从动发送使能引脚SPICLK:串行时钟引脚南京航空航天大学自动化学院DSP技术应用实验室SPI功能引脚图南京航空航天大学自动化学院DSP技术应用实验室9个SPI模块寄存器地址寄存器名称功能说明7040hSPICCRSPI配置控制寄存器SPI软件复位、SPICLK极性选择、传输数据长度选择。7041hSPICTLSPI操作控制寄存器SPI中断及超时中断使能、SPICIK相位选择、主/从操作模式和数据发送使能。7042hSPISTSSPI状态寄存器中断及超时中断标志、发送缓冲器满标志。7044hSPIBRRSPI波特率寄存器数据传输波特率(7位)7046hSPIRXEMUSPI接收仿真缓冲寄存器存放接收到的数据、支持仿真7047hSPIRXBUFSPI接收缓冲寄存器存放接收到的数据7048hSPITXBUFSPI发送缓冲寄存器存放下一个要发送的数据7049hSPIDATSPI串行数据寄存器存放发送或接收到的数据704FhSPIPRISPI中断优先级控制寄存器规定中断优先级高低及仿真挂起时的操作南京航空航天大学自动化学院DSP技术应用实验室三、两种控制模式SPI主/从控制器的连接南京航空航天大学自动化学院DSP技术应用实验室三、两种控制模式(1)主模式①.主控制器由SPICLK输出时钟信号给从控制器,使二者同步。②.主控制器将数据写入SPIDAT,由最高位(MSB)开始,从主控制器SPISIMO引脚上串行输出。南京航空航天大学自动化学院DSP技术应用实验室(1)主模式③.从控制器从SPISIMO引脚接收串行数据并把数据移入自身SPIDAT的最低位(LSB)。④.数据传输完毕后,从控制器的数据并行写入SPIRXBUF中,供CPU读出。同时可以产生中断。南京航空航天大学自动化学院DSP技术应用实验室从模式①.外部网络主控制器由SPICLK引脚为从控制器提供时钟,使二者同步。②.外部网络主控制器从SPISTE引脚输出一低电平给从控制器,响应从控制器发送数据。③.从控制器把数据写入其SPIDAT并向左移位,在SPCLK信号的合适边沿,由SPIDAT最高位(MSB)开始从SPISOMI引脚串行输出。南京航空航天大学自动化学院DSP技术应用实验室从动发送具体过程④.主控制器从SPISOMI引脚接收串行数据,并将数据移入其SPIDAT的最低位(LSB)。⑤.数据传输完毕后,主控制器再将完整的数据并行写入SPIRXBUF中。同时可以产生中断。南京航空航天大学自动化学院DSP技术应用实验室注意:A)主控制器可以在任意时刻起动数据发送;而从控制器要发送数据,需用软件使能SPISTE输入引脚。B)串行数据长度编程。若数据长度小于16位,写入SPITXBUF时,需左对齐;从SPIRXBUF读回时右对齐。南京航空航天大学自动化学院DSP技术应用实验室四、SPI模块的波特率和时钟模式(1).SPI波特率的设定由SPI波特率寄存器SPIBRR中的值确定。当SPIBRR=3~127时,SPI波特率=CLKOUT/(SPIBRR+1)当SPIBRR=0~2时,SPI波特率=CLKOUT/4其中CLKOUT——器件的CPU时钟频率;SPIBRR——主SPI器件中SPIBRR的值。南京航空航天大学自动化学院DSP技术应用实验室(2).SPI时钟模式SPI的时钟模式由CLOCKPOLARITY(SPICCR.6)和CLOCKPHASE(SPICTL.3)两个控制位来确定。前者确定时钟的有效沿是在上升沿还是在下降沿;后者确定是否有半个时钟周期的延时。串行外设时钟模式选择CLOCKPOLARITY0011CLOCKPHASE0101SPICLK的信号模式无延时的上升沿有延时的上升沿无延时的下降沿有延时的下降沿南京航空航天大学自动化学院DSP技术应用实验室五、SPI的复位.系统复位时SPI模块处于从模式,.发送功能被禁止.在SPICLK的下降沿锁存接收到的数据.字符长度为1位.SPIDAT中数据为0000h,.SPI中断被禁止.SPI的引脚被配置为通用I/O引脚。南京航空航天大学自动化学院DSP技术应用实验室六、SPI的控制寄存器(1).SPI配置控制寄存器SPICCR—地址7040h位名称说明动作7SPISWRESETSPI软件复位0-SPI复位;1-SPI准备好接收发送6CLOCKPOLARITY移位时钟极性0-时钟上开沿有效;1-时钟下降沿有效3SPICHAR3传输字符长度选择0000-10001-20010-30011-40100-50101-60110-70111-81000-91001-101010-111011-121100-131101-141110-151111-162SPICHAR21SPICHAR10SPICHAR0南京航空航天大学自动化学院DSP技术应用实验室(2).SPI操作控制寄存器SPICTL—地址7041h位名称说明动作4OVERRUNINTENA接收超时中断使能0-禁止超时中断;1-使能超时中断3CLOCKPHASESPI时钟相位选择0-无延时;1-延时半个周期2MASTER/SLAVESPI主从模式选择0-从模式;1-主模式1TALK主/从模式发送使能0-禁止发送(输出高阻态);1-允许发送0SPIINTENASPI中断使能0-禁止SPI中断;1-使能SPI中断南京航空航天大学自动化学院DSP技术应用实验室(3).SPI状态寄存器SPISTS—地址7042h南京航空航天大学自动化学院DSP技术应用实验室(4).SPI波特率寄存器SPIBRR—地址7044h(5).SPI仿真接收寄存器SPIRXEMU—地址7046h南京航空航天大学自动化学院DSP技术应用实验室(6).SPI接收缓冲寄存器SPIRXBUFSPI模块接收到的数据。SPIDAT接收完毕数据后,将其传送到SPIRXBUF,同时置位SPIINTFLAG;数据读出后,自动清除SPIINTFLAG。南京航空航天大学自动化学院DSP技术应用实验室(7).SPI发送缓冲寄存器SPITXBUF下一个需要发送的数据。向SPITXBUF写数将置位TXBUFFLAG;当前数据传送完毕,SPITXBUF中数据自动装载到SPIDAT,同时清除TXBUFFLAG。南京航空航天大学自动化学院DSP技术应用实验室(8).SPI串行数据寄存器SPIDAT用于存放发送/接收到的串行数据。发送的数据左对齐;接收到的数据右对齐。南京航空航天大学自动化学院DSP技术应用实验室(9).SPI优先级控制寄存器SPIPRI—地址704FH位名称说明动作6SPIPRIORITYSPI中断优先级0-高中断优先级;1-低中断优先级5SPISUSPSOFTSPI仿真挂起时处理00-立即停止;10-完成当前接收/发送操作后停止;X1-自由运作4SPISUSPFREE南京航空航天大学自动化学院DSP技术应用实验室七、SPI模块的控制过程(1).设置SPI功能引脚为特殊功能引脚。(2).设置SPICCR寄存器,将SPISWRESET位清0,强制SPI进入复位状态,并确定时钟极性和传输数据长度。(3).设置SPICTL寄存器,确定其操作模式(主/从)及时钟模式。设置SPIBRR寄存器,确定SPI通信波特率。(4).设置SPICCR寄存器,置SPISWRESET位为1,使SPI进入工作状态。(5).向SPIDAT或者SPITXBUF写数据,启动主模式下的通信过程。(6).待设定长度的数据传输完毕后(SPISTS.6=1),读取SPIRXBUF中的数据南京航空航天大学自动化学院DSP技术应用实验室八、SPI模块通信示例DSP的SPI工作于主模式;DAC7512的SPI工作于从模式通信。DAC7512是低压(+2.7V~+5.5V)、12位DAC。DIN:串行数据输入;SCLK:串行时钟输入;SYNC:输入控制信号(低电平有效)。连接如下:A)DIN--SPISIMOC)SYNC--CLOKOUT/IOPE0引脚相连。D)SCLK--SPICLK引脚相连
本文标题:6.6 串行外设接口SPI
链接地址:https://www.777doc.com/doc-3570799 .html