完整版STM32 参考手册 中文pdf_第1页
完整版STM32 参考手册 中文pdf_第2页
完整版STM32 参考手册 中文pdf_第3页
完整版STM32 参考手册 中文pdf_第4页
完整版STM32 参考手册 中文pdf_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 SPI接STM32F10xxx参考手 册 口23 串行外设接口(SPI) 小容量产品 是指闪存存储器容量在 16K 至32K 字节之间的 STM32F101xx、STM32F102xx和 STM32F103xx微控制器。 中容量产品是指闪存存储器容量在64K至128K字节之间的STM32F101xx、STM32F102xx和 STM32F103xx微控制器。 大容量产品是指闪存存储器容量在256K至512K字节之间的STM32F101xx和STM32F103xx微控 制器。 互联型产品是指STM32F105xx和STM32F107xx微控制器。 除非特别说明,本章描述的模块适用于整个STM3

2、2F10xxx微控制器系列。 23.1 SPI简介 2S音频协议。SPI接口可以配置为支持SPI协议或者支持I在大容量产品和互联型产品上,SPI2S模式。 SPI模式切换到I接 口默认工作在SPI方式,可以通过软件把功能从2S音频协议。 在小容量和中容量产品上,不支持I串行外设接口(SPI)允许芯片与外部设备以半/全双工、同步、串行方式通信。此接口可以被配置 成主模式,并为外部从设备提供通信时钟(SCK)。接口还能以多主配置方式工作。 它可用于多种用途,包括使用一条双向数据线的双线单工同步传输,还可使用CRC校验的可靠 通信。 22S标准,3引脚的同步串行接口通讯协议。它支持四种音频标准,包括

3、飞利浦IIS也是一种MSB 和LSB对齐标准,以及PCM标准。它在半双工通讯中,可以工作在主和从2种模式下。当它作为 主设备时,通过接口向外部的从设备提供时钟信号。 警告: 由于 SPI3/I2S3 的部 分引 脚 与 JTAG 引脚 共享 (SPI3_NSS/I2S3_WS 与 JTDI , SPI3_SCK/I2S3_CK与JTDO),因此这些引脚不受IO控制器控制,他们(在每次复位后) 被默认保留为JTAG用途。如果用户想把引脚配置给SPI3/I2S3,必须(在调试时)关闭 JTAG并切换至SWD接口,或者(在标准应用时)同时关闭JTAG和SWD接口。详见第 8.3.5节:JTAG/SW

4、D复用功能重映射。 2S主要特征和I SPI23.2 23.2.1 SPI特征 线全双工同步传输 3 带或不带第三根双向数据线的双线单工同步传输 8或16位传输帧格式选择 主或从操作 支持多主模式/2) f(最大为 8个主模式波特率预分频系数PCLK/2) 最大为f 从模式频率 (PCLK 主模式和从模式的快速通信 / 主模式和从模式下均可以由软件或硬件进行NSS管理:主从操作模式的动态改变 可编程的时钟极性和相位 LSB在前或在前 可编程的数据顺序,MSB 可触发中断的专用发送和接收标志 SPI总线忙状态标志CRC 支持可靠通信的硬件 在发送模式下, CRC值可以被作为最后一个字节发送457

5、/754 SPI接STM32F10xxx参考手册口 校验 在全双工模式中对接收到的最后一个字节自动进行CRC 可触发中断的主模式故障、过载以及CRC错误标志 支持DMA功能的1字节发送和接收缓冲器:产生发送和接受请求 2S功能I 23.2.2 单工通信(仅发送或接收) 主或者从操作 8位线性可编程预分频器,获得精确的音频采样频率(8KHz到96kHz) 数据格式可以是16位, 24位或者32位 音频信道固定数据包帧为16位 (16位数据帧)或32位(16、24或32位数据帧) 可编程的时钟极性 (稳定态) 从发送模式下的下溢标志位和主/从接收模式下的溢出标志位 16位数据寄存器用来发送和接收,

6、在通道两端各有一个寄存器 2S协议:I 支持的2I S飞利浦标准 MSB对齐标准(左对齐) LSB对齐标准(右对齐) PCM标准(16位通道帧上带长或短帧同步或者16位数据帧扩展为32位通道帧) 数据方向总是MSB在先 发送和接收都具有DMA能力 主时钟可以输出到外部音频设备,比率固定为256xFs(Fs为音频采样频率) 2S模块(I2S2和I2S3)有一个专用的I 在互联型产品中,两个PLL(PLL3),产生更加精准得时钟 458/754 SPI接STM32F10xxx参考手册 口 23.3 SPI功能描述 23.3.1 概述 SPI的方框图见下图。 SPI框图图209 个引脚与外部器件相连

7、:SPI通过4通常 从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。:主设备输入/ MISO 从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。:主设备输出/ MOSI SCK:串口时钟,作为主设备的输出,从设备的输入 /从设备。它的功能是用来作为“片 NSS:从设备选择。这是一个可选的引脚,用来选择主引选引脚”,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突。从设备的NSS 引脚也可以作为),NSSI/O脚可以由主设备的一个标准引脚来驱动。一旦被使能(SSOE位引脚连NSSSPI设备,如果它们的输出引脚,并在SPI处于主模式时拉低;此时,所有的硬件模式,就会

8、自动引脚,则会检测到低电平,如果它们被设置为NSS接 到主设备的NSS时,如果SSOE=0)配置为输入引脚(MSTR=1, 进入从设备状态。当配置为主设备、NSS位被自动清除,此设备进入设备进入主模式失败状态:即MSTRNSS 被拉低,则这个SPI) ( 参见从模式 下图是一个单主和单从设备互连的例子。459/754 参考手接STM32F10xxxSPI 口 册 210 单主和单从应用图 NSS引脚设置为输入1. 这里 )。脚相互连接。这样,数据在主和从之间串行地传输(MSB位在前MISOMOSI脚相互连接,引脚回脚把数据发送给从设备,从设备通过MISO通信总是由主设备发起。主设备通过MOSI

9、数据。这意味全双工通信的数据输出和数据输入是用同一个时钟信号同步的;时钟信号由主传 SCK脚提供。设 备通过 (NSS)脚管理从选择 NSS模式:有2种。在211)位来使能这种模式(见图软件NSS模式:可以通过设置SPI_CR1寄存器的SSM SSI的NSS信号电平可以通过写SPI_CR1这种 模式下NSS引脚可以用作它用,而内部 位来驱动 模式,分两种情况: 硬件NSS SPI_CR2输出已经通过,并且NSSNSS输出被使能:当STM32F10xxx工作为主SPI NSS的引脚与这个主SPISSOE位使能,这时NSS引脚被拉低,所有NSS寄存 器的设备需当一个SPI I设备,将自动变成从SP

10、I设备。引脚相连并 配置为硬件NSS的SP 设备;如果它不信号,以通知所有其它的设备它是主 要发送广播数据,它必须拉低NSS硬件失败错误,这意味着总线上有另外一个主设备在通信,这时将产生一个 能拉低NSS(Hard Faul。 t) NSS 输出被关闭:允许操作于多主环境。 /软件的从选择管理图211 硬件111 2016-08-09 09:13:27 - 在理解下啊 时钟信号的相位和极性 SPI_CR寄存器的CPOL和CPHA位,能够组合成四种可能的时序关系。CPOL(时钟极性)位控制 在没有数据传输时时钟的空闲状态电平,此位对主模式和从模式下的设备都有效。如果CPOL被 清0,SCK引脚在

11、空闲状态保持低电平;如果CPOL被置1,SCK引脚在空闲状态保持高电平。 如果CPHA(时钟相位)位被置1,SCK时钟的第二个边沿(CPOL位为0时就是下降沿,CPOL位 为1时就是上升沿)进行数据位的采样,数据在第二个时钟边沿被锁存。如果CPHA位被清0, SCK时钟的第一边沿(CPOL位为0时就是下降沿,CPOL位为1时就是上升沿)进行460/754 参照2009年12月 RM0008 Reference Manual 英文第10版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载 更新版本 SPI接STM32F10xxx参考手册 口 样,数据在第一个时钟边沿被

12、锁存。数据位采461/754 参照2009年12月 RM0008 Reference Manual 英文第10版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载 更新版本 SPI接STM32F10xxx参考手册 口CPOL时钟极性和CPHA时钟相位的组合选择数据捕捉的时钟边沿。 图212显示了SPI传输的4种CPHA和CPOL位组合。此图可以解释为主设备和从设备的SCK脚、 MISO脚、MOSI脚直接连接的主或从时序图。 注意: 在改变位之前,必须清除位将禁止。 SPISPE1. CPOL/CPHA主和从必须配置成相同的时序模式。 2. 的空闲状态必须和寄存器指定

13、的极性一致为时,空闲时应上拉为 SCKSPI_CR13. SCK1(CPOL高电平;为时,空闲时应下拉为低电平。 )0CPOLSCK数据帧格式位或位由寄存器的位选择,并且决定发送接收的数据长度。 /(8SPI_CR1164. DFF)图212 数据时钟时序图 数据帧格式在先也可以MSBLSBFIRST位,输出数据位时可以寄存器中的根据SPI_CR1位。所选择的数据位或是16寄存器的DFF位,每个数据帧可以是8根据LSB在先。 SPI_CR1 帧格式对发送和 或接收都有效。/462/754 参照2009年12月 RM0008 Reference Manual 英文第10版 本译文仅供参考,如有翻

14、译错误,请以英文原稿为准。请读者随时注意在ST网站下载 更新版本 SPI接STM32F10xxx参考手 册 口 23.3.2 配置SPI为从模式在从模式下,SCK引脚用于接收从主设备来的串行时钟。SPI_CR1寄存器中BR2:0的设置不影 响数据传输速率。 注: 建议在主设备发送时钟之前使能从设备,否则可能会发生意外的数据传输。在通信时钟的SPI第 一个边沿到来之前或正在进行的通信结束之前,从设备的数据寄存器必须就绪。在使能从设备 和主设备之前,通信时钟的极性必须处于稳定的数值。 请按照以下步骤配置SPI为从模式: 配置步骤 1. 设置DFF位以定义数据帧格式为8位或16位。 2. 选择CPO

15、L和CPHA位来定义数据传输和串行时钟之间的相位关系(见图212)。为保证正确 的数据传输,从设备和主设备的CPOL和CPHA位必须配置成相同的方式。 3. 帧格式(SPI_CR1寄存器中的LSBFIRST位定义的”MSB在前”还是”LSB在前”)必须与主设备 相同。 4. 硬件模式下(参考从选择(NSS)脚管理部分),在完整的数据帧(8位或16位)传输过程中, NSS引脚必须为低电平。在NSS软件模式下,设置SPI_CR1寄存器中的SSM位并清除SSI 位。 5. 清除MSTR位、设置SPE位(SPI_CR1寄存器),使相应引脚工作于SPI模式下。 在这个配置中,MOSI引脚是数据输入,MI

16、SO引脚是数据输出。 数据发送过程 在写操作中,数据字被并行地写入发送缓冲器。 当从设备收到时钟信号,并且在MOSI引脚上出现第一个数据位时,发送过程开始(译注:此时 第一个位被发送出去)。余下的位(对于8位数据帧格式,还有7位;对于16位数据帧格式,还有 15位)被装进移位寄存器。当发送缓冲器中的数据传输到移位寄存器时,SPI_SP寄存器的TXE 标志被设置,如果设置了SPI_CR2寄存器的TXEIE位,将会产生中断。 数据接收过程 对于接收器,当数据接收完成时: 移位寄存器中的数据传送到接收缓冲器,SPI_SR 寄存器中的RXNE标志被设置。 如果设置了SPI_CR2寄存器中的RXNEIE

17、位,则产生中断。 在最后一个采样时钟边沿后,RXNE位被置1,移位寄存器中接收到的数据字节被传送到接收缓 冲器。当读SPI_DR寄存器时,SPI设备返回这个接收缓冲器的数值。 读SPI_DR寄存器时,RXNE位被清除。 23.3.3 配置SPI为主模式 在主配置时,在SCK脚产生串行时钟。 配置步骤 1. 通过SPI_CR1寄存器的BR2:0位定义串行时钟波特率。 2. 选择CPOL和CPHA位,定义数据传输和串行时钟间的相位关系(见图212)。 3. 设置DFF位来定义8位或16位数据帧格式。 4. 配置SPI_CR1寄存器的LSBFIRST位定义帧格式。 5. 如果需要NSS引脚工作在输入

18、模式,硬件模式下,在整个数据帧传输期间应把NSS脚连接 到高电平;在软件模式下,需设置SPI_CR1寄存器的SSM位和SSI位。如果NSS引脚工作 在输出模式,则只需设置SSOE位。 6. 必须设置MSTR位和SPE位(只当NSS脚被连到高电平,这些位才能保持置位)。 在这个配置中,MOSI引脚是数据输出,而MISO引脚是数据输入。 463/754 参照2009年12月 RM0008 Reference Manual 英文第10版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载 更新版本 SPI接STM32F10xxx参考手册 口 数据发送过程当写入数据至发送缓冲

19、器时,发送过程开始。 在发送第一个数据位时,数据字被并行地(通过内部总线)传入移位寄存器,而后串行地移出到 MOSI脚上;MSB在先还是LSB在先,取决于SPI_CR1寄存器中的LSBFIRST位的设置。数据从 发送缓冲器传输到移位寄存器时TXE标志将被置位,如果设置了SPI_CR1寄存器中的TXEIE 位,将产生中断。 数据接收过程 对于接收器来说,当数据传输完成时: 传送移位寄存器里的数据到接收缓冲器,并且RXNE标志被置位。 如果设置了SPI_CR2寄存器中的RXNEIE位,则产生中断。 在最后采样时钟沿,RXNE位被设置,在移位寄存器中接收到的数据字被传送到接收缓冲器。读 SPI_DR

20、寄存器时,SPI设备返回接收缓冲器中的数据。 读SPI_DR寄存器将清除RXNE位。 一旦传输开始,如果下一个将发送的数据被放进了发送缓冲器,就可以维持一个连续的传输 流。在试图写发送缓冲器之前,需确认TXE标志应该为1。 注: 在硬件模式下,从设备的输入由引脚控制或另一个由软件驱动的引脚控制。 GPIONSSNSSNSS23.3.4 配置SPI为单工通信 SPI模块能够以两种配置工作于单工方式: 1条时钟线和1条双向数据线; 1条时钟线和1条数据线(只接收或只发送); 1条时钟线和1条双向数据线(BIDIMODE=1) 设置SPI_CR1寄存器中的BIDIMODE位而启用此模式。在这个模式下

21、,SCK引脚作为时钟,主 设备使用MOSI引脚而从设备使用MISO引脚作为数据通信。传输的方向由SPI_CR1寄存器里的 BIDIOE控制,当这个位是1的时候,数据线是输出,否则是输入。 1条时钟和1条单向数据线(BIDIMODE=0) 在这个模式下,SPI模块可以或者作为只发送,或者作为只接收。 只发送模式类似于全双工模式(BIDIMODE=0,RXONLY=0):数据在发送引脚(主模式时是 MOSI、从模式时是MISO)上传输,而接收引脚(主模式时是MISO、从模式时是MOSI)可以 作为通用的I/O使用。此时,软件不必理会接收缓冲器中的数据(如果读出数据寄存器,它不 包含任何接收数据)。

22、 在只接收模式,可以通过设置SPI_CR2寄存器的RXONLY位而关闭SPI的输出功能;此时, 发送引脚(主模式时是MOSI、从模式时是MISO)被释放,可以作为其它功能使用。 配置并使能SPI模块为只接收模式的方式是: 在主模式时,一旦使能SPI,通信立即启动,当清除SPE位时立即停止当前的接收。在此模 式下,不必读取BSY标志,在SPI通信期间这个标志始终为1。 在从模式时,只要NSS被拉低(或在NSS软件模式时,SSI位为0)同时SCK有时钟脉冲, SPI就一直在接收。 23.3.5 数据发送与接收过程 接收与发送缓冲器 在接收时,接收到的数据被存放在一个内部的接收缓冲器中;在发送时,在

23、被发送之前,数据 将首先被存放在一个内部的发送缓冲器中。 对SPI_DR寄存器的读操作,将返回接收缓冲器的内容;写入SPI_DR寄存器的数据将被写入发 送缓冲器中。 464/754 英文第RM0008 Reference Manual 月2009年12 参照网站下载ST 10版本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在 更新版本 SPI接STM32F10xxx参考手册 口 主模式下开始传输RXONLY=0) 全双工模式(BIDIMODE=0并且 当写入数据到SPI_DR寄存器(发送缓冲器)后,传输开始; 在传送第一位数据的同时,数据被并行地从发送缓冲器传送到8位的移位寄存

24、器中, 然后按顺序被串行地移位送到MOSI引脚上; 与此同时,在MISO引脚上接收到的数据,按顺序被串行地移位进入8位的移位寄存器 中,然后被并行地传送到SPI_DR寄存器(接收缓冲器)中。 单向的只接收模式(BIDIMODE=0并且RXONLY=1) SPE=1时,传输开始; MISO引脚上接收到的数据,按顺序被串行地移位进入8位的只有接收器被激活,在 )中。移 位寄存器中,然后被并行地传送到SPI_DR寄存器(接收缓冲器BIDIOE=1) (BIDIMODE=1并且 双向模式,发送时 )后,传输开始; 当写入数据到SPI_DR寄存器(发送缓冲器 位的移位寄存器中,8 在传送第一位数据的同时

25、,数据被并行地从发送缓冲器传送到 引脚上;然后按顺序被串行地移位送到MOSI 不接收数据。 BIDIOE=0) 并且 双向模式,接收时(BIDIMODE=1 时,传输开始; SPE=1并且BIDIOE=0位的移位寄存器中,然后8 在MOSI引脚上接收到的数据,按顺序被串行地移位进入 寄存器(接收缓冲器)中。被 并行地传送到SPI_DR 不激活发送器,没有数据被串行地送到MOSI 引脚上。从模式下开始传输 全双工模式(BIDIMODE=0并且RXONLY=0) 当从设备接收到时钟信号并且第一个数据位出现在它的MOSI时,数据传输开始, 后的数据位依次移动进入移位寄存器;随位的移8 与此同时,在传

26、输第一个数据位时,发送缓冲器中的数据被并行地传送到主设备开始SPI 寄存器,随后被串行地发送到MISO引脚上。软件必须保证在位 。数据传 输之前在发送寄存器中写入要发送的数据RXONLY=1) 并且 单向的只接收模式(BIDIMODE=0 当从设备接收到时钟信号并且第一个数据位出现在它的MOSI时,数据传输开始, 后数据位依次移动进入移位寄存器;随 引脚上。 不启动发送器,没有数据被串行地传送到MISOBIDIOE=1) 并且 双向模式,发送时(BIDIMODE=1 当从设备接收到时钟信号并且发送缓冲器中的第一个数据位被传送到MISO引脚上 的时候,数据传输开始; 在第一个数据位被传送到MIS

27、O引脚上的同时,发送缓冲器中要发送的数据被平行地 引脚上。软件必须保证在位的移位寄存器中,随后被串行地发送到MISO传送到8 主设备开始数据传输之前在发送寄存器中写入要发送的数据;SPI 不接收数据。 BIDIOE=0) 双向模式,接收时 (BIDIMODE=1并且 MOSI时,数据传输开始;当从设备接收到时钟信号并且第一个数据位出现在它的位的移位寄存器中,然后被平行地传引脚上接收到的数据被串行地传送到从 MISO8 ;( 送到SPI_DR寄存器接收缓冲器) 不启动发送器,没有数据被串行地传送到MISO引脚上。 465/754 参照2009年12月 RM0008 Reference Manua

28、l 英文第10版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载 更新版本 SPI接STM32F10xxx参考手册口 处理数据的发送与接收当数据从发送缓冲器传送到移位寄存器时,设置TXE标志(发送缓冲器空),它表示内部的发送缓 冲器可以接收下一个数据;如果在SPI_CR2寄存器中设置了TXEIE位,则此时会产生一个中 断;写入SPI_DR寄存器即可清除TXE位。 注: 在写入发送缓冲器之前,软件必须确认标志为,否则新的数据会覆盖已经在发送缓冲器 1TXE中的数据。 Txe为0时发送新数据 在采样时钟的最后一个边沿,当数据被从移位寄存器传送到接收缓冲器时,设置RXN

29、E标志(接 收缓冲器非空);它表示数据已经就绪,可以从SPI_DR寄存器读出;如果在SPI_CR2寄存器中 设置了RXNEIE位,则此时会产生一个中断;读出SPI_DR寄存器即可清除RXNIE标志位。 主或从模式 BSY标志等待数据传输的结束。在一些配置中,传输最后一个数据时,可以使用下(BIDIMODE=0并且RXONLY=0)全双工发送和接收过程模式 软件必须遵循下述过程,发送和接收数据(见图213和图214): 1. 设置SPE位为1,使能SPI模块; 2. 在SPI_DR寄存器中写入第一个要发送的数据,这个操作会清除TXE标志; 3. 等待TXE=1,然后写入第二个要发送的数据。等待R

30、XNE=1,然后读出SPI_DR寄存器并 获得第一个接收到的数据,读SPI_DR的同时清除了RXNE位。重复这些操作,发送后续 的数据同时接收n-1个数据; 4. 等待RXNE=1,然后接收最后一个数据; 5. 等待TXE=1,在BSY=0之后关闭SPI模块。 也可以在响应RXNE或TXE标志的上升沿产生的中断的处理程序中实现这个过程。 图213 主模式、全双工模式下(BIDIMODE=0并且RXONLY=0)连续传输时,TXE/RXNE/BSY 的变化示意图 466/754 参照2009年12月 RM0008 Reference Manual 英文第10版 本译文仅供参考,如有翻译错误,请以

31、英文原稿为准。请读者随时注意在ST网站下载 更新版本 SPI接STM32F10xxx参考手册 口图214 从模式、全双工模式下(BIDIMODE=0并且RXONLY=0)连续传输时,TXE/RXNE/BSY 的变化示意图 并且RXONLY=0)只发送过程(BIDIMODE=0 216):(见图215和图在此模式下,传输过程可以简要说明如下,使用BSY位等待传输的结束 SPI模块;位为1,使能1. 设置SPE TXE标志;在SPI_DR寄存器中写入第一个要发送的数据,这个操作会清除2. ,然后写入第二个要发送的数据。重复这个操作,发送后续的数据;3. 等待TXE=1 ,这表示最后一TXE=1;然

32、后等待BSY=04. 写入最后一个数据到SPI_DR寄存器之后,等待 个数据的传输已经完成。 标志的上升沿产生的中断的处理程序中实现这个过程。也可以在响应TXE迟,时钟周期的延个 注: 对于不连续的传输,在写入寄存器的操作与设置位之间有APB1. BSYSPI_DR2。因此在只发送模式下,写入最后一个数据后,最好先等待,然后再等待 BSY=0TXE=1 位寄存器中的 只发送模式下,在传输个数据之后,由于不会读出接收到的数据,OVRSPI_SR22标志位译注:软件不必理会这个会变为。 OVR1()变化下连续传输时,TXE/BSY主设备只发送模式215 (BIDIMODE=0并且RXONLY=0)

33、图 意图 示 467/754 参照2009年12月 RM0008 Reference Manual 英文第10版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载 更新版本 SPI接STM32F10xxx参考手册口 图216 从设备只发送模式(BIDIMODE=0并且RXONLY=0)下连续传输时,TXE/BSY变化示意 图 BIDIOE=1)双向发送过程(BIDIMODE=1并且SPI_CR2模块之前,需要在在此模式下,操作过程类似于只发送模式,不同的是:在使能SPI并且(BIDIMODE=0单向只接收模式 和BIDIOE位为1。寄 存器中同时设置BIDIMODE

34、 RXONLY=1) :见)在此模式下,传输过程可以简要说明如下( ;寄存器中,设置RXONLY=11. 在SPI_CR2 SPI模块:2. 设置SPE=1,使能 SPI(SPE=0)之前,不断地接收串行数据;a) 主模式下,立刻产生SCK时钟信号,在关闭 SCK时钟时,接收串行数据。主设备拉低NSS信号并产生SPIb) 从模式下,当。重复)位(同时会清除RXNE3. 等待RXNE=1,然后读出SPI_DR寄存器以获得收到的数据 个操作接收所有数据。这 标志的上升沿产生的中断的处理程序中实现这个过程。也可以在响应RXNE 注:如果在最后一个数据传输结束后关闭模块,请按照第节的建议操作。 23.

35、3.8SPI 变化示意图(BIDIMODE=0并且RXONLY=1)下连续传输时,RXNE图217 只接收模式 BIDIOE=0)(BIDIMODE=1单向接收过程并且SPI_CR2模块之前,需要在在此模式下,操作过程类似于只接收模式,不同的是:在使能SPI 位为0。BIDIOE 存器中设置BIDIMODE为1并清除寄 连续和非连续传输,中断)TXE当在主模式下发送数据时,如果软件足够快,能够在检测到每次的上升沿(或TXE寄存器,则能够实现连续的通信;此时,在每SPI_DR并 立即在正在进行的传输结束之前写入 时钟保持连续,同时BSY位不会被清除。SPI个数 据项的传输之间的468/754 参

36、照2009年12月 RM0008 Reference Manual 英文第10版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载 更新版本 SPI接STM32F10xxx参考手册 口如果软件不够快,则会导致不连续的通信;这时,在每个数据传输之间会被清除(见下图)。 在主模式的只接收模式下(RXONLY=1),通信总是连续的,而且BSY标志始终为1。 在从模式下,通信的连续性由SPI主设备决定。不管怎样,即使通信是连续的,BSY标志会在每 个数据项之间至少有一个SPI时钟周期为低(见图216)。 图218 非连续传输发送(BIDIMODE=0并且RXONLY=0)时

37、,TXE/BSY变化示意图 CRC计算23.3.6 计算器。校验用于保证全双工通信的可靠性。数据发送和数据接收分别使用单独的CRCCRC寄存的计算是在由SPI_CR1CRC。CRC通 过对每一个接收位进行可编程的多项式运算来计算 CPOL位定义的采样时钟边沿进行的。 CPHA和器中位数据帧或接收的数据帧格式:计算方法,取决于所选的发送和 该接口提供了两种注意:8CRCSPI/。位数据帧采用 用;采 CRC16CR816位时同时复位CRCEN寄存器中的CRCEN位启用的。设置CRC计算是通过设置SPI_CR1位,CRCNEXT。当设置了SPI_CR1的 存器(SPI_RXCRCR和SPI_TXC

38、RCR)CRC寄 的内SPI_TXCRCR 容将在当前字节发送之后发出。的内容不SPI_RXCRCRSPI_TXCRCR的内容时,如果在移位寄存器中收到的数值与在传输 。标志位被置1 配,则SPI_SR寄存器的CRCERR匹 期间,的数值仅在数据字节传输结束后传送。在传输CRC如果在TX缓冲器中还有数据,CRC 计算器关闭,寄存器的数值保持不变。CRC。请参考产品说明书,以确认有此功能不是所有型号都有此功能注意: )( CRC:SPI通信可以通过以下步骤使用 MSTR的值;、SSI和CPHA、LSBFirst、BR、SSM 设置CPOL、 寄存器输入多项式; 在SPI_CRCPR计算,该操作也

39、会清除寄存器CRC寄存器CRCEN位使能 通过设置SPI_CR1 ;和SPI_TXCRCSPI_RXCRCR 功能;位启动SPI 设置SPI_CR1寄存器的SPE 启动通信并且维持通信,直到只剩最后一个字节或者半字; CRCNext位,指示硬件在发 在把最后一个字节或半字写进发送缓冲器时,设置SPI_CR1的 计算;CRC的数值。在发送CRC数值期间,停止送完成最后一个数据之后,发送CRC 位被清除。同样,接收到数值,CRCNextCRC 当最后一个字节或半字被发送后,SPI发送标上的CRCERRSPI_RXCRCRCRC与值进行比较,如果比较不相配,则设置SPI_SR的 时,则产生中断。SP

40、I_CR2寄存器的ERRIE位,当设置了志 469/754 参照2009年12月 RM0008 Reference Manual 英文第10版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载 更新版本 SPI接STM32F10xxx参考手册 口计算,否则可能会得到错误注意: 当模块处于从设备模式时,请注意在时钟稳定之后再使能CRCSPI引脚上有输入时钟,不管的 计算结果。事实上,只要设置了位,只要在SPECRCENSCKCRC的计算。位的 状态,都会进行 CRC的时间应当时钟频率较高时,用户在发送时必须小心。在传输期间,使用CPUCRCSPICRC过程中应禁止函数

41、调用。尽 可能少;为了避免在接收最后的数据和时出错,在发送CRCCRC位的操作。必须 在发送接收最后一个数据之前完成设置 CRCNEXT/降时钟频率较高时,因为的操作会影响的带宽,建议采用模式以避免当SPICPUDMASPISPI的速度。 低 传输硬件模式,引脚应该在数据传输和当配置为从模式并且使用了CRCNSSNSSSTM32F10xxx期间保持为低。 译(CRC的计算当配置SPI为从模式并且使用CRC的功能,即使NSS引脚为高时仍然会执行。例如:当计算会继续执行)SCK注: 当NSS信号为高时,如果引脚上有时钟脉冲,则CRC的译注:此时要想办法避免CRC主设备交 替地与多个从设备进行通信时

42、,将会出现这种情况( )。误操作 )的时候,为了保(NSS信号为高)转换到选中一个新的从设备(NSS信号为低在不选中一个从设备 CRC数值。持主从设备端下次CRC计算结果的同步,应该清除主从两端的 数值:按照下述步骤清除CRC(SPE=0); 模块1. 关闭SPI ;2. 清除CRCEN位为0 ;3. 设置CRCEN位为1 。 使能SPI模块(SPE=1)4. 23.3.7 状态标志 应用程序通过3个状态标志可以完全监控SPI总线的状态。 发送缓冲器空闲标志(TXE) 此标志为1时表明发送缓冲器为空,可以写下一个待发送的数据进入缓冲器中。当写入SPI_DR 时,TXE标志被清除。 接收缓冲器非

43、空(RXNE) 此标志为1时表明在接收缓冲器中包含有效的接收数据。读SPI忙(Busy)标志 BSY标志由硬件设置与清除(写入此位无效果)数据寄存器可以清除此标志。 ,此标志表明SPI通信层的状态。 当它被设置为 1 时, 表明SPI正忙于通信,但有一个例外:在主模式的双向接收模式下 (MSTR=1、BDM=1并且BDOE=0),在接收期间BSY标志保持为低。 在软件要关闭SPI模块并进入停机模式(或关闭设备时钟)之前,可以使用BSY标志检测传输是否 结束,这样可以避免破坏最后一次传输,因此需要严格按照下述过程执行。 BSY标志还可以用于在多主系统中避免写冲突。 除了主模式的双向接收模式(MS

44、TR=1、BDM=1并且BDOE=0),当传输开始时,BSY标志被 置1。 以下情况时此标志将被清除为0: 当传输结束(主模式下,如果是连续通信的情况例外); 当关闭SPI模块; 当产生主模式失效(MODF=1)。 如果通信不是连续的,则在每个数据项的传输之间,BSY标志为低。 当通信是连续时: 主模式下:在整个传输过程中,BSY标志保持为高; 从模式下:在每个数据项的传输之间,BSY标志在一个SPI时钟周期中为低。 470/754 参照2009年12月 RM0008 Reference Manual 英文第10版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载

45、更新版本 SPI接STM32F10xxx参考手册 口不要使用注: 标志处理每一个数据项的发送和接收,最好使用和标志。 RXNEBSYTXE23.3.8 关闭SPI 当通讯结束,可以通过关闭SPI模块来终止通讯。清除SPE位即可关闭SPI。 在某些配置下,如果再传输还未完成时,就关闭SPI模块并进入停机模式,则可能导致当前的传 输被破坏,而且BSY标志也变得不可信。 为了避免发生这种情况,关闭SPI模块时,建议按照下述步骤操作: 在主或从模式下的全双工模式(BIDIMODE=0,RXONLY=0) 1. 等待RXNE=1并接收最后一个数据; 2. 等待TXE=1; 3. 等待BSY=0; 在主或

46、从模式下的单向 )。SPI(SPE=0),最后进入停机模式(或关闭该模块的时钟4. 关闭只发送模式(BIDIMODE=0,RXONLY=0)或双向的发送模式 (BIDIMODE=1,BIDIOE=1) 在SPI_DR寄存器中写入最后一个数据后: 1. 等待TXE=1; 2. 等待BSY=0; 在主或从模式下的单向 )。,最后进入停机模式(或关闭该模块的时钟3. 关闭SPI(SPE=0)只接收模式(MSTR=1,BIDIMODE=0,RXONLY=1)或双向 的接收模式(MSTR=1,BIDIMODE=1,BIDIOE=0) 这种情况需要特别地处理,以保证SPI不会开始一次新的传输: 1. 等待

47、倒数第二个(第n-1个)RXNE=1; 2. 在关闭SPI(SPE=0)之前等待一个SPI时钟周期(使用软件延迟); 3. 在进入停机模式(或关闭该模块的时钟)之前等待最后一个RXNE=1。 注: 在主模式下的单向只发送模式,时,传输过程中标志始终为 BSY(MSTR=1BDM=1BDOE=0)低。 在从模式下的只接收模式(MSTR=0,BIDIMODE=0,RXONLY=1)或双向的接收模 式(MSTR=0,BIDIMODE=1,BIDIOE=0) 1. 可以在任何时候关闭SPI(SPE=0),SPI会在当前的传输结束后被关闭; 2. 如果希望进入停机模式,在进入停机模式(或关闭该模块的时钟

48、)之前必须首先等待 BSY=0。 23.3.9 利用DMA的SPI通信 为了达到最大通信速度,需要及时往SPI发送缓冲器填数据,同样接收缓冲器中的数据也必须及 时读走以防止溢出。为了方便高速率的数据传输,SPI实现了一种采用简单的请求/应答的DMA 机制。 当SPI_CR2寄存器上的对应使能位被设置时,SPI模块可以发出DMA传输请求。发送缓冲器和 接收缓冲器亦有各自的DMA请求(见)。 发送时,在每次TXE被设置为1时发出DMA请求,DMA控制器则写数据至SPI_DR寄存 器,TXE标志因此而被清除。 接收时,在每次RXNE被设置为1时发出DMA请求,DMA控制器则从SPI_DR寄存器读出数

49、 据,RXNE标志因此而被清除。 当只使用SPI发送数据时,只需使能SPI的发送DMA通道。此时,因为没有读取收到的数据, OVR被置为1(译注:软件不必理会这个标志)。 当只使用SPI接收数据时,只需使能SPI的接收DMA通道。 470/754 参照2009年12月 RM0008 Reference Manual 英文第10版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载 更新版本 SPI接STM32F10xxx参考手册 口 在发送模式下,当DMA已经传输了所有要发送的数据(DMA_ISR寄存器的TCIF标志变为1)后, 可以通过监视BSY标志以确认SPI通信

50、结束,这样可以避免在关闭SPI或进入停止模式时,破坏 最后一个数据的传输。因此软件需要先等待TXE=1,然后等待BSY=0。 注: 在不连续的通信中,在写数据到的操作与位被置为之间,有个时钟周期APBSPI_DRBSY21的 延迟,因此,在写完最后一个数据后需要先等待再等待。 BSY=0TXE=1图219 使用DMA发送 DMA接收图220 使用 的DMA功能带CRC模式时,在通信结束时,检验并且启用DMASPI当使能使用CRC 完成的。 CRC字节的发送和接收是自动 标志为1表示在传输期间发生错误。CRCERRCRC数据和传输结束时,SPI_SR寄存器的471/754 参照2009年12月

51、RM0008 Reference Manual 英文第10版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载 更新版本 参考手接STM32F10xxxSPI 口 册 23.3.10 错误标志(MODF) 主模式失效错误NSSNSS引脚硬件模式管理下,主设备的主模式失效仅发生在:位被自动置位。主模时;MODFSSI位被置为0脚被拉低;或者在NSS引脚软 件模式管理下, SPI设备有以下影响:式失效对 中断;SPI,如果设置了ERRIE位,则产生 MODF位被置为1 接口;0。这将停止一切输出,并且关闭SPI SPE位被清为MODF下面的步骤用于清除0,因此强迫此设备

52、进入从模式。 MSTR位被清为 位: 寄存器的读或写操作;1时,执行一次对SPI_SR1. 当MODF位被置为的系统中,为了避免出现多个从设备的冲突,MCU 在有多个2. 然后写SPI_CR1寄存器。位MSTRSPE和脚,再 对MODF位进行清零。在完成清零之后,必须先拉高该主设备的NSS 可以恢复到它们的原始状态。通常配置下,从设 MSTR位。1时,硬件不允许设置SPE和出于安全的考虑,当MODF位为 1。然而,在多主配置里,一个设备可以在设置了备的MODF位不能被置为 MODF位表示可能出现了多主冲突。中断程序可MODF位的情况下,处于从设备模式;此时, 以执行一个复位或返回到默认状态来从

53、错误状态中恢复。 溢出错误 RXNE时,即为溢出当主设备已经发送了数据字节,而从设备还没有清除前一个数据字节产生的 错误。当产生溢出错误时: ERRIE位时,则产生中断。位被置为1;当设置了 OVR SPI_DR寄存器返回的是之前未读的数此时,接收器缓冲器的数据不是主设备发送的新数据,读 据,所有随后传送的数据都被丢弃。 清除。SPI_SR寄存器可将OVR依次读出SPI_DR寄存器和 错误CRC 错误标志用来核对接收数据的有CRCCRCEN位时,SPI_CR当设置了寄存器上的与接收方)SPI_TXCRCR数值效性。如果移 位寄存器中接收到的值(发送方发送的 寄存器中的数SPI_RXCRCR 1

54、。SPI_SR寄存器上的CRCERR标志被置位为值不匹配,则 SPI中断23.3.11 SPI中断请求 表166 中断事件 事件标志 使能控制位 发送缓冲器空标志 TXEIE TXE 接收缓冲器非空标志 RXNEIE RXNE 主模式失效事件 MODF 溢出错误 ERRIE OVR CRC错误标志 CRCERR 472/754 参照2009年12月 RM0008 Reference Manual 英文第10版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载 更新版本 SPI接STM32F10xxx参考手册 口 2S功能描述 23.4 I2S音频协议。本节仅适用于大

55、容量产品和互联型产品。 STM32不支持I小容量和中容量的2S功能描述 23.4.1 I2S的框图如下图所示:I 2图S框图I 221 2模SPIS位置为1,即可使能I功能。此时,可以把通过将寄存器SPI_I2SCFGR的I2SMOD 块用22 SPII接口使用大致相同的引脚、标志和中断。S作I接口与S音频接口。2 个引脚:SPI共用3I与S 2,用来发送和接收路时分复用通道的数据;(映射至MOSI引脚)SD :串行数据 ,主模式下作为数据控制信号输出,从模式下作为输入;NSS引脚)映射至 WS:字选(473/754 参照2009年12月 RM0008 Reference Manual 英文第

56、10版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载 更新版本 SPI接STM32F10xxx参考手 CK:串行时钟(映射至SCK口 引脚),主模式下作为时钟信号输出,从模式下作为输入。册 474/754 参照2009年12月 RM0008 Reference Manual 英文第 10版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载 更新版本 SPI接STM32F10xxx参考手册 口在某些外部音频设备需要主时钟时,可以另有一个附加引脚输出时钟: 2S配置为主模式,寄存器SPI_I2SPR的MCKOE位为1时, MCK:主时钟(独立映射),在I作 为输出额外的时钟信号引脚使用。输出时钟信号的频率预先设置为2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论