STMCU小助手
发布时间:2022-3-27 17:00
|
01. SPI简介 SPI 接口提供两个主要功能,支持 SPI 协议或 I 2 S 音频协议。默认情况下,选择的是 SPI 功能。可通过软件将接口从 SPI 切换到 I2S。 1 f. X. D# C$ S5 h 串行外设接口 (SPI) 可与外部器件进行半双工/全双工的同步串行通信。该接口可配置为主模式,在这种情况下,它可为外部从器件提供通信时钟 (SCK)。该接口还能够在多主模式配置下工作。 它可用于多种用途,包括基于双线的单工同步传输,其中一条可作为双向数据线,或使用CRC 校验实现可靠通信。8 q9 X( C) N" ^4 Q9 ]; O& Q0 F & Q3 n$ L" @) T! C) T" L$ r I2S 也是同步串行通信接口。它可满足四种不同音频标准的要求,包括 I 2 S Philips 标准、MSB 和 LSB 对齐标准,以及 PCM 标准。它可在全双工模式(使用 4 引脚)或半双工模式(使用 3 个引脚)下作为从器件或主器件工作。当 I 2 S 配置为通信主模式时,该接口可以向 外部从器件提供主时钟。. B1 Q6 ^; J; E, t/ R 02. SPI特性; l: b. H/ H0 m) E- s7 a ● 基于三条线的全双工同步传输 ● 基于双线的单工同步传输,其中一条可作为双向数据线2 m3 Y/ c* |' h) w" w$ w ● 8 位或 16 位传输帧格式选择 ● 主模式或从模式操作 ● 多主模式功能 ● 8 个主模式波特率预分频器(最大值为 f PCLK /2) ● 从模式频率(最大值为 f PCLK /2) ● 对于主模式和从模式都可实现更快的通信 ● 对于主模式和从模式都可通过硬件或软件进行 NSS 管理:动态切换主/从操作 ● 可编程的时钟极性和相位 ● 可编程的数据顺序,最先移位 MSB 或 LSB0 G9 Z% l p4 } ● 可触发中断的专用发送和接收标志 ● SPI 总线忙状态标志$ ~1 l. [ v) M' D ● SPI TI 模式 ● 用于确保可靠通信的硬件 CRC 功能:( x: N C' Y7 A: N0 b5 [8 C" E — 在发送模式下可将 CRC 值作为最后一个字节发送 — 根据收到的最后一个字节自动进行 CRC 错误校验 ● 可触发中断的主模式故障、上溢和 CRC 错误标志1 N% S% o# Y4 P* C" T& j ● 具有 DMA 功能的 1 字节发送和接收缓冲器:发送和接收请求8 T+ S7 r/ {" N5 U" k% v ; O- O* x% M9 r1 d6 x0 E9 {9 a 03. SPI功能说明: Q8 K8 q; i3 z c) |
通常,SPI 通过 4 个引脚与外部器件连接:0 B( @8 j0 }. p; D3 s ● MISO:主输入/从输出数据。此引脚可用于在从模式下发送数据和在主模式下接收数据。0 O5 c$ N: E+ m) o9 L* l: B. p ● MOSI:主输出/从输入数据。此引脚可用于在主模式下发送数据和在从模式下接收数据。. F) B3 @' U) o0 I, M+ T8 k- u ● SCK:用于 SPI 主器件的串行时钟输出以及 SPI 从器件的串行时钟输入。0 W" s, e& i9 R! A. M ● NSS:从器件选择。这是用于选择从器件的可选引脚。此引脚用作“片选”,可让 SPI主器件与从器件进行单独通信,从而并避免数据线上的竞争。从器件的 NSS 输入可由主器件上的标准 IO 端口驱动。NSS 引脚在使能(SSOE 位)时还可用作输出,并可在SPI 处于主模式配置时驱动为低电平。通过这种方式,只要器件配置成 NSS 硬件管理模式,所有连接到该主器件 NSS 引脚的其它器件 NSS 引脚都将呈现低电平,并因此而作为从器件。当配置为主模式,且 NSS 配置为输入(MSTR=1 且 SSOE=0)时,如果NSS 拉至低电平,SPI 将进入主模式故障状态:MSTR 位自动清零,并且器件配置为从模式。 04. SPI中断$ ]: b0 k6 R( U# _
05. 相关寄存器 5.1 SPI 控制寄存器 1 (SPI_CR1) (不用于 I 2 S 模式)8 n0 l8 ]) z) r& ]0 R1 P5 O4 S SPI control register 1; ~9 C3 b: ^: R+ W/ l4 a 偏移地址:0x00 复位值:0x0000
5.2 SPI 控制寄存器 2 (SPI_CR2) SPI control register 27 m5 F9 G: w. W8 d 偏移地址:0x04+ L _; o/ V* \ l8 | 复位值:0x00007 ~/ c' d @8 z! p% ] , @ C( b: S q' B+ W2 q& g
( ?5 Z. L+ A# l9 ~ 5.3 SPI 状态寄存器 (SPI_SR)! ^) F! o2 p* g. D SPI status register9 U% N$ O F# |5 X* f. t; W 偏移地址:0x08 复位值:0x0002
; l% p9 W8 s% ~1 {/ D 5.4 SPI 数据寄存器 (SPI_DR) SPI data register 偏移地址:0x0C 复位值:0x00006 E1 s4 `* B7 d) h. x9 n 9 c' O& c/ }- w- W# E/ }: k
0 V6 \5 H4 m, r) l4 P) n: Y* y0 ~/ e 5.5 SPI_I 2 S 配置寄存器 (SPI_I2SCFGR)3 r. S R- n- i. _ SPI_I 2 S configuration register 偏移地址:0x1C7 Z/ a& P5 Y- D' i" [5 p8 R1 A 复位值:0x0000
* N+ `' U+ I7 E0 j 5.6 SPI_I 2 S 预分频器寄存器 (SPI_I2SPR) SPI_I 2 S prescaler register 偏移地址:0x20( J7 d! B! P, h 复位值:0000 0010 (0x0002) + b- ?0 o# b E ( _' a8 c* B) i1 F( T: m ' f6 O1 L# z& f |
STM32C542RC开发板启用SPI驱动TFT显示屏
基于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个有效?
微信公众号
手机版