STM32参考材料介绍资料-中文.doc
《STM32参考材料介绍资料-中文.doc》由会员分享,可在线阅读,更多相关《STM32参考材料介绍资料-中文.doc(42页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、23串行外设接口(SPI)小容量产品 是指闪存存储器容量在 16K 至32K 字节之间的 STM32F101xx、STM32F102xx和 STM32F103xx微控制器。中容量产品是指闪存存储器容量在64K至128K字节之间的STM32F101xx、STM32F102xx和STM32F103xx微控制器。大容量产品是指闪存存储器容量在256K至512K字节之间的STM32F101xx和STM32F103xx微控 制器。互联型产品是指STM32F105xx和STM32F107xx微控制器。 除非特别说明,本章描述的模块适用于整个STM32F10xxx微控制器系列。23.1SPI简介在大容量产品
2、和互联型产品上,SPI接口可以配置为支持SPI协议或者支持I2S音频协议。SPI接 口默认工作在SPI方式,可以通过软件把功能从SPI模式切换到I2S模式。在小容量和中容量产品上,不支持I2S音频协议。串行外设接口(SPI)允许芯片与外部设备以半/全双工、同步、串行方式通信。此接口可以被配置 成主模式,并为外部从设备提供通信时钟(SCK)。接口还能以多主配置方式工作。它可用于多种用途,包括使用一条双向数据线的双线单工同步传输,还可使用CRC校验的可靠 通信。I2S也是一种3引脚的同步串行接口通讯协议。它支持四种音频标准,包括飞利浦I2S标准,MSB 和LSB对齐标准,以及PCM标准。它在半双工
3、通讯中,可以工作在主和从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/SWD复用功能重映射。23.2SPI和I2S主要特征23.2.1 SPI特征
4、3线全双工同步传输 带或不带第三根双向数据线的双线单工同步传输 8或16位传输帧格式选择 主或从操作 支持多主模式 8个主模式波特率预分频系数(最大为fPCLK/2) 从模式频率 (最大为fPCLK/2) 主模式和从模式的快速通信 主模式和从模式下均可以由软件或硬件进行NSS管理:主/从操作模式的动态改变 可编程的时钟极性和相位 可编程的数据顺序,MSB在前或LSB在前 可触发中断的专用发送和接收标志 SPI总线忙状态标志 支持可靠通信的硬件CRC在发送模式下,CRC值可以被作为最后一个字节发送在全双工模式中对接收到的最后一个字节自动进行CRC校验 可触发中断的主模式故障、过载以及CRC错误标
5、志 支持DMA功能的1字节发送和接收缓冲器:产生发送和接受请求23.2.2I2S功能 单工通信(仅发送或接收) 主或者从操作 8位线性可编程预分频器,获得精确的音频采样频率(8KHz到96kHz) 数据格式可以是16位,24位或者32位 音频信道固定数据包帧为16位(16位数据帧)或32位(16、24或32位数据帧) 可编程的时钟极性(稳定态) 从发送模式下的下溢标志位和主/从接收模式下的溢出标志位 16位数据寄存器用来发送和接收,在通道两端各有一个寄存器 支持的I2S协议:I2S飞利浦标准MSB对齐标准(左对齐)LSB对齐标准(右对齐)PCM标准(16位通道帧上带长或短帧同步或者16位数据帧
6、扩展为32位通道帧) 数据方向总是MSB在先 发送和接收都具有DMA能力 主时钟可以输出到外部音频设备,比率固定为256xFs(Fs为音频采样频率) 在互联型产品中,两个I2S模块(I2S2和I2S3)有一个专用的PLL(PLL3),产生更加精准得时钟23.3SPI功能描述23.3.1概述SPI的方框图见下图。 图209SPI框图通常SPI通过4个引脚与外部器件相连: MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。 MOSI:主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。 SCK:串口时钟,作为主设备的输出,从设备的输入 NSS
7、:从设备选择。这是一个可选的引脚,用来选择主/从设备。它的功能是用来作为“片 选引脚”,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突。从设备的NSS 引脚可以由主设备的一个标准I/O引脚来驱动。一旦被使能(SSOE位),NSS引脚也可以作为 输出引脚,并在SPI处于主模式时拉低;此时,所有的SPI设备,如果它们的NSS引脚连接 到主设备的NSS引脚,则会检测到低电平,如果它们被设置为NSS硬件模式,就会自动进 入从设备状态。当配置为主设备、NSS配置为输入引脚(MSTR=1,SSOE=0)时,如果NSS 被拉低,则这个SPI设备进入主模式失败状态:即MSTR位被自动清除,此设备进入从
8、模式 (参见)下图是一个单主和单从设备互连的例子。图210 单主和单从应用1. 这里NSS引脚设置为输入MOSI脚相互连接,MISO脚相互连接。这样,数据在主和从之间串行地传输(MSB位在前)。通信总是由主设备发起。主设备通过MOSI脚把数据发送给从设备,从设备通过MISO引脚回传 数据。这意味全双工通信的数据输出和数据输入是用同一个时钟信号同步的;时钟信号由主设 备通过SCK脚提供。从选择(NSS)脚管理有2种NSS模式: 软件NSS模式:可以通过设置SPI_CR1寄存器的SSM位来使能这种模式(见图211)。在这种 模式下NSS引脚可以用作它用,而内部NSS信号电平可以通过写SPI_CR1
9、的SSI位来驱动 硬件NSS模式,分两种情况:NSS输出被使能:当STM32F10xxx工作为主SPI,并且NSS输出已经通过SPI_CR2寄存 器的SSOE位使能,这时NSS引脚被拉低,所有NSS引脚与这个主SPI的NSS引脚相连并 配置为硬件NSS的SPI设备,将自动变成从SPI设备。 当一个SPI设备需要发送广播数据,它必须拉低NSS信号,以通知所有其它的设备它是主 设备;如果它不能拉低NSS,这意味着总线上有另外一个主设备在通信,这时将产生一个 硬件失败错误(Hard Fault)。NSS输出被关闭:允许操作于多主环境。1112016-08-09 09:13:27-在理解下啊图211
10、硬件/软件的从选择管理时钟信号的相位和极性SPI_CR寄存器的CPOL和CPHA位,能够组合成四种可能的时序关系。CPOL(时钟极性)位控制 在没有数据传输时时钟的空闲状态电平,此位对主模式和从模式下的设备都有效。如果CPOL被 清0,SCK引脚在空闲状态保持低电平;如果CPOL被置1,SCK引脚在空闲状态保持高电平。如果CPHA(时钟相位)位被置1,SCK时钟的第二个边沿(CPOL位为0时就是下降沿,CPOL位 为1时就是上升沿)进行数据位的采样,数据在第二个时钟边沿被锁存。如果CPHA位被清0, SCK时钟的第一边沿(CPOL位为0时就是下降沿,CPOL位为1时就是上升沿)进行数据位采 样
11、,数据在第一个时钟边沿被锁存。CPOL时钟极性和CPHA时钟相位的组合选择数据捕捉的时钟边沿。 图212显示了SPI传输的4种CPHA和CPOL位组合。此图可以解释为主设备和从设备的SCK脚、MISO脚、MOSI脚直接连接的主或从时序图。注意:1. 在改变CPOL/CPHA位之前,必须清除SPE位将SPI禁止。2. 主和从必须配置成相同的时序模式。3. SCK的空闲状态必须和SPI_CR1寄存器指定的极性一致(CPOL为1时,空闲时应上拉SCK为 高电平;CPOL为0时,空闲时应下拉SCK为低电平)。4. 数据帧格式(8位或16位)由SPI_CR1寄存器的DFF位选择,并且决定发送/接收的数据
12、长度。图212数据时钟时序图数据帧格式 根据SPI_CR1寄存器中的LSBFIRST位,输出数据位时可以MSB在先也可以LSB在先。 根据SPI_CR1寄存器的DFF位,每个数据帧可以是8位或是16位。所选择的数据帧格式对发送和/或接收都有效。23.3.2配置SPI为从模式在从模式下,SCK引脚用于接收从主设备来的串行时钟。SPI_CR1寄存器中BR2:0的设置不影 响数据传输速率。注:建议在主设备发送时钟之前使能SPI从设备,否则可能会发生意外的数据传输。在通信时钟的第 一个边沿到来之前或正在进行的通信结束之前,从设备的数据寄存器必须就绪。在使能从设备 和主设备之前,通信时钟的极性必须处于稳
13、定的数值。请按照以下步骤配置SPI为从模式:配置步骤1. 设置DFF位以定义数据帧格式为8位或16位。2. 选择CPOL和CPHA位来定义数据传输和串行时钟之间的相位关系(见图212)。为保证正确 的数据传输,从设备和主设备的CPOL和CPHA位必须配置成相同的方式。3. 帧格式(SPI_CR1寄存器中的LSBFIRST位定义的”MSB在前”还是”LSB在前”)必须与主设备 相同。4. 硬件模式下(参考从选择(NSS)脚管理部分),在完整的数据帧(8位或16位)传输过程中, NSS引脚必须为低电平。在NSS软件模式下,设置SPI_CR1寄存器中的SSM位并清除SSI 位。5. 清除MSTR位、
14、设置SPE位(SPI_CR1寄存器),使相应引脚工作于SPI模式下。 在这个配置中,MOSI引脚是数据输入,MISO引脚是数据输出。数据发送过程在写操作中,数据字被并行地写入发送缓冲器。当从设备收到时钟信号,并且在MOSI引脚上出现第一个数据位时,发送过程开始(译注:此时 第一个位被发送出去)。余下的位(对于8位数据帧格式,还有7位;对于16位数据帧格式,还有 15位)被装进移位寄存器。当发送缓冲器中的数据传输到移位寄存器时,SPI_SP寄存器的TXE 标志被设置,如果设置了SPI_CR2寄存器的TXEIE位,将会产生中断。数据接收过程对于接收器,当数据接收完成时: 移位寄存器中的数据传送到接
15、收缓冲器,SPI_SR 寄存器中的RXNE标志被设置。 如果设置了SPI_CR2寄存器中的RXNEIE位,则产生中断。在最后一个采样时钟边沿后,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
16、_CR1寄存器的LSBFIRST位定义帧格式。5. 如果需要NSS引脚工作在输入模式,硬件模式下,在整个数据帧传输期间应把NSS脚连接 到高电平;在软件模式下,需设置SPI_CR1寄存器的SSM位和SSI位。如果NSS引脚工作 在输出模式,则只需设置SSOE位。6. 必须设置MSTR位和SPE位(只当NSS脚被连到高电平,这些位才能保持置位)。 在这个配置中,MOSI引脚是数据输出,而MISO引脚是数据输入。数据发送过程当写入数据至发送缓冲器时,发送过程开始。 在发送第一个数据位时,数据字被并行地(通过内部总线)传入移位寄存器,而后串行地移出到MOSI脚上;MSB在先还是LSB在先,取决于SP
17、I_CR1寄存器中的LSBFIRST位的设置。数据从发送缓冲器传输到移位寄存器时TXE标志将被置位,如果设置了SPI_CR1寄存器中的TXEIE 位,将产生中断。数据接收过程对于接收器来说,当数据传输完成时: 传送移位寄存器里的数据到接收缓冲器,并且RXNE标志被置位。 如果设置了SPI_CR2寄存器中的RXNEIE位,则产生中断。 在最后采样时钟沿,RXNE位被设置,在移位寄存器中接收到的数据字被传送到接收缓冲器。读SPI_DR寄存器时,SPI设备返回接收缓冲器中的数据。读SPI_DR寄存器将清除RXNE位。 一旦传输开始,如果下一个将发送的数据被放进了发送缓冲器,就可以维持一个连续的传输
18、流。在试图写发送缓冲器之前,需确认TXE标志应该为1。注:在NSS硬件模式下,从设备的NSS输入由NSS引脚控制或另一个由软件驱动的GPIO引脚控制。23.3.4配置SPI为单工通信SPI模块能够以两种配置工作于单工方式: 1条时钟线和1条双向数据线; 1条时钟线和1条数据线(只接收或只发送);1条时钟线和1条双向数据线(BIDIMODE=1) 设置SPI_CR1寄存器中的BIDIMODE位而启用此模式。在这个模式下,SCK引脚作为时钟,主 设备使用MOSI引脚而从设备使用MISO引脚作为数据通信。传输的方向由SPI_CR1寄存器里的BIDIOE控制,当这个位是1的时候,数据线是输出,否则是输
19、入。1条时钟和1条单向数据线(BIDIMODE=0)在这个模式下,SPI模块可以或者作为只发送,或者作为只接收。 只发送模式类似于全双工模式(BIDIMODE=0,RXONLY=0):数据在发送引脚(主模式时是 MOSI、从模式时是MISO)上传输,而接收引脚(主模式时是MISO、从模式时是MOSI)可以 作为通用的I/O使用。此时,软件不必理会接收缓冲器中的数据(如果读出数据寄存器,它不 包含任何接收数据)。 在只接收模式,可以通过设置SPI_CR2寄存器的RXONLY位而关闭SPI的输出功能;此时, 发送引脚(主模式时是MOSI、从模式时是MISO)被释放,可以作为其它功能使用。配置并使能
20、SPI模块为只接收模式的方式是: 在主模式时,一旦使能SPI,通信立即启动,当清除SPE位时立即停止当前的接收。在此模 式下,不必读取BSY标志,在SPI通信期间这个标志始终为1。 在从模式时,只要NSS被拉低(或在NSS软件模式时,SSI位为0)同时SCK有时钟脉冲,SPI就一直在接收。23.3.5数据发送与接收过程接收与发送缓冲器在接收时,接收到的数据被存放在一个内部的接收缓冲器中;在发送时,在被发送之前,数据 将首先被存放在一个内部的发送缓冲器中。对SPI_DR寄存器的读操作,将返回接收缓冲器的内容;写入SPI_DR寄存器的数据将被写入发 送缓冲器中。主模式下开始传输 全双工模式(BID
21、IMODE=0并且RXONLY=0)当写入数据到SPI_DR寄存器(发送缓冲器)后,传输开始;在传送第一位数据的同时,数据被并行地从发送缓冲器传送到8位的移位寄存器中, 然后按顺序被串行地移位送到MOSI引脚上;与此同时,在MISO引脚上接收到的数据,按顺序被串行地移位进入8位的移位寄存器 中,然后被并行地传送到SPI_DR寄存器(接收缓冲器)中。 单向的只接收模式(BIDIMODE=0并且RXONLY=1)SPE=1时,传输开始;只有接收器被激活,在MISO引脚上接收到的数据,按顺序被串行地移位进入8位的移 位寄存器中,然后被并行地传送到SPI_DR寄存器(接收缓冲器)中。 双向模式,发送时
22、(BIDIMODE=1并且BIDIOE=1)当写入数据到SPI_DR寄存器(发送缓冲器)后,传输开始;在传送第一位数据的同时,数据被并行地从发送缓冲器传送到8位的移位寄存器中, 然后按顺序被串行地移位送到MOSI引脚上;不接收数据。 双向模式,接收时(BIDIMODE=1并且BIDIOE=0)SPE=1并且BIDIOE=0时,传输开始;在MOSI引脚上接收到的数据,按顺序被串行地移位进入8位的移位寄存器中,然后被 并行地传送到SPI_DR寄存器(接收缓冲器)中。不激活发送器,没有数据被串行地送到MOSI引脚上。从模式下开始传输 全双工模式(BIDIMODE=0并且RXONLY=0)当从设备接收
23、到时钟信号并且第一个数据位出现在它的MOSI时,数据传输开始,随 后的数据位依次移动进入移位寄存器;与此同时,在传输第一个数据位时,发送缓冲器中的数据被并行地传送到8位的移位 寄存器,随后被串行地发送到MISO引脚上。软件必须保证在SPI主设备开始数据传 输之前在发送寄存器中写入要发送的数据。 单向的只接收模式(BIDIMODE=0并且RXONLY=1)当从设备接收到时钟信号并且第一个数据位出现在它的MOSI时,数据传输开始,随 后数据位依次移动进入移位寄存器;不启动发送器,没有数据被串行地传送到MISO引脚上。 双向模式,发送时(BIDIMODE=1并且BIDIOE=1)当从设备接收到时钟信
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- stm32 参考 材料 介绍 资料 中文
限制150内