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

【经验分享】SPI 接收数据移位分析一例

[复制链接]
STMCU小助手 发布时间:2022-2-11 23:06
问题:该问题在不同客户使用不同芯片的 SPI 功能时都曾经提到.7 Y! x# \- E7 H! l/ j5 S4 a1 ]
主要现象是 slave 端接收到的数据时有移位现象,例如 0x10 接收成 0x08。此种移位一旦发生,当前通讯的后续数据也都发生了移位。" z8 |" A: p: o' |. p1 J# W9 k

2 a3 k' \9 M+ C; @- R7 V6 x$ d调研:
  M8 z; b# {2 \4 C3 a" k重复进行接收数据试验,发现并非所有情况下数据接收都有问题,但是某次通讯中有某个字节发生移位,则后续字节均会发生移位现象。只有将当次通讯中断,重新进行新的通讯。0 {' s. |- K5 E9 r
1 `: \7 {9 ^- o, [
经过查看波形,发现数据线上的波形是正确的。再仔细查看,发现时钟和数据不匹配,即按照时钟来读数据,接收的数据是正确的——然而并非是 master 端发送的数据。7 u! I1 n. f5 Y
+ P; y6 E6 D: b" q
由于 SPI 属于同步接口,通讯的时钟完全由 master 端提供。因此,一旦通讯开始,slave 端是无法区分时钟线上的沿变化是否是一个有效时钟。这样当这个沿变化满足 SPI 电气特性的要求的时候,就被当成一个有效时钟从而同样可以接收数据。此时,由于 master 端和 slave 端的各自认为的时钟实际上已经有差别,自然 slave 端接收的数据也就无法保证正确了。+ u, m0 ]2 h9 w* Z- |9 @' l
6 u. A3 v# e4 i+ T
常见的一个不同步的例子是当 master 端开始发送数据时,slave 端还未完成初始化。于是,slave 端事实上是从数据的中间开始接收的,这样也就导致后续数据同样出错。' t; _6 q  l' S* B
% U" ?9 a* z9 G
结论:
0 ?7 I$ A5 l/ p3 Y2 M通过以上的分析可以得知,该问题是由于 SPI 通讯中 master 端和 slave 端不同步造成的,而不是器件
0 H  d0 @8 ?, T" `1 I本身问题。* Y0 `' ~, g: G. P2 N5 I

" {* p) ~5 t% b* Z: s# M处理:
7 V& X) ?, E. P$ B
( Z  V7 m* f; r& B/ H重新考虑程序设计,确保 master 端和 slave 端保持时钟的同步性;8 K% P. `2 H+ Y, w3 F
同时,考虑到通讯过程中可能出现的干扰,在应用层对接收的数据进行校验。常见的处理方法有 CRC校验,checksum 校验;或者多次发送数据在接收端进行判决。
6 a: \$ \1 c  C6 u$ E一旦在通讯中发现数据出错, 则中断当前通讯重新进行通讯。
7 Q& q7 z. _+ s& V, b5 ~5 |% E8 p9 M3 m  u: h9 n" U/ g+ E) J
) g. z5 F" _0 y8 _6 Z9 f& L
赞 收藏 评论0 发布时间:2022-2-11 23:06

举报

0个回答

所属标签

相似技术帖

官网相关资源

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