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

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

[复制链接]
STMCU小助手 发布时间:2022-5-8 18:00
前言
3 C- J- D' S3 m/ o5 r" \8 ESPI 是Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口。是 Motorola
5 J6 M- K. a1 }5 D8 o. A; M( m首先在其 MC68HCXX 系列处理器上定义的。SPI 接口主要应用在 EEPROM,FLASH,实时时( _4 Q6 P1 ?5 x& I0 L: e7 G! Y
钟,AD 转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,
5 y2 Z7 h  C7 _: L同步的通信总线。( A7 ^' E) M) O+ j0 K  Y3 t8 b
本文参考正点原子SPI实验,使用STM32自带SPI来实现对外部FLASH(W25Q64)的读写。
8 y0 e9 t! H- c) }& L8 B7 X
; [& B) e9 B6 g0 I& O' e5 eSPI 接口一般使用 4 条线通信:
$ J5 }6 @' ^% u$ ~MISO 主设备数据输入,从设备数据输出。
: N7 T) k7 ~. XMOSI 主设备数据输出,从设备数据输入。
4 O, A4 e# s8 Q3 P' SSCLK 时钟信号,由主设备产生。
; n9 O7 }$ |' L1 eCS 从设备片选信号,由主设备控制。
' i% _" t8 @8 O& X3 B- R) k; Y( Z0 F; w9 O
DTK3I5@5.M9ELDEAW~WFA.png
+ U% i8 N! Q5 }/ H: Q4 } ]2B$~LHRVY8WU{~_OZ)9EXR.png & B4 k; M0 i) ~3 t+ c
1 ]5 S+ J7 r1 s3 `: Y7 I
SPI 时钟最多可以到 18Mhz,支持 DMA,可以配置为 SPI 协议或者 I2S 协议(仅大容量型号支持)。
5 {: u+ H$ b8 v1 H
) j, ]2 S2 p( c. b特点9 a0 ~4 j: a: I, Y* r) G. o; d
可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。7 s2 _. `3 C+ j* b& o8 E+ f
, W) N; |( j( `4 R3 n. w
配置步骤

* }' e1 h. k' N, |4 xSPI 相关的库函数和定义分布在文件 stm32f10x_spi.c 以及头文件 stm32f10x_spi.h 中
6 i" Z; P( H: F9 K8 x! p' P" `- v  c4 d; b" Q9 v2 T
1)配置相关引脚的复用功能,使能 SPI1 时钟! |$ j9 L" C2 _% H
6 d) {- m+ Y( e3 [; ?  C0 H
第一步使能SPI1时钟,SPI1 的时钟通过 APB2ENR 的第 12 位来设置。设置 SPI1 的相关引脚为复用输出,这样才会连接到 SPI1 上否则这些 IO 口还是默认的状态,也就是标准输入输出口。! S! t1 b+ M" C, `9 V! k

0 ?0 Z3 Q% w6 [& N: s2)初始化 SPI1,设置 SPI1 工作模式# {7 P0 O% Y0 [

" l" ~9 s# E' y( h* g' f) B设置 SPI1 为主机模式,设置数据格式为 8 位,然设置 SCK 时钟极性及采样方式。并设置 SPI1 的时钟频率(最大 18Mhz),以及数据的格式(MSB 在前还是LSB 在前)。, H  F/ P" S' t* I: E
! l3 W* S% H0 ]* k+ {5 J" a4 W
void SPI_Init(SPI_TypeDef* SPIx, SPI_InitTypeDef* SPI_InitStruct);* w6 n7 \" h& R( h, g

+ i% G+ S" {) p! p# \5 u5 p. Z; f) v3)使能 SPI1& M: C2 ]2 B- x1 J2 G  t/ Z) K
5 T5 j% b1 B1 S; K" D7 v( v, g
SPI_Cmd(SPI1, ENABLE); //使能 SPI 外设. ^$ c- q6 ]5 V2 [" C' d  U

% w) w) G( n% ~  w4)SPI 传输数据
: {: ]6 M- g1 ^5 A/ e/ M6 f. f6 {4 Y3 E! L: Z0 k
void SPI_I2S_SendData(SPI_TypeDef* SPIx, uint16_t Data);
" P6 p8 @* G4 j6 p4 l6 F) G8 u
1 Q) c; y1 F  q# E5 m+ T6 I5)查看 SPI 传输状态
/ \& `, Z4 F: ~1 Q& x9 a8 z) p- n1 V" x0 Y
SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE);- D3 N7 u) N6 y! z5 W$ |8 A3 \/ c
. c7 t% P% m0 S
SPI特征
. i7 C5 u( x2 D; D# c● 3线全双工同步传输( w1 |1 X3 p! S% n
● 带或不带第三根双向数据线的双线单工同步传输. [6 F+ p  u8 ^0 V% e7 J" h
● 8或16位传输帧格式选择
& K2 U: e9 P+ d+ g+ A6 t9 S0 a" ^● 主或从操作
: V5 y( V) x! F( V" B● 支持多主模式2 i/ U/ }6 h/ u) K- E$ D5 r
● 8个主模式波特率预分频系数(最大为fPCLK/2)+ W5 ?* m, @$ V' F, a
● 从模式频率 (最大为fPCLK/2)
  p/ ~# x8 S* O0 q● 主模式和从模式的快速通信4 d4 U7 W; l* N4 N2 m! l9 o
● 主模式和从模式下均可以由软件或硬件进行NSS管理:主/从操作模式的动态改变
6 n( h% E( r) j+ o: s- c% g● 可编程的时钟极性和相位
$ z' G- y) n7 Z. h7 G● 可编程的数据顺序,MSB在前或LSB在前
4 O% k% \- h9 T9 e9 K● 可触发中断的专用发送和接收标志, r+ ^) |8 w4 ^8 ~0 f  I1 _
● SPI总线忙状态标志
) x& Y3 y% q! m$ c: b● 支持可靠通信的硬件CRC- W; J  @5 s0 H
─ 在发送模式下,CRC值可以被作为最后一个字节发送SPI接口! m: U5 b( x, S9 Y* g& _& d: o+ X- e
─ 在全双工模式中对接收到的最后一个字节自动进行CRC校验' s) e) G; w4 G6 x9 m& z/ D( d, N; m
● 可触发中断的主模式故障、过载以及CRC错误标志% c# V, `" V, ]
● 支持DMA功能的1字节发送和接收缓冲器:产生发送和接受请求3 b" v5 i% t. T6 x: t
( s+ b1 {% D: ^1 Y& I# R
I2S功能

7 a& C/ e. T# x7 F% `7 o* d) }6 E- Q● 单工通信(仅发送或接收)
2 k1 a7 T# T6 J0 e* ~7 m! I● 主或者从操作
7 F  J5 e2 Q* b: K0 Q- W9 T● 8位线性可编程预分频器,获得精确的音频采样频率(8KHz到96kHz)
3 Q' x7 @$ b9 N- h1 t● 数据格式可以是16位,24位或者32位( k2 T0 O3 L1 r
● 音频信道固定数据包帧为16位(16位数据帧)或32位(16、24或32位数据帧)
' l! e" E; k& p9 e# s: M● 可编程的时钟极性(稳定态)
  D# a5 Q8 R2 y6 E- y  y● 从发送模式下的下溢标志位和主/从接收模式下的溢出标志位
$ S! m; K2 [) n7 Q' L$ w7 C+ W( J● 16位数据寄存器用来发送和接收,在通道两端各有一个寄存器6 t: }  E& Q' e  F5 }  t
● 支持的I2S协议:; L0 H% J0 Y) p$ Z- s- o
─ I2S飞利浦标准. @$ ^1 v, B0 j5 }4 v
─ MSB对齐标准(左对齐)) I1 r  u4 ]" |0 w; e
─ LSB对齐标准(右对齐)
9 h( s( J. t7 N( U) ?) H7 t─ PCM标准(16位通道帧上带长或短帧同步或者16位数据帧扩展为32位通道帧)% w9 O/ c' M6 S8 V5 I  O
● 数据方向总是MSB在先9 a: D% [& g/ ^
● 发送和接收都具有DMA能力
( @& E' c" Y+ b! N( d) @● 主时钟可以输出到外部音频设备,比率固定为256xFs(Fs为音频采样频率)5 I1 C2 m( D. _: d$ ^* X5 w
● 在互联型产品中,两个I2S模块(I2S2和I2S3)有一个专用的PLL(PLL3),产生更加精准得时钟4 ?) a5 m/ M7 x

3 Q" V4 o( z1 o; \- k1 c Q@XE)S(UW(6Z}3T(}Y([OGP.png , {- e$ P4 c; Y$ H$ h% T" F

$ M+ l" H2 ~& j2 q; T  {% }2 M2 q; t, l5 e
赞 收藏 评论0 发布时间:2022-5-8 18:00

举报

0个回答

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版