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

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

[复制链接]
攻城狮Melo 发布时间:2023-12-11 14:45
: D* b) [* B' A, P$ E) `4 ]
微信图片_20231211144442.png
2 {8 q6 B4 o6 x/ F8 R7 G' l

% z" Z7 O! C* A7 D有人使用STM32F4芯片验证SPI功能。当使用片内两个SPI模块基于中断方式进行收发时,发现总是出现接收数据丢失的情况,貌似总丢失末尾2个数据。代码使用HAL库提供的API函数。这是怎么回事呢?
8 r- Z  ^. q5 ]2 Y; V6 x9 q: [- S
+ K5 n8 W  V  J+ f1 ^0 @0 e+ Q) K
我拿STM32F407开发板进行验证测试。使用SPI1做发送,SPI3做接收,都使用中断方式。% P3 k/ P0 Q! y' B7 Q( X
" b; ^6 H; k, {7 m1 }$ f* M7 x
微信图片_20231211144439.png " ~$ z5 n+ d6 S; `0 x
- D" f" Z: z$ F' k
很快重现了问题现象,即发生接收数据丢失的情形。见下图验证结果,发了8个数据,只收到6个数据。
7 d" O3 a4 }6 B8 k% g5 Z6 s' ]! F! A9 ]
微信图片_20231211144435.png
( i# f8 m% F: z/ k9 W# k

- e# p$ H" a8 F; V9 C现在是同一颗芯片,即同一CPU基于中断方式完成收发。怀疑会不会是不同SPI收发模块中断优先级的安排不合理导致的问题。如果二者优先级一样的话,这里的发送中断往往先于接收中断的产生,势必会出现接收不及时的情形。通过对代码跟踪调试,也的确发现了SPI接收溢出的现象,即接收数据提取不及时。
- Y: `5 J! v# W# ^! N- p

3 w1 \- ~/ i% h* U5 h 微信图片_20231211144432.png 5 ?" |; ~7 w  u3 D( b: g/ c0 z
* ?  M2 e9 B) h
这样分析下来,感觉数据丢失应该跟通信速率有关,丢失数据的多少不应该固定。于是,我大幅度提升SPI通信速率再行测试,果真丢失的数据更多了。见下图测试结果,发8个数据只收到1个数据。【前面测试时SPI波特率是5.25Mb/s,现在改为21Mb/s了】1 i  d! J- `/ G0 Y: g/ [
' j7 t- c* V# _2 c8 k/ u! m
微信图片_20231211144429.png
% L( [5 _4 D( S1 i2 i! b
$ [3 f5 F" Q* l6 Y: n; V
我将SPI3接收中断的优先级调得比SPI1发送中断的还高,如下图所示。) s2 V7 g2 r' c
: l7 I3 z% J8 v( m
微信图片_20231211144425.png
% T8 _. D3 p6 h! W

. i4 y! ^, c: k3 ]基于重新调整中断优先级后的代码再做测试,结果就完全正常了。
% }$ X- B- \6 G% N. ^9 i% G
. Q: F$ Y/ G  O5 T2 E 微信图片_20231211144419.png
% v3 ]# o, m. v. z( h7 j  D! L( n

' }8 Y: }. a- i7 K" I# h0 K" k当然,我们还可以有其它灵活处理的办法。比方发送用中断,接收用DMA,或者发送用轮训,接收用中断或DMA,或者都用DMA方式也行。
; D, ]5 H1 p( I7 Q9 `
; I, g$ @/ @' i6 o0 ?9 k  h+ ^0 o这里的核心问题是中断优先级没有合理安排好。STM32 ARM核中断的内容不多,不过内容不多的东西往往意味着使用上更为灵活。好,今天的话题就分享到这里。
% H* K+ E) p6 a& @% W: w
% \3 @8 w) {: l) m0 y) ?7 `) e3 M
转载自: 茶话MCU
& y7 m: u9 @# J4 r" R1 b如有侵权请联系删除
; s  |# o, j) f2 z% g: E
: s4 n5 w1 M  F: }
* q8 d4 _1 w) C( \* x0 B+ o

8 \* f9 g& _) {' v
收藏 评论0 发布时间:2023-12-11 14:45

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版