您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 串行外设接口 (SPI)
©2009MicrochipTechnologyInc.DS70206B_CN第18-1页串行外设接口(SPI)18第18章串行外设接口(SPI)目录本章包括下列主题:18.1简介.............................................................................................................................18-218.2SPI寄存器..................................................................................................................18-318.3工作模式......................................................................................................................18-918.4主模式时钟频率.........................................................................................................18-2418.5使用DMA的SPI操作...............................................................................................18-2518.6节能模式下的操作.....................................................................................................18-2818.7与SPI模块相关的特殊功能寄存器............................................................................18-2918.8相关应用笔记............................................................................................................18-3018.9版本历史....................................................................................................................18-31dsPIC33F系列参考手册DS70206B_CN第18-2页©2009MicrochipTechnologyInc.18.1简介串行外设接口(SerialPeripheralInterface,SPI)模块是用于同其他外设或单片机器件进行通信的同步串行接口。这些外设可以是串行EEPROM、移位寄存器、显示驱动器和A/D转换器等。SPI模块与Motorola的SPI和SIOP接口兼容。根据器件型号不同,dsPIC33F系列在单个器件上提供一个或两个SPI模块。两个模块(指定为SPI1和SPI2)具有相同的功能。SPI1模块在所有器件上都提供,而SPI2模块在许多高引脚数封装器件中提供。SPIx串行接口由4个引脚组成:•SDIx:串行数据输入•SDOx:串行数据输出•SCKx:移位时钟输入或输出•SSx/FSYNCx:低电平有效从选择或帧同步I/O脉冲可将SPIx模块配置为使用2、3或4个引脚进行工作。在3引脚模式下,不使用SSx。在2引脚模式下,不使用SDOx和SSx。图18-1给出了该模块的框图。图18-1:SPI模块框图注:在本章中,SPI模块统称为SPIx,或分别称为SPI1和SPI2。特殊功能寄存器也使用类似的符号表示。例如,SPIxCON指SPI1或SPI2模块的控制寄存器。内部数据总线SDIxSDOxSSxSCKxSPIxSRbit0移位控制边沿选择FCY主预分频器1:1/4/16/64使能主时钟同步SPIxBUF控制传输传输写SPIxBUF读SPIxBUF16SPIxCON11:0SPIxCON14:2时钟控制辅助预分频器1:1至1:8SPIxRXBSPIxTXB©2009MicrochipTechnologyInc.DS70206B_CN第18-3页第18章串行外设接口(SPI)串行外设接口(SPI)1818.2SPI寄存器SPIxSTAT:SPIx状态和控制寄存器SPIx状态和控制(SPIxSTAT)寄存器用于指示各种状态条件,如接收溢出、发送缓冲区满以及接收缓冲区满。该寄存器还可用于指定空闲模式下模块的工作。该寄存器还包含一个可使能和禁止模块的位。SPIxCON1:SPIx控制寄存器1SPIx控制寄存器1(SPIxCON1)用于指定时钟预分频比、主/从模式、字/字节通信、时钟极性和时钟/数字引脚操作。SPIxCON2:SPIx控制寄存器2SPIx控制寄存器2(SPIxCON2)用于使能/禁止帧SPI操作。该寄存器还可用于指定帧同步脉冲的方向、极性和边沿选择。SPIxBUF:SPIx数据接收/发送缓冲寄存器SPIx数据接收/发送缓冲(SPIxBUF)寄存器实际上是两个独立的内部寄存器:发送缓冲区(SPIxTXB)和接收缓冲区(SPIxRXB)。这两个单向的16位寄存器共用SPIxBUF的SFR地址。如果用户应用程序将待发送数据写入SPIxBUF地址,在内部该数据会被写入SPIxTXB寄存器。与此类似,当用户应用程序从SPIxBUF读取已接收数据时,在内部会从SPIxRXB寄存器读取该数据。这种技术对发送/接收操作进行了双重缓冲,允许在后台连续地传输数据。发送和接收可同时进行。此外,还有一个16位移位寄存器(SPIxSR),该寄存器未被映射到存储空间。它用于将数据移入和移出SPI端口。dsPIC33F系列参考手册DS70206B_CN第18-4页©2009MicrochipTechnologyInc.寄存器18-1:SPIxSTAT:SPIx状态和控制寄存器R/W-0U-0R/W-0U-0U-0U-0U-0U-0SPIEN—SPISIDL—————bit15bit8U-0R/C-0U-0U-0U-0U-0R-0R-0—SPIROV————SPITBFSPIRBFbit7bit0图注:C=可清零位R=可读位W=可写位U=未实现位,读为0-n=POR时的值1=置10=清零x=未知bit15SPIEN:SPIx使能位1=使能模块并将SCKx、SDOx、SDIx和SSx配置为串口引脚0=禁止模块bit14未实现:读为0bit13SPISIDL:空闲模式停止位1=当器件进入空闲模式时,模块停止工作0=在空闲模式下模块继续工作bit12-7未实现:读为0bit6SPIROV:接收溢出标志位1=一个新字节/字已完全接收并丢弃。用户软件没有读先前保存在SPIxBUF寄存器中的数据0=未发生溢出bit5-2未实现:读为0bit1SPITBF:SPIx发送缓冲区满状态位1=发送尚未开始,SPIxTXB为满0=发送已开始,SPIxTXB为空当CPU通过写SPIxBUF存储单元装入SPIxTXB时,该位由硬件自动置1。当SPIx模块将数据从SPIxTXB传输到SPIxSR时,该位由硬件自动清零。bit0SPIRBF:SPIx接收缓冲区满状态位1=接收完成,SPIxRXB为满0=接收未完成,SPIxRXB为空当SPIx将数据从SPIxSR传输到SPIxRXB时,该位由硬件自动置1。当内核通过读SPIxBUF存储单元读SPIxRXB时,该位由硬件自动清零。©2009MicrochipTechnologyInc.DS70206B_CN第18-5页第18章串行外设接口(SPI)串行外设接口(SPI)18寄存器18-2:SPIXCON1:SPIx控制寄存器1U-0U-0U-0R/W-0R/W-0R/W-0R/W-0R/W-0———DISSCKDISSDOMODE16SMP(1)CKE(2)bit15bit8R/W-0R/W-0R/W-0R/W-0R/W-0R/W-0R/W-0R/W-0SSENCKPMSTENSPRE2:0PPRE1:0bit7bit0图注:R=可读位W=可写位U=未实现位,读为0-n=POR时的值1=置10=清零x=未知bit15-13未实现:读为0bit12DISSCK:禁止SCKx引脚位(仅限SPI主模式)1=禁止内部SPI时钟,引脚用作I/O0=使能内部SPI时钟bit11DISSDO:禁止SDOx引脚位1=模块不使用SDOx引脚;引脚用作I/O0=SDOx引脚由模块控制bit10MODE16:字/字节通信选择位1=采用字宽(16位)通信0=采用字节宽(8位)通信bit9SMP:SPIx数据输入采样阶段位(1)主模式:1=在数据输出时间的末端采样输入数据0=在数据输出时间的中间采样输入数据从模式:当在从模式下使用SPIx时,必须将SMP清零bit8CKE:SPIx时钟边沿选择位(2)1=串行输出数据在时钟从工作状态转变为空闲状态时变化(见bit6)0=串行输出数据在时钟从空闲状态转变为工作状态时变化(见bit6)bit7SSEN:从选择使能位(从模式)1=SSx引脚用于从模式0=模块不使用SSx引脚。引脚由端口功能控制bit6CKP:时钟极性选择位1=空闲状态时时钟信号为高电平;工作状态时为低电平0=空闲状态时时钟信号为低电平;工作状态时为高电平bit5MSTEN:主模式使能位1=主模式0=从模式bit4-2SPRE2:0:辅助预分频比位(主模式)111=辅助预分频比1:1110=辅助预分频比2:1...000=辅助预分频比8:1注1:SMP位只能在MSTEN位置1后置1。如果MSTEN=0,SMP位将保持清零。2:在帧SPI模式下不使用CKE位。在帧SPI模式(FRMEN=1)下,将该位编程为0。dsPIC33F系列参考手册DS70206B_CN第18-6页©2009MicrochipTechnologyInc.bit1-0PPRE1:0:主预分频比位(主模式)11=主预分频比1:110=主预分频比4:101=主预分频比16:100=主预分频比64:1寄存器18-2:SPIXCON1:SPIx控制寄存器1(续)注1:SMP位只能在MSTEN位置1后置1。如果MSTEN=0,SMP位将保持清零。2:在帧SPI模式下不使用CKE位。在帧SPI模式(FRMEN=1)下,将该位编程为0。©2009MicrochipTechnologyInc.DS70206B_CN第18-7页第18章串行外设接口(SPI)串行外设接口(SPI)18寄存器18-3:SPIxCON2:SPIx控制寄存器2R/W-0R/W-0R/W-0U-0U-0U-0U-0U-0FRMENSPIFSDFRMPOL—————bit15bit8U-0U-0U-0U-0U-0U-0R/W-0U-0——————FRMDLY—bit7bit0图注:R=可读位W=可写位U=未实现位,读为0-n=POR时的值1=置10=清零x=未知bit15FRMEN:帧SPIx支持位1=使能帧SPIx支持(SSx引脚用作帧同步脉冲输入/输出)0=禁止帧SPIx支持bit14SPIFSD:帧同步脉冲方向控制位1=帧同步脉冲输入(从器件)0=帧同步脉冲输出(主器件)bit13FRMPOL:帧同步脉冲极性位1=帧同步脉冲为高电平有效0=帧同步脉冲为低电平有效bit12-2未实现:读为0bit1FRMDLY:帧同步脉冲边沿选择位1=帧同步脉冲与第一个位时钟一致0=帧同步脉冲比第一个位时钟提前bit0未实现:禁止用户应用程序将该位设为1。
本文标题:串行外设接口 (SPI)
链接地址:https://www.777doc.com/doc-3566599 .html