第九章通用SPI的一般应用.docx
《第九章通用SPI的一般应用.docx》由会员分享,可在线阅读,更多相关《第九章通用SPI的一般应用.docx(16页珍藏版)》请在三一办公上搜索。
1、第九章通用SPI的一般应用9.1 SPI简介在大容量产品上,SPl接口可以配置为支持SPl协议或者支持I2S音频协议。SPl接口默认工作在SPl协议下,可以通过软件把功能从SPl模式切换到I2S模式。在小容量和中容量产品上,不支持I2S音频协议。串行外设接口(SPI)允许芯片与外部设备以半/全双工、同步、串行方式通信。此接口可以被配置成主模式,并为外部从设备提供通信时钟(SCK)。接口还能以多主配置方式工作。它可用于多种用途,包括使用一条双向数据线的双线单工同步传输,还可使用CRC校验的可靠通信。I2S也是一种3管脚的同步串行接口通讯协议。它支持四种音频标准,包括飞利浦I2S标准,MSB和LS
2、B对齐标准,以及PCM标准。它在半双工通讯中,可以工作在主和从2种模式下。当它作为主设备时,通过接口向外部的从设备提供时钟信号。警告:由于SPI3/I2S3的部分管脚与JTAG管脚共享(SPI3_NSS/I2S3_WS与JTDl,SPI3_SCK/I2S3_CK与JTDO),因此这些管脚不受IO控制器丽W,他们(注每次复位后)被默认保留为JTAG用途。如果用户想把管脚配置给SPI3/I2S3,必须(在DEBUG时)关闭JTAG并切换至SWD接口,或者(在标准应用时)同时关闭JTAG和SWD接口。9.1.1 SPI特征3线全双工同步传输;带或不带第三根双向数据线的双线单工同步传输;8或16位传输
3、帧格式选择;主或从操作;支持多主模式;8个主模式波特率预分频系数(最大为fPCLK/2);从模式频率(最大为iPCLK/2);主模式和从模式的快速通信:最大SPl速度达到18MHz;主模式和从模式下均可以由软件或硬件进行NSS管理:主/从操作模式的动态改变;可编程的时钟极性和相位;可编程的数据顺序,MSB在前或LSB在前;可触发中断的专用发送和接收标志;SPI总线忙状态标志;支持可靠通信的硬件CRC;可触发中断的主模式故障、过载以及CRC错误标志;支持DMA功能的1字节发送和接收缓冲器:产生发送和接受请求o9.1.2 SPI引脚描述通常SPI通过4个管脚与外部器件相连:1MISO:主设备输入/
4、从设备输出管脚。该管脚在从模式下发送数据,在主模式下接收数据。2M0SI:主设备输出/从设备输入管脚。该管脚在主模式下发送数据,在从模式下接收数据。3SCK:串口时钟,作为主设备的输出,从设备的输入4NSS:从设备选择。这是一个可选的管脚,用来选择主/从设备。它的功能是用来作为“片选管脚”,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突。从设备的NSS管脚可以由主设备当作一个标准的IO来驱动。一旦被使能(SSOE位),NSS管脚也可以作为输出管脚,并在SPl设置为主模式时拉低;此时,所有NSS管脚连接到主设备NSS管脚的SPl设备,会检测到低电平,如果它们被设置为NSS硬件模式,就会自
5、动进入从设备状态。从 MSBlt LSBIt8-bit移位寄存器卜一IMISOMOSI如果没有使用NSSNSS可被软件控制图911是一个单主和单从设备互连的例子。主IMSBItLSBitJ1MOSI&bit移位寄存装卜SPl时钟发生器图911单主和单从应用Me)SI脚相互连接,MlSe)脚相互连接。这样,数据在主和从之间串行地传输(MSB位在前)。通信总是由主设备发起。主设备通过MoSl脚把数据发送给从设备,从设备通过MlSO引脚回传数据。这意味全双工通信的数据输出和数据输入是用同一个时钟信号同步的;时钟信号由主设备通过SCK脚提供。NSS脚管理有2种NSS模式:1软件NSS模式:可以通过设置
6、SPLCRl寄存器的SSM位来使能这种模式。在这种模式下NSS管脚可以用作它用,而内部NSS信号电平可以通过写SPLCRl的SSI位来驱动2硬件NSS模式,分两种情况:NSS输出被使能:当STM32F10xx工作为主SPI并且NSS输出已经通过SPI_CR2寄存器的SSOE位使能,这时NSS管脚被拉低,所有NSS管脚与它的NSS管脚相连并配置为硬件NSS的SPI设备,将自动变成从SPI设备。此时该设备不能工作在多主环境。NSS输出被关闭:允许操作于多主环境。9.1.3 数据传输模式SPl有四种不同的数据传输格式时序。SPLCR寄存器的CPoL和CPHA位,能够组合成四种可能的时序关系。CPOL
7、:时钟极性位,控制在没有数据传输时时钟的空闲状态电平。此位对主模式和从模式下的设备都有效。如果CPoL被清XT,SCK引脚在空闲状态保持低电平;如果CPOL被置”SCK引脚在空闲状态保持高电平。CPHA:时钟相位,被置,r,SCK时钟的第二个边沿(CPoL位为O时就是下降沿,CPoL位为1时就是上升沿)进行数据位的采样,数据在第一个时钟边沿被锁存。如果CPHA位被清U,SCK时钟的第一边沿(CPoL位为。时就是下降沿,CPoL位为1时就是上升沿)进行数据位采样,数据在第二个时钟边沿被锁存。CPOL时钟极性和CPHA时钟相位的组合选择数据捕捉的时钟边沿。图9-1-2显示了SPI传输的4种CPHA
8、和CPoL位组合。此图可以解释为主设备和从设备的SCK脚、MISo脚、MoSl脚直接连接的主或从时序图。注意:1.在改变CPoL/CPHA位之前,必须清除SPE位将SPl禁止。2 .主和从必须配置成相同的时序模式。3 .SCK的空闲状态必须和SPLCRl寄存器指定的极性一致(CPoL为1时,空闲时应上拉SCK为高电平;CPe)L为。时,空闲时应下拉SCK为低电平)。4 .数据帧格式(8位或16位)由SPI-CRl寄存器的DFF位选择,并且决定发送/接收的数据长度CPHA=1皿=I-LnLrLrLnLrLrLrcpol=-I!*_II11(frol)MXXMJL8。16位数据X啊A*/*NSS.
9、/II11lII11lII1III1.IIII;。从)IV,TI1,IIII1IIICPHA=0I1I1I1I1I1II1ICPOL=1,_n_njjnjn_rJCiML(from主)8Ar16位数据”;MOS.NMS血XT:XlX7rTl蚓册Uronl从)NSS三!:=:K:II。从):;81II1IIII图9-l2SPl数据传输格式的四种时序数据帧格式:根据SPLCRl寄存器中的LSBHRST位,输出数据位时可以MSB在先也可以LSB在先。根据SPLCRl寄存器的DFF位,每个数据帧可以是8位或是16位。所选择的数据帧格式对发送和/或接收都有效。9.1.4 SPI从模式在从配置里,SCK引
10、脚用于接收到从主设备来的串行时钟。配置步骤:1设置DFF位以定义数据帧格式为8位或16位2选择CPOL和CPHA位来定义数据传输和串行时钟之间的相位关系(见图9-2)。为保证正确的数据传输,从设备和主设备的CPOL和CPHA位必须配置成相同的方式。3帧格式(MSB在前还是LSB在前取决于SPLCRl寄存器中的LSBFIRST位)必须和主设备相同。4硬件模式下(参考从选择(NSS)脚管理部分),在完整的数据帧(8位或16位)发送过程中,NSS引脚必须为低电平。软件模式下,设置SPLCRI寄存器中的SSM位并清除SSl位。5清除MSTR位,设置SPE位,使相应引脚工作于SPl模式下。在这个配置里,
11、MoSl引脚是数据输入,MISO引脚是数据输出。数据发送过程数据字被并行地写入发送缓冲器。当从设备收到时钟信号,并且在MOSI引脚上出现第一个数据位时,发送过程开始,第一个位被发送出去。余下的位(对于8位数据帧格式,还有7位;对于16位数据帧格式,还有15位)被装进移位寄存器。当发送缓冲器中的数据传输到移位寄存器时,SPLSP寄存器里的TXE标志被设置。如果设置了APLCR2寄存器上的TXElE位,将会产生中断。数据接收过程对于接收方,当数据接收完成时:移位寄存器中的数据传送到接收缓冲器,SPLSR寄存器中的RXNE标志被设置。如果设置了SPLCR2寄存器中的RXEIE位,则产生中断。在最后一
12、个采样时钟边沿后,RXNE位被置“二移位寄存器中接收到的数据字节被传送到接收缓冲器。当读SPLDR寄存器时,SPl设备返回这个值。读SPLDR寄存器时,RXNE位被清除。9.1.5 SPl主模式在主配置时,串行时钟在SCK脚产生。配置步骤:1通过SPLCRl寄存器的BR2:0位定义串行时钟波特率。2选择CPOL和CPHA位,定义数据传输和串行时钟间的相位关系(见图9-2)。3设置DFF位来定义8或16位数据帧格式。4配置SPLCRl寄存器的LSBFIRST位定义帧格式。5如果NSS引脚需要工作在输入模式,硬件模式中在整个数据帧传输期间应把NSS脚连接到高电平;在软件模式中,需设置SPLCRI寄
13、存器的SSM和SSI位。如果NSS引脚工作在输出模式,则只需设置SSoE位。6必须设置MSTR和SPE位(只当NSS脚被连到高电平,这些位才能保持置位)。在这个配置中,MoSl脚是数据输出,而MISo脚是数据输入。数据发送过程当一字节写进发送缓冲器时,发送过程开始。在发送第一个数据位时,数据字被并行地(通过内部总线)传入移位寄存器,而后串行地移出到MoSl脚上;MSB在先还是LSB在先,取决于SPLCRl寄存器中的LSBFlRST位。数据从发送缓冲器传输到移位寄存器时TXE标志将被置位,如果设置SPLCRl寄存器中的TXElE位,将产生中断。数据接收过程对于接收器来说,当数据传输完成时:移位寄
14、存器里的数据传送到接收缓冲器,并且RXNE标志被置位。如果SPLCR2寄存器中的RXEIE位被设置,则产生中断。在最后采样时钟沿,RXNE位被设置,在移位寄存器中接收到的数据字被传送到接收缓冲器。读SPLDR寄存器时,SPI设备返回接收到的数据字。读SPLDR寄存器将清除RXNE位。一旦传输开始,如果下一个将发送的数据被放进了发送缓冲器,就可以维持一个连续的传输流。在试图写发送缓冲器之前,需确认TXE标志应该是1。9.1.6 状态标志应用程序通过3个状态标志可以完全监控SPI总线的状态。忙(BUSy)标志:此标志表明SPI通信层的状态。当它被设置时,表明SPI正忙于通信,并且/或者在发送缓冲器
15、里有一个有效的数据字正在等待被发送。此标志的目的是说明在SPI总线上是否有正在进行的通信。以下情况时此标志将被置位:1 .数据被写进主设备的SPI-DR寄存器上。2.SCK时钟出现在从设备的时钟引脚上。发送/接收一个字(字节)完成后,BUSY标志立即清除;此标志由硬件设置和清除。监视此标志可以避免写冲突错误。写此标志无效。仅当SPE位被设置时此标志才有意义。注:在主接收模式下(单线双向),不要查询忙标志位(BUSY_FLAG)发送缓冲器空闲标志(TXE)此标志被置位时表明发送缓冲器为空,因此下一个待发送的数据可以写进缓冲器里。当发送缓冲器有一个待发送的数据时,TXE标志被清除。当SPl被禁止时
16、,此标志被清除。接收缓冲器非空(RXNE)此标志为I时表明在接收缓冲器中包含有效的接收数据。读SPI数据寄存器可以清除此标志1.1.7 利用DMA的SPI通信为了达到最大通信速度,需要及时往SPl发送缓冲区填数据,同样接收缓冲器中的数据也必须及时读走以防止溢出。为了方便高速率的数据传输,SPI实现了一种采用简单的请求/应答的DMA机制。当SPLCR2寄存器上的对应使能位被设置时,发出DMA传输请求。发送缓冲器和接收缓冲器亦有各自的DMA请求。注意:当SPI时钟频率较高时,建议采用DMA模式以避免SPI速度性能的降低。1.1.8 SPI中断SPI有表9-1-1所示的这些中断请求。表9-1-ISP
17、l中断请求事件表中断事件事件标志使能控制位发送缓冲器空标志TXETXEIE接收缓冲器非空标志RXNERXNEIE主模式错误事件MODFERRIE溢出错误OVRCRe错误标志CRCERR9.2 SPl库函数介绍在这一节中,将介绍SPl库函数,只是介绍一些常用函数的用法以及参数定义。本书中所有涉及到的库函数都是2.0.3版本的函数库。9.2.1 SPLDeInit表9-2-1.描述了函数SPLDeInit函数名SPLDeInit函数原形voidSPLDeIniKSPLTypeDef*SPIx)功能描述将外设SPIx寄存器重设为缺省值输入参数SPIx:X可以是1或者2,来选择SPl外设输出参数无返回
18、值无先决条件无被调用函数对SPIl,RCC_APB2PeriphClockCmd().对SPI2,RCC_APB1PeriphClockCmdO.例:*SPI2设置为缺省值*/SPI_DeInit(SPI2);9.2.2 函数SPLlst表9-2-2.描述了函数SPIJnit函数名SPIJnit函数原形voidSPlJnit(SPI_TypcDcf*SPIx,SPlJnitTypcDcficSPlJnitStruct)功能描述根据SPLInitStruct中指定的参数初始化外设SPIX寄存器输入参数ISPIx:X可以是1或者2,来选择SPl外设输入参数2SPLInitStruct:指向结构SP
19、UnitTyPeDef的指针,包含了外设SPl的配置信息参阅SeCtiOn:SPLInitTypeDef查阅更多该参数允许取值范围输出参数无返回值无先决条件无被调用函数无SPLInitTypeDef结构体定义于文件“stm32fl0x_spi.h:typedefstruct(u!6SPI_Direction;ul6SPIJIodc;u!6SPI_DataSize;ul6SPI_CP0L;ul6SPLCPHA;ul6SPLNSS;ul6SPIBaudRatePrescaler;ul6SPIFirstBit;ul6SPICRCPolynomial;SPIInitTypeDef;SPLDirecti
20、on:设置了SPl单向或者双向的数据模式。见表9-2-3.查阅该参数可取的值。表923.SPLModeffiLSPLDirection描述SPI_Direction_2Lines_FullDuplexSPl设置为双线双向全双工SPI_Direction_2Lines_RxOnlySPI设置为双线单向接收SPI_Direction_lLine_RxSPl设置为单线双向接收SPI_Direction_lLine_TxSPl设置为单线双向发送SPLMode:设置了SPl工作模式。见表9-24查阅该参数可取的值。表924.SPLMOde值SPLMOde描述SPI_Mode_Master设置为主SPlS
21、Pl_Modc_Slavc设置为从SPlSPLDataSize:设置了SPl的数据大小。见表925.查阅该参数可取的值。表925.SPLDataSiZe值SPLDataSize描述SPLDataSize6bSPl发送接收16位帧结构SPLDataSize_8bSPl发送接收8位帧结构SPLCPOL:SPLCPoL选择了串行时钟的稳态。见表926.查阅该参数可取的值。表926.SPI-SPLCPoL值SPI.CPOL描述SPI_CP0L_High时钟悬空高SPI_CPOL_Low时钟悬空低SPLCPHA:设置了位捕获的时钟活动沿。见表9-2-7.查阅该参数可取的值。衰927.SPI_SPI_CP
22、HA值SPI.CPHA描述SPI_CPHA_2Edge数据捕获于第二个时钟沿SPI_CPHA_IEdge数据捕获于第一个时钟沿SPI_NSS:SPLNSS指定了NSS信号由硬件(NSS管脚)还是软件(使用SSl位)管理。见表9-2-8.查阅该参数可取的值。表928.SPLNSS值SPI_NSS描述SPI_NSS_HardNSS由外部管脚管理SPI_NSS_Soft内部NSS信号有SSl位控制SPLBaudRatePrescaler:用来定义波特率预分频的值,这个值用以设置发送和接收的SeK时钟。见表9-2-9.查阅该参数可取的值。表9-2-9.SPLBaUdRatePreSCaIer值SPCB
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第九 通用 SPI 一般 应用

链接地址:https://www.31ppt.com/p-5424302.html