你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32 SPI相关总结

[复制链接]
STMCU小助手 发布时间:2022-5-8 18:00
前言
8 A3 Y9 j# q# C! x8 vSPI 是Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口。是 Motorola
) d4 f2 k6 |. X9 |+ A( F首先在其 MC68HCXX 系列处理器上定义的。SPI 接口主要应用在 EEPROM,FLASH,实时时! A: v: U, J! f' f) w  k. b
钟,AD 转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,
; R! B3 |& d: w- v' E9 S同步的通信总线。
4 n* N. m6 N$ \) n4 P本文参考正点原子SPI实验,使用STM32自带SPI来实现对外部FLASH(W25Q64)的读写。
. O6 x) h; A6 X2 ]8 k( B( _# {  ?  A. r0 c
SPI 接口一般使用 4 条线通信:' |  r) z* }$ J/ A% U
MISO 主设备数据输入,从设备数据输出。
5 H6 E' E& h9 p8 c1 T7 wMOSI 主设备数据输出,从设备数据输入。
. z& E0 i9 H/ g; `6 M& e/ _SCLK 时钟信号,由主设备产生。* R3 Q0 M: b- O0 u" z
CS 从设备片选信号,由主设备控制。0 s, y1 W) A2 y$ ^& q' H
, |" s5 L  [' C# H, ~2 g
DTK3I5@5.M9ELDEAW~WFA.png
$ {; u7 m# R: R7 @- P! } ]2B$~LHRVY8WU{~_OZ)9EXR.png
7 y  p) x$ u3 n" ]7 [' P; r
) T( `4 {/ N( r2 LSPI 时钟最多可以到 18Mhz,支持 DMA,可以配置为 SPI 协议或者 I2S 协议(仅大容量型号支持)。
, u+ h. R- [5 X7 X& J2 S7 E7 T& _- i) F) W9 T/ i8 ]
特点
( t( N! b$ w. f, y6 u7 r$ Q可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。2 N+ q) F' N8 q, g6 f7 j  ^% u

! b& B/ q- A& b$ F配置步骤
1 q; U. B7 v: b+ E" r" t
SPI 相关的库函数和定义分布在文件 stm32f10x_spi.c 以及头文件 stm32f10x_spi.h 中
8 H2 Z1 C3 H+ T7 W
6 }  ]+ W4 i# A. @& H* M; l2 s* W1)配置相关引脚的复用功能,使能 SPI1 时钟
  i8 X7 M1 U" d) b- A2 A. R/ o4 J- e, g& t% u" N5 X
第一步使能SPI1时钟,SPI1 的时钟通过 APB2ENR 的第 12 位来设置。设置 SPI1 的相关引脚为复用输出,这样才会连接到 SPI1 上否则这些 IO 口还是默认的状态,也就是标准输入输出口。2 b+ ]9 c6 o" ?: ^2 |$ v% Z

: J0 M8 Y! d: z  |0 ]+ v/ X: Q2)初始化 SPI1,设置 SPI1 工作模式" W1 Z. t$ j  ?

- |! r8 u* X4 k' O设置 SPI1 为主机模式,设置数据格式为 8 位,然设置 SCK 时钟极性及采样方式。并设置 SPI1 的时钟频率(最大 18Mhz),以及数据的格式(MSB 在前还是LSB 在前)。- W! {6 t! i4 K4 |" b$ S! K, C
* H5 i1 N7 r) |: ?" J! D+ a' E: G
void SPI_Init(SPI_TypeDef* SPIx, SPI_InitTypeDef* SPI_InitStruct);+ d- y8 Y5 D' e) ^) C

3 ?+ J  Y5 y. _4 b% W3)使能 SPI1' W3 u" I; g7 x* ~% o
6 g. U: Y2 M) ^" K: ^/ a" l2 {
SPI_Cmd(SPI1, ENABLE); //使能 SPI 外设. e  k% }. V( ?) g4 z% K
  j7 m& h2 X! E* G1 b- F
4)SPI 传输数据- [, w, v- T! B* N0 S, E7 Y1 e

) x8 _9 p7 s; N8 Vvoid SPI_I2S_SendData(SPI_TypeDef* SPIx, uint16_t Data);( w9 U3 U% W$ F4 Z, ~4 j- G

7 l; R* X3 V. [/ d5 ^5)查看 SPI 传输状态; S+ X9 A0 D; s7 m
7 F/ o3 s" {5 O" o  @$ E
SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE);' j1 l- H  o* \

+ ?' Q0 T2 G  E+ p7 oSPI特征
$ i  |- d% N3 a9 s8 O● 3线全双工同步传输/ D2 G& \3 E9 w; P( n! D! e
● 带或不带第三根双向数据线的双线单工同步传输6 W  y( F/ r' Y; p  i8 c+ |; h. y% I: C
● 8或16位传输帧格式选择# a  {' [0 `$ M  Q3 d
● 主或从操作) Q$ Q, l0 H% o, D
● 支持多主模式
  l" x' h" E4 U; Z* i● 8个主模式波特率预分频系数(最大为fPCLK/2), {0 U% i0 M9 `4 Q) l$ j. d2 P" L7 z
● 从模式频率 (最大为fPCLK/2)
( H* |7 M1 d9 e! f5 P● 主模式和从模式的快速通信
4 ~. N5 d1 m7 s# o$ g● 主模式和从模式下均可以由软件或硬件进行NSS管理:主/从操作模式的动态改变6 x$ L3 S4 x0 l
● 可编程的时钟极性和相位- o. ~( X- @$ _8 t3 `% [
● 可编程的数据顺序,MSB在前或LSB在前- n1 k* n6 i% ]2 x; b; j
● 可触发中断的专用发送和接收标志
% s& f+ ]. {; F- ^3 ?● SPI总线忙状态标志
5 }: {# _* `8 T  [& O7 [( F6 q● 支持可靠通信的硬件CRC
" f4 {/ y9 @# V) _─ 在发送模式下,CRC值可以被作为最后一个字节发送SPI接口6 e2 V- t+ n9 I
─ 在全双工模式中对接收到的最后一个字节自动进行CRC校验
; M9 w& y0 a7 o$ R4 P● 可触发中断的主模式故障、过载以及CRC错误标志
# j% K1 ?9 u7 [# G4 R! Y6 f● 支持DMA功能的1字节发送和接收缓冲器:产生发送和接受请求# B9 r( M. l7 i( t. ?. _6 m

$ x9 ^6 H* N. e" j: wI2S功能
1 u& d% V5 v! W7 I; y
● 单工通信(仅发送或接收)3 ^- {# |1 o' m4 M* I% |) Z0 R# r
● 主或者从操作: E7 ?' `0 t- r, U- Q" e  _
● 8位线性可编程预分频器,获得精确的音频采样频率(8KHz到96kHz)- R& G( `. R8 `* r1 _, W
● 数据格式可以是16位,24位或者32位
8 d* I0 }( a4 [. _! w# Y3 n● 音频信道固定数据包帧为16位(16位数据帧)或32位(16、24或32位数据帧)% I( E. P+ t- G% u1 ?3 ?
● 可编程的时钟极性(稳定态)1 Q# |* L! `6 V! [: }
● 从发送模式下的下溢标志位和主/从接收模式下的溢出标志位
# G$ J- z5 R" g" {● 16位数据寄存器用来发送和接收,在通道两端各有一个寄存器4 s0 e/ n( l8 W
● 支持的I2S协议:% L% R& m5 _" F) L! ?
─ I2S飞利浦标准
0 [2 C" K% ^5 e$ ~( W- H─ MSB对齐标准(左对齐)
/ }2 k8 Q  m8 |/ e! y5 d─ LSB对齐标准(右对齐)
" [7 `# S. \1 j. L─ PCM标准(16位通道帧上带长或短帧同步或者16位数据帧扩展为32位通道帧)
" w4 U0 n+ j1 H1 z● 数据方向总是MSB在先
1 U5 u, ~: K: d. ^4 H. u/ O! n● 发送和接收都具有DMA能力1 r. @+ _5 z* d  H/ h/ Z7 b
● 主时钟可以输出到外部音频设备,比率固定为256xFs(Fs为音频采样频率)
+ b: E4 X8 t, z4 _# B● 在互联型产品中,两个I2S模块(I2S2和I2S3)有一个专用的PLL(PLL3),产生更加精准得时钟& @. ]- }; b8 e9 z, |

5 p8 ?7 r/ I, h- E Q@XE)S(UW(6Z}3T(}Y([OGP.png , J7 w+ ?, x& H; l2 I% X3 d2 u0 b
8 R; v6 h3 a3 D/ T/ u# D

/ e2 H4 @  v8 r9 Z6 A7 X2 z
收藏 评论0 发布时间:2022-5-8 18:00

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版