STMCU小助手
发布时间:2022-8-27 14:56
|
一、SPI功能描述6 R4 E4 J5 ?8 n V' ?+ s4 e! E- q SPI的框图如下:) n3 F, t" ]" ~* T
' _$ y4 i& \% ]. }* j2 g SPI通过4个引脚与外部器件相连: MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。 MOSI:主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。( T m. r! ]4 F) f SCK:串口时钟,作为主设备的输出,从设备的输入 NSS:从设备选择。这是一个用来选择从设备的(可选的)引脚。这个引脚用来作为“片选引脚”,让主设备可以单独地与特定从设备通讯,避免数据线上发生冲突。从设备的NSS引脚作为输入引脚可以由主设备的一个标准I/O引脚来驱动。如果使能了SSOE位(SPI_CR2[2])NSS引脚也可以作为输出引脚,在SPI处于主模式时将其拉低,此时,所有的NSS引脚连接到主设备的NSS引脚的SPI设备,则会检测到低电平就会自动进入从设备状态(如果它们被设置为NSS硬件模式)。当配置为主设备且NSS配置为输入引脚(MSTR=1,SSOE=0)时,如果NSS被拉低,则这个SPI设备进入主模式失败状态:即MSTR位被自动清除,此设备进入从模式+ y+ F1 u2 Y/ c$ f) \9 `6 Q 二、配置SPI为主模式) @) o9 @5 T! S$ V" g) b& y9 H 主模式时,在SCK脚产生串行时钟。$ b( r* E/ X& q: A- @1 Z& C8 M) e SPI为主模式配置步骤: 1.通过SPI_CR1寄存器的BR[2:0]位定义串行时钟波特率。; K3 c- z( {5 m2 h7 P 2.选择CPOL和CPHA位,定义数据传输和串行时钟间的相位关系。' n: B/ }% E' \7 f0 ?6 W& K$ ^; @ 3.设置DFF位来定义8位或16位数据帧格式。# E( f' h9 \) S! A2 j 4.配置SPI_CR1寄存器的LSBFIRST位定义帧格式。 5.NSS硬件输入模式下,需要NSS引脚工作在输入模式,在整个数据帧传输期间应把NSS脚连接到高电平;7 b/ b# g2 N; S; U: _3 i# c NSS软件输入模式下,需设置SPI_CR1寄存器的SSM位和SSI位。 如果NSS引脚工作在输出模式,则只需设置SSOE位。 6.设置MSTR位(设置为主模式)、设置SPE位(SPI使能)。(只当NSS脚被连到高电平,这些位才能保持置位)。 5 W! R9 c. n0 ?7 j- G* Q 三、配置SPI为从模式 从模式下,SCK引脚用于接收从主设备来的串行时钟。 ! ?( Q: I# z" C8 f$ N4 [$ a SPI为从模式配置步骤:( l% ]' t& T' K3 _- D 1.设置DFF位以定义数据帧格式为8位或16位。 2.选择CPOL和CPHA位来定义数据传输和串行时钟之间的相位关系。 3.帧格式(SPI_CR1寄存器中的LSBFIRST位定义的”MSB在前”还是”LSB在前”)必须与主设备相同。, q/ u2 f& F0 O: d+ P4 G; W 4.NSS硬件模式下(参考从选择(NSS)脚管理部分),在完整的数据帧(8位或16位)传输过程中,NSS引脚必须为低电平。 5.NSS软件模式下,设置SPI_CR1寄存器中的SSM位并清除SSI位。( Z1 y- S* K2 j( S% \2 n& r# Q* v 6.清除MSTR位(设置为从模式)、设置SPE位(SPI使能),使相应引脚工作于SPI模式下。' G. J" V& g* Y7 }/ w ————————————————! M/ p4 Y' l6 `; ] 转载:Willliam_william2 }9 Z2 w. ^' g4 [ - u9 N# }. h* f. b2 g* f |
基于stm32平台上的IC-MU磁绝对值编码器SPI通讯和码盘数据处理
SPI 32位宽DMA方式收发失败问题
SPI 高温读错最后一位?STM32F42xx 官方根治方案
经验分享 | LAT1470 SPI传输长度超过1024时出现异常的问题分析
经验分享 | 使用EXIT0同步触发SPI的DMA发送话题
经验分享 | STM32H723 SPI 通讯异常排查:实时观察窗口的 “隐形干扰” 解决方案
【STM32C0评测】4、驱动Lorasx126x,实现透传
经验分享 | STM32 SPI半工单线通信示例
经验分享 | 多个SPI的DMA传输为何仅1个有效?
经验分享 | STM32C0 HAL 库的 SPI 驱动导致的 Hardfault 问题分析
微信公众号
手机版