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

基于STM32的SPI传输时会丢失数据吗?

[复制链接]
攻城狮Melo 发布时间:2023-12-11 14:45
1 v' d. j: G$ \+ U( D
微信图片_20231211144442.png
6 ?* y( c% @! I! C3 |( h
( i& W4 Q% l! I) R, T  I
有人使用STM32F4芯片验证SPI功能。当使用片内两个SPI模块基于中断方式进行收发时,发现总是出现接收数据丢失的情况,貌似总丢失末尾2个数据。代码使用HAL库提供的API函数。这是怎么回事呢?6 T/ L5 U% t/ `# t

/ ?9 l3 `, Q) c; e; o2 {我拿STM32F407开发板进行验证测试。使用SPI1做发送,SPI3做接收,都使用中断方式。
% Q# ]6 P: B8 p: g( v- F# y

0 d* g7 r" O5 i  P7 V 微信图片_20231211144439.png 5 x) f" Y, B( {4 ]2 R, W

0 T! k( {( `5 w" q! n8 f很快重现了问题现象,即发生接收数据丢失的情形。见下图验证结果,发了8个数据,只收到6个数据。
! W3 s9 |' C1 E' @
5 A/ s) K& |& U5 Q+ o 微信图片_20231211144435.png ' Z0 U" B8 b; _6 P
$ a: z9 z' r# u
现在是同一颗芯片,即同一CPU基于中断方式完成收发。怀疑会不会是不同SPI收发模块中断优先级的安排不合理导致的问题。如果二者优先级一样的话,这里的发送中断往往先于接收中断的产生,势必会出现接收不及时的情形。通过对代码跟踪调试,也的确发现了SPI接收溢出的现象,即接收数据提取不及时。
: \5 L( t) u$ t  U

6 U% O- c/ ?; P4 x( H2 n: U8 j 微信图片_20231211144432.png * k: u8 [! ]0 S1 H& ]

# a  \( V: C9 [1 ]) l; d这样分析下来,感觉数据丢失应该跟通信速率有关,丢失数据的多少不应该固定。于是,我大幅度提升SPI通信速率再行测试,果真丢失的数据更多了。见下图测试结果,发8个数据只收到1个数据。【前面测试时SPI波特率是5.25Mb/s,现在改为21Mb/s了】6 r$ C1 Q* _. P
3 o( E- i, K: J7 L$ h/ D
微信图片_20231211144429.png
8 T: }' |+ N* @/ \% v

" \, ?0 o; y$ A- U: Y我将SPI3接收中断的优先级调得比SPI1发送中断的还高,如下图所示。4 N  w1 K6 x) Z3 y8 U
- l& ~; w3 }6 ~% P3 ?6 q" X  [
微信图片_20231211144425.png " Z! b! U2 Q3 N' K! J

4 J/ r* |1 H& d3 T基于重新调整中断优先级后的代码再做测试,结果就完全正常了。
5 c6 Q- \( b& G0 R
& z) L$ p" y+ S  X 微信图片_20231211144419.png ) t8 t2 _' e# J4 [4 @& |+ ?
, S$ }$ a4 M3 _* l
当然,我们还可以有其它灵活处理的办法。比方发送用中断,接收用DMA,或者发送用轮训,接收用中断或DMA,或者都用DMA方式也行。
% J, V- i  s' S% B+ J  W7 F# Z" ]9 U- H# L2 N  F7 ^9 h# r
这里的核心问题是中断优先级没有合理安排好。STM32 ARM核中断的内容不多,不过内容不多的东西往往意味着使用上更为灵活。好,今天的话题就分享到这里。
( C* ^  O5 E8 i% z1 h* s1 M, h; R

3 Z4 w( P; V; v+ ^3 Q: a6 T9 e, A转载自: 茶话MCU
$ J6 M2 Q2 [; \8 L! E) n如有侵权请联系删除6 P6 z6 |+ H7 m3 e/ d5 I  I9 `% k3 y' G* U
# O  e3 h( F9 x! D, x

; p, e9 C4 i$ @6 i8 c3 Y  ?, p) E- o; V/ c, x" {* {4 t8 O
收藏 评论0 发布时间:2023-12-11 14:45

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版