请选择 进入手机版 | 继续访问电脑版

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

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

[复制链接]
攻城狮Melo 发布时间:2023-12-11 14:45

% L/ u8 e: D+ U2 P* b4 ~; A2 G& y
微信图片_20231211144442.png
3 I0 p8 s9 B& e0 _3 R
- l- g$ P% y6 B9 _8 [( H) a
有人使用STM32F4芯片验证SPI功能。当使用片内两个SPI模块基于中断方式进行收发时,发现总是出现接收数据丢失的情况,貌似总丢失末尾2个数据。代码使用HAL库提供的API函数。这是怎么回事呢?
: N* A2 B1 k- h1 T/ G3 A6 R* X# U
6 ?( n( a- B& x5 R% x( O+ r' x
我拿STM32F407开发板进行验证测试。使用SPI1做发送,SPI3做接收,都使用中断方式。
+ [. M/ F) R# J5 v. _

7 l, j) Z/ D, F/ e 微信图片_20231211144439.png
* P! N' s7 y. M; ~+ ?/ {; ^3 U1 \; n6 d$ N% a, U% t
很快重现了问题现象,即发生接收数据丢失的情形。见下图验证结果,发了8个数据,只收到6个数据。
/ D! D8 Y; y; s" h% t, D: \2 \, J" {3 t
微信图片_20231211144435.png
) ]5 C; s4 W8 {' A; m
, w8 ?1 L) @  F# C2 r, e
现在是同一颗芯片,即同一CPU基于中断方式完成收发。怀疑会不会是不同SPI收发模块中断优先级的安排不合理导致的问题。如果二者优先级一样的话,这里的发送中断往往先于接收中断的产生,势必会出现接收不及时的情形。通过对代码跟踪调试,也的确发现了SPI接收溢出的现象,即接收数据提取不及时。
/ E0 d2 Z5 P3 H% \+ ?( M" l/ m% H
& a  x; ]+ |2 z
微信图片_20231211144432.png
4 F* o+ C1 P* ^) x- x7 t! a3 Y6 ~4 c( }7 d% v8 x" s4 o
这样分析下来,感觉数据丢失应该跟通信速率有关,丢失数据的多少不应该固定。于是,我大幅度提升SPI通信速率再行测试,果真丢失的数据更多了。见下图测试结果,发8个数据只收到1个数据。【前面测试时SPI波特率是5.25Mb/s,现在改为21Mb/s了】
6 i) G  C! j& Q& k: R; I) r- R0 i$ k
6 B, q2 h1 O( S! r* Q% A
微信图片_20231211144429.png " ]# Z6 w/ d6 G, Q  x2 o
+ b. B; z7 r9 `
我将SPI3接收中断的优先级调得比SPI1发送中断的还高,如下图所示。
! [- u' ~0 _* o# M) u& m. }
, E" J  e  s1 C& h' n6 Y$ `
微信图片_20231211144425.png $ T  Z1 K9 i, E" W+ d0 W2 e

0 s4 o/ @/ m  A* Z基于重新调整中断优先级后的代码再做测试,结果就完全正常了。6 `; b' V% g7 L& D6 @

9 T9 ~8 F& |% K5 i) j; q 微信图片_20231211144419.png
. q5 ^% p- k' v3 {  K8 O, p

+ T  ^, x/ N3 k8 H当然,我们还可以有其它灵活处理的办法。比方发送用中断,接收用DMA,或者发送用轮训,接收用中断或DMA,或者都用DMA方式也行。
' ]8 B! u2 U7 L4 i8 z2 M7 v- \- R
/ s8 k, z2 t0 `# [这里的核心问题是中断优先级没有合理安排好。STM32 ARM核中断的内容不多,不过内容不多的东西往往意味着使用上更为灵活。好,今天的话题就分享到这里。
: R3 J' p) V: v6 i

6 @/ H& b) Y! d! I转载自: 茶话MCU) ^) A2 y1 e% i- G$ b1 y
如有侵权请联系删除
7 V2 Z3 @4 |* d: s8 c- f5 }
% @+ z& E4 ?/ B0 V- _; q

- u" b1 g: I9 Y0 ]! h, h% |  Y& k/ E0 M
收藏 评论0 发布时间:2023-12-11 14:45

举报

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