SPI协议

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

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

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

资源描述

SPI总线协议2016.11.29ContentsFunctionalDescriptionMemoryMap/RegisterDefinitionExternalSignalDescriptionIntroductionPrefaceTerminology:AcronymsandAbbreviationsSPISerialParallelInterfaceSSSlaveSelectSCKSerialClockMOSIMasterOutput,SlaveInputMISOMasterInput,SlaveOutputMOMIMasterOutput,MasterInputSISOSlaveInput,SlaveOutputSPIBlockDiagramFeatures主模式和从模式双向模式从选择输出模式错误标志,具有CPU中断能力双缓冲数据寄存器串行时钟的极性和相位可编程对SPI在等待模式期间的操作控制ModesofOperation•RunMode基本运行模式•WaitModeSPI在等待模式下是一个可配置的低功耗模式,被SPICR2寄存器中的SPISWAI位控制。在等待模式,如果SPISWAI位清零,SPI等同运行模式。如果SPISWAI位置位,SPI进入低功耗模式,SPI时钟关闭。如果SPI被配置为主机,则任何传输都被停止,但在CPU进入运行模式后恢复。如果SPI被配置为从机,则继续接收和发送字节,以使从机与主机保持同步。•StopModeSPI在停止模式下是空闲的,以降低功耗。如果SPI被配置为主机,则任何传输都被停止,但在CPU进入运行模式后恢复。如果SPI被配置为从机,则继续接收和发送字节,以使从机与主机保持同步。ExternalSignalDescriptionSPI模块共有4个外部引脚:●MOSI该引脚用于当SPI被配置为主机时将数据传出SPI,当被配置为从机时接收数据。●MISO该引脚用于当SPI被配置为从机时将数据传出SPI,当被配置为主机时接收数据。ExternalSignalDescriptionSPI模块共有4个外部引脚:●𝐒𝐒该引脚用于从机选择,也就是说只有片选信号为预先规定的使能信号时(低电平),对此芯片的操作才有效,这就使在同一总线上连接多个SPI设备成为可能。●SCK该引脚用于主机的时钟输出,从机接收主机发来的时钟信号。MemoryMap/RegisterDefinitionAddressUseAccess$___0SPIControlRegister1(SPICR1)Read/Write$___1SPIControlRegister2(SPICR2)Read/Write1$___2SPIBaudRateRegister(SPIBR)Read/Write1$___3SPIStatusRegister(SPISR)Read2$___4Reserved—23$___5SPIDataRegister(SPIDR)Read/Write$___6Reserved—23$___7Reserved—23NOTES:1.某些位是不可写的。2.对该寄存器的写操作将被忽略。3.从此寄存器读取全部返回零。RegisterDescriptionsSPIControlRegister1SPIControlRegister2SPIBaudRateRegisterSPIStatusRegisterSPIDataRegisterSPIControlRegister1(SPICR1)RegisterAddress:$___0Read:anytimeWrite:anytimeSPICR1SPIE—SPIInterruptEnableBit(SPI中断使能位)如果SPIF或MODF状态标志位置位,则该位控制SPI中断请求。1=SPI中断使能0=SPI中断禁用SPICR1SPE—SPISystemEnableBit(SPI系统使能位)该位用于控制SPI系统使能和SPI端口引脚用于SPI系统功能。如果SPE清零,SPI被禁用并强制进入空闲状态,SPISR寄存器中的状态位被复位。1=SPI使能,端口引脚用于SPI功能0=SPI禁用(低功耗)SPICR1SPTIE—SPITransmitInterruptEnable(SPI传输中断使能位)如果SPTEF标志位置位,则该位控制SPI传输中断。1=SPI中断使能0=SPI中断禁用SPICR1MSTR—SPIMaster/SlaveModeSelectBit(SPI主/从模式选择位)该位用于选择SPI工作在主模式还是从模式。让SPI从主模式转换到从模式或者反过来也可以强制SPI系统进入空闲状态。1=SPI工作在主模式0=SPI工作在从模式SPICR1CPOL—SPIClockPolarityBit(SPI时钟极性控制位)该位选择反相或非反相SPI时钟。要在SPI模块之间传输数据,SPI模块必须具有相同的CPOL值。在主模式下,该位的更改将中止正在进行的传输,并强制SPI系统进入空闲状态。1=低电平时钟有效,在空闲状态SCK为高电平。0=高电平时钟有效,在空闲状态SCK为低电平。SPICR1CPHA—SPIClockPhaseBit(SPI时钟相位控制位)该位用于选择SPI时钟格式。在主模式下,该位的更改将中止正在进行的传输,并强制SPI系统进入空闲状态。1=在每个周期的第二个时钟沿采样数据0=在每个周期的第一个时钟沿采样数据SPICR1SSOE—SlaveSelectOutputEnable(从选择输出使能位)只有在主模式下,MODFEN置位,𝑆𝑆输出特性才会启用,如下表所示。在主模式下,该位的更改将中止正在进行的传输,并强制SPI系统进入空闲状态。SPICR1LSBFE—LSB-FirstEnable(最低有效位使能位)该位不影响数据寄存器中MSB和LSB的位置。对数据寄存器的读和写包含MSB(Bit7)。在主模式下,该位的更改将中止正在进行的传输,并强制SPI系统进入空闲状态。1=数据传输从最低有效位开始。0=数据传输从最高有效位开始。SPIControlRegister2(SPICR2)RegisterAddress:$___1Read:anytimeWrite:anytime;writestothereservedbitshavenoeffectSPICR2MODFEN—ModeFaultEnableBit(模式错误使能位)该位允许检测模式错误(MODF)。如果SPI处于主模式且MODFEN清零,则SPI不使用𝑆𝑆端口引脚。在从模式下,𝑆𝑆仅作为输入使用,与MODFEN的值无关。在主模式下,该位的更改将中止正在进行的传输,并强制SPI系统进入空闲状态。1=𝑆𝑆端口引脚具有MODF功能0=SPI没有使用𝑆𝑆端口引脚SPICR2BIDIROE—OutputenableintheBidirectionalmodeofoperation(双向模式输出使能位)当处于双向工作模式(SPC0置位)时,该位控制SPI的MOSI和MISO输出缓冲器。在主模式下,该位控制MOSI端口的输出缓冲器。在从模式下该位控制MISO端口的输出缓冲器。在主模式下,且SPC0置位时,该位的更改将中止正在进行的传输,并强制SPI进入空闲状态。1=输出缓冲器使能0=输出缓冲器禁用SPICR2SPISWAI—SPIStopinWaitModeBit(SPI等待模式停止位)该位用于在等待模式下降低功耗。1=在等待模式下停止产生SPI时钟0=在等待模式下SPI时钟正常工作SPICR2SPC0—SerialPinControlBit0(串行控制位0)该位使能双向引脚配置。在主模式下,该位的更改将中止正在进行的传输,并强制SPI系统进入空闲状态。SPICR2双向引脚配置SPIBaudRateRegister(SPIBR)RegisterAddress:$___2Read:anytimeWrite:anytime;writestothereservedbitshavenoeffectSPIBRSPPR2–SPPR0—SPIBaudRatePreselectionBits(波特率预分频位)SPR2–SPR0—SPIBaudRateSelectionBits(SPI波特率选择位)SPIBR这些位指定SPI波特率,如表ExampleSPIBaudRateSelection所示。在主模式下,这些位的更改将中止正在进行的传输,并强制SPI系统进入空闲状态。波特率除数方程如下:BaudRateDivisor=(SPPR+1)·2(𝑆𝑃𝑅+1)波特率计算公式如下:BaudRate=BusClock/BaudRateDivisorSPIStatusRegister(SPISR)RegisterAddress:$___3Read:anytimeWrite:hasnoeffectSPISRSPIF—SPIFInterruptFlag(SPIF中断标志位)该位在接收到的数据字节传输到SPI数据寄存器后置位。该位通过读取SPISR寄存器(SPIF置位),随后读SPI数据寄存器来清零。1=新数据已复制到SPIDR0=传输尚未完成SPISRSPTEF—SPITransmitEmptyInterruptFlag(SPI传输空中断标志)如果置位,该位表明传输数据寄存器为空。要清零该位并将数据放入传输数据寄存器,SPISR必须被读且SPTEF=1,然后写入SPIDR。任何写入SPIDR没有读SPTEF=1,会被忽略。1=SPI数据寄存器为空0=SPI数据寄存器不为空SPISRMODF—ModeFaultFlag(模式错误标志位)当SPI被配置为主机且允许模式错误检测(SPICR2中的MODFEN置位)时,如果𝑆𝑆输入变为低电平,则MODF被置位。该标志位在读取SPISR(MODF置位)并随后写入SPICR1后自动清零。1=发生模式错误0=未发生模式错误SPIDataRegister(SPIDR)RegisterAddress:$___5Read:anytime;normallyreadonlywhenSPIFissetWrite:anytimeSPIDRSPI数据寄存器既是SPI数据的输入寄存器也是数据的输出寄存器。当对该寄存器进行写操作时允许将数据字节排队并传输。当SPI被配置为主机时,排队的数据字节在上一个传输完成后立即传输。SPISR中的SPTEF用于表明SPIDR是否准备好接收新数据。SPIDR当SPIF置位时,SPIDR中的接收的数据是有效的。如果SPIF清零且接收到一个字节,接收到的字节将从接收移位寄存器传送到SPIDR,且SPIF被置位。如果SPIF置位且未服务,并且接收到第二个字节,则第二个接收字节在接收移位寄存器中保持为有效字节直到下一次传输开始。期间在SPIDR中的字节不更改。如果SPIF置位且接收移位寄存器中有一个有效字节,并且在第三次传输开始前SPIF服务,则接收移位寄存器中的字节将传输到SPIDR中,SPIF保持置位。如果SPIF置位且接收移位寄存器中有一个有效字节,并且在第三次传输开始后SPIF服务,则接收移位寄存器中的字节变为无效,并且不会传输到SPIDR中。SPIDRReceptionwithSPIFservicedintimeSPIDRReceptionwithSPIFservicedtoolateFunctionalDescriptionMasterModeSlaveModeTransmissionFormatsSPIBaudRateGenerationSpecialFeaturesErrorConditionsLowPowerModeOptionsGeneralSPI模块允许MCU和外设之间进行全双工,同步,串行通信。软件可以轮询SPI状态标志或SPI操作可以被中断驱动。通过设置SPICR1中的SPI使能位(SPE)来使能SPI系统。当SPE

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

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

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

×
保存成功