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

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

[复制链接]
攻城狮Melo 发布时间:2023-12-11 14:45
7 @) y  a; N* I9 E3 h2 o
微信图片_20231211144442.png
- P! z/ O. r5 l2 l0 B; R4 t
% z' v" ?. o6 H" `5 P. ]+ z
有人使用STM32F4芯片验证SPI功能。当使用片内两个SPI模块基于中断方式进行收发时,发现总是出现接收数据丢失的情况,貌似总丢失末尾2个数据。代码使用HAL库提供的API函数。这是怎么回事呢?
0 h* m8 v0 _6 J2 S( G1 Z

# B% \3 P) r% E/ X$ E: X我拿STM32F407开发板进行验证测试。使用SPI1做发送,SPI3做接收,都使用中断方式。6 v! Q* S8 h: J- k8 J& }: s% j; H( C4 y: |

% o( G& D1 W! m" @+ b( Z 微信图片_20231211144439.png
5 [+ m. D$ N/ E$ `- a; x- U( v6 A$ b
很快重现了问题现象,即发生接收数据丢失的情形。见下图验证结果,发了8个数据,只收到6个数据。
9 Y5 F: q& }2 K/ @. `
" U, P" H5 s* f" @6 y 微信图片_20231211144435.png - P5 s4 p( ]/ _3 ~! V3 b4 g

* Y- s9 z6 d/ S! ^& y) e现在是同一颗芯片,即同一CPU基于中断方式完成收发。怀疑会不会是不同SPI收发模块中断优先级的安排不合理导致的问题。如果二者优先级一样的话,这里的发送中断往往先于接收中断的产生,势必会出现接收不及时的情形。通过对代码跟踪调试,也的确发现了SPI接收溢出的现象,即接收数据提取不及时。3 p( L. N( `% U$ j4 E& [

7 T* i  C+ ~9 ^$ Q! p9 @  B4 a: M 微信图片_20231211144432.png 8 B4 g- W0 D0 I  y6 l7 [
/ u7 p" u6 v+ f( f, [$ L8 H* x
这样分析下来,感觉数据丢失应该跟通信速率有关,丢失数据的多少不应该固定。于是,我大幅度提升SPI通信速率再行测试,果真丢失的数据更多了。见下图测试结果,发8个数据只收到1个数据。【前面测试时SPI波特率是5.25Mb/s,现在改为21Mb/s了】
# Y( m2 L) N9 k7 t

4 H; z' K$ N6 F- g& h 微信图片_20231211144429.png 7 M5 C% J: ?- z3 x' V! B0 O% f( n7 g3 r
/ j9 D, T% S2 D; [6 E0 ~, W; @
我将SPI3接收中断的优先级调得比SPI1发送中断的还高,如下图所示。# Z9 V. ]% n: T1 J" R6 f

# E+ l$ b9 Z) O8 A 微信图片_20231211144425.png : ^0 ^# s" _; l8 c- K$ X
% {) b" }- c/ T4 o" F
基于重新调整中断优先级后的代码再做测试,结果就完全正常了。: g0 H9 @+ H) r3 h2 @

( g& R& D  A" s" {* N7 e 微信图片_20231211144419.png - O4 C- a6 U; N6 R- k7 x

8 v  u0 a$ O, O1 ?当然,我们还可以有其它灵活处理的办法。比方发送用中断,接收用DMA,或者发送用轮训,接收用中断或DMA,或者都用DMA方式也行。- Y7 L* R. c3 Q7 d2 ~: ?
6 h% ]( d6 h4 c
这里的核心问题是中断优先级没有合理安排好。STM32 ARM核中断的内容不多,不过内容不多的东西往往意味着使用上更为灵活。好,今天的话题就分享到这里。- n& v% o: V2 L! o1 H
5 L; O) ^: ^' Q2 x6 z- C8 I/ y
转载自: 茶话MCU4 F+ K' X2 e& y; a3 N2 _  R8 }
如有侵权请联系删除* d+ l  _( a$ m( g1 w' ^2 o

# O3 B$ \$ j) j: d8 Z  T' U
5 E& u3 G) {5 G" D( b1 p

4 k4 J' A' t% C
收藏 评论0 发布时间:2023-12-11 14:45

举报

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