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

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

[复制链接]
STMCU小助手 发布时间:2022-5-8 18:00
前言! t4 R3 b( `  O! N9 W5 }! a
SPI 是Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口。是 Motorola$ d8 J9 w; y1 q$ L0 \9 r3 s4 L
首先在其 MC68HCXX 系列处理器上定义的。SPI 接口主要应用在 EEPROM,FLASH,实时时& v$ i6 O8 @7 A$ W9 Z" a
钟,AD 转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,6 r' [4 I% [7 }  k
同步的通信总线。
" W2 E7 A& x# r& I9 c本文参考正点原子SPI实验,使用STM32自带SPI来实现对外部FLASH(W25Q64)的读写。
6 r+ K/ T3 Z$ j+ @% n: J0 H2 A* D7 B
SPI 接口一般使用 4 条线通信:
& ^0 y: B( C7 t" j! |+ }/ O7 uMISO 主设备数据输入,从设备数据输出。: a" ~# ?- y, z: g& Z& x/ ^
MOSI 主设备数据输出,从设备数据输入。3 F- X2 v- ~  J
SCLK 时钟信号,由主设备产生。
  M9 P( h8 f) R! }, }/ `! T- |% BCS 从设备片选信号,由主设备控制。! N1 V$ Y' X6 I5 x0 C. u; J
7 V4 E8 ?6 _, r2 v4 u' i
DTK3I5@5.M9ELDEAW~WFA.png : N8 U6 e- ~& d
]2B$~LHRVY8WU{~_OZ)9EXR.png ) l9 u. h) \) }
2 ^9 u7 W" r3 k: q' ^6 E- G
SPI 时钟最多可以到 18Mhz,支持 DMA,可以配置为 SPI 协议或者 I2S 协议(仅大容量型号支持)。; ?$ v) K7 @( Q" ?4 h

$ W) M5 }- X7 z- c8 S- ]特点4 _3 d# w2 b# W# [4 ]8 `, i$ ~- @' w
可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。
' P) S4 Z$ j; X; P
! r4 I7 u7 c4 A. M配置步骤
9 l8 H% }6 f% o
SPI 相关的库函数和定义分布在文件 stm32f10x_spi.c 以及头文件 stm32f10x_spi.h 中& H9 A$ X! r! M: b
8 s0 t+ _. @8 @7 C
1)配置相关引脚的复用功能,使能 SPI1 时钟! w" l) D0 T9 i/ B

& u8 N- ?4 f5 N4 G第一步使能SPI1时钟,SPI1 的时钟通过 APB2ENR 的第 12 位来设置。设置 SPI1 的相关引脚为复用输出,这样才会连接到 SPI1 上否则这些 IO 口还是默认的状态,也就是标准输入输出口。
" L+ p9 C" w' F# O3 u1 ?  U1 m
4 `+ ?$ a4 Q+ `' D& h  @2 e6 N2)初始化 SPI1,设置 SPI1 工作模式
# P- i' `/ v' y" ^# I7 v( k2 ]! O5 [/ e" ]* [
设置 SPI1 为主机模式,设置数据格式为 8 位,然设置 SCK 时钟极性及采样方式。并设置 SPI1 的时钟频率(最大 18Mhz),以及数据的格式(MSB 在前还是LSB 在前)。9 B7 X, h' u5 }
0 z# g8 R+ b- D% R3 t3 N9 M: p( `, }
void SPI_Init(SPI_TypeDef* SPIx, SPI_InitTypeDef* SPI_InitStruct);
; r6 t( r/ K! l2 C8 y: f) w* v; K" l% _
3)使能 SPI1! u& m4 f- }1 A! p: B5 O% z# ~
1 n% s! m8 x3 o; o
SPI_Cmd(SPI1, ENABLE); //使能 SPI 外设: z. B# I' y1 A; x% `

+ L. ^) d. F4 s0 R, t) C4)SPI 传输数据/ G+ j% d4 T! F) \" W( e

& v- w+ [& ~5 I5 f9 L. c  A/ cvoid SPI_I2S_SendData(SPI_TypeDef* SPIx, uint16_t Data);0 P' ~/ D/ @7 u2 {' b' M

. N% B) L8 t5 M; S2 M5)查看 SPI 传输状态
+ o8 r) {& ?5 v0 ~, s. I7 `% s
5 d/ w' w6 Q# c! y# ~* |# K* mSPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE);
$ ?+ A) p; a' A  p/ Z" Y+ ?6 m! N2 [$ ]0 L4 E
SPI特征! F/ T) K+ q! n6 A* B
● 3线全双工同步传输/ h9 U' y* p6 {; _3 B
● 带或不带第三根双向数据线的双线单工同步传输
  Z- k# y( G1 q3 l8 ~* G5 Y6 d● 8或16位传输帧格式选择
: j1 g, F5 T5 Y% ]" Y# u● 主或从操作/ ^8 |2 L+ u% u/ ~! C& P- u
● 支持多主模式! o9 s$ W" Z) f" X1 N4 G4 S# I
● 8个主模式波特率预分频系数(最大为fPCLK/2): O% ]3 R, }% d9 g; Z
● 从模式频率 (最大为fPCLK/2): Y$ a- p+ a) K
● 主模式和从模式的快速通信) I! r" _% O8 l. j. t+ o
● 主模式和从模式下均可以由软件或硬件进行NSS管理:主/从操作模式的动态改变9 F2 h4 u) A3 `. e
● 可编程的时钟极性和相位
4 J! W" m. A* b- S9 l" M● 可编程的数据顺序,MSB在前或LSB在前7 o2 q3 I7 v+ L: ~. m
● 可触发中断的专用发送和接收标志' R& ]) f( i( o1 h/ X
● SPI总线忙状态标志
9 o6 D. b. {( A* @4 o' A- k● 支持可靠通信的硬件CRC% Z4 W& S# q9 S/ L5 F
─ 在发送模式下,CRC值可以被作为最后一个字节发送SPI接口
( N( n- f  t* m% c, n- N─ 在全双工模式中对接收到的最后一个字节自动进行CRC校验
4 W" {; y8 o0 \8 P6 q  @● 可触发中断的主模式故障、过载以及CRC错误标志) H; `$ r* m8 I- W% v" }
● 支持DMA功能的1字节发送和接收缓冲器:产生发送和接受请求
. k' A' X% |  }; \
8 p0 j0 j3 o( a- `/ BI2S功能
8 N( [$ o# \& e+ r: W7 p2 i" w
● 单工通信(仅发送或接收)- \" q. \* d9 y* s5 q8 w. M
● 主或者从操作
8 v* D; i4 ~+ e- u● 8位线性可编程预分频器,获得精确的音频采样频率(8KHz到96kHz)! T$ z" V: U2 F; g4 r, O) }: H
● 数据格式可以是16位,24位或者32位
. f' `: B+ x2 q# H5 T6 g, p● 音频信道固定数据包帧为16位(16位数据帧)或32位(16、24或32位数据帧)
6 C  ^8 {- `) _/ o5 I' Q● 可编程的时钟极性(稳定态)
. ]2 J' t" d1 k2 n4 I● 从发送模式下的下溢标志位和主/从接收模式下的溢出标志位
  Q' I+ i9 X: h# o5 `● 16位数据寄存器用来发送和接收,在通道两端各有一个寄存器
5 D7 J1 z0 T: T7 E  {● 支持的I2S协议:
" i" }+ p$ e3 h1 O─ I2S飞利浦标准
9 B8 h( B0 g2 }$ f9 \6 q9 {─ MSB对齐标准(左对齐)
. B2 l3 e; O  Q4 d─ LSB对齐标准(右对齐)( U& U- @3 V" G6 }/ P! }
─ PCM标准(16位通道帧上带长或短帧同步或者16位数据帧扩展为32位通道帧)
5 ^& a( W6 ]/ X● 数据方向总是MSB在先
2 z) m" j3 w: s● 发送和接收都具有DMA能力
* Z+ `! k6 U2 L$ H9 r● 主时钟可以输出到外部音频设备,比率固定为256xFs(Fs为音频采样频率)' d- f# x( |$ x# S% }
● 在互联型产品中,两个I2S模块(I2S2和I2S3)有一个专用的PLL(PLL3),产生更加精准得时钟) P$ \5 N9 R) _9 I

: C! ~% U: x- I  J' c1 o$ j' Y Q@XE)S(UW(6Z}3T(}Y([OGP.png
4 s- f0 j% V9 Q3 Z8 _; o- W
, j) o/ O/ C" y0 f5 E* o# f% c& D
赞 收藏 评论0 发布时间:2022-5-8 18:00

举报

0个回答

所属标签

相似技术帖

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