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

SPI 读取数据的最后一位出错问题

[复制链接]
STMCU小助手 发布时间:2023-2-14 15:51
1.问题描述 客户在项目开发中使用 STM32F427ZGT6 的 SPI 连接外部 Flash 时,发现在常温下能正常读写,但是在高温下一段时间后(大概 5 分钟左右)出现读写异常的情况。读写异常时发生在发送 0x5 指令后,返回数据通过软件读取的是 0,而硬件抓取的是 1 。同时也发现同一份代码,同样硬件,如果 flash 换成别的厂家的,在同样温度条件下又没有出现读写异常。  X2 H( e5 S$ X8 h* s

7 K0 X1 k9 {% h5 ?
1 o/ H1 c+ z* [- Y  H9 S
2.问题的排查 / C2 f4 y* c+ P& o
根据客户的描述,初期怀疑是否是不同 Flash 厂家的兼容性问题,现场进一步测试,发现客户软件在70℃环境温度下,除了 program、erase 时寄存器会读错数据,用只读指令 0x03 也会读错数据(0x55、0xaa 会被软件读成 0x54、0xab)。
6 E) v5 D% t0 C6 o" v1 g& E' L根据这个结果,我们怀疑到 tCLQV 这个参数。看上去当前的软件是在 flash 输出数据时,在 CLK 下降沿时去采集 flash MO 数据的,所以高温引起的细微的 tCLQV 变化可能会导致软件采集出错。 我们建议MCU 在下一个 CLK 的上升沿去采集数据,此时 flash MO 数据已经稳定为 1。
$ n9 t4 ^1 t  ?$ {8 a% ]3 ]5 A  R( E

4 d" n; ?$ C1 i7 b* z9 i: b QNIGOZM}AWZQX)V1QL{Z%(B.png ' M3 @4 V7 y( X1 X! R  t/ ?. R8 A

% X( \# _/ `3 C2 N/ ^# V2 z
- {% R& [) W& N$ ^
现场调整 GPIO(即 flash CLK/SI/SO)OSPEEDR 速率后异常现象消失, GPIO 速率调整后 CLK 信号斜率变大,tCLQV 跟随变小,软件抓到错误数据的现象消失,这个实验结果也与上述 tCLQV 这个怀疑点相匹配。下面是不同 GPIO 速率下的测试结果。
  r) j! b4 S7 f* d0 g3 X% j( O3 WGPIO_SPEED_FREQ_LOW,常温: tCLQV=5.584ns。
* [, X$ n3 j& d6 J8 QGPIO_SPEED_FREQ_LOW,70℃: tCLQV=6.064ns, FAIL。7 o0 h2 a8 S- {1 @$ f8 t5 M
GPIO_SPEED_FREQ_MEDIUM,70℃:tCLQV=4.805ns。
+ {% K- f, H, k! g% ]GPIO_SPEED_FREQ_HIGH,70℃:tCLQV=4.577ns
& E2 `, b' b- f6 [, @6 A6 j" J% D1 ~# g" Z, w( {3 Q

& U! F2 _& a' W7 w" F3.原因的进一步分析
% Z; |7 q$ i: `7 K  Q进一步了解客户系统的初始化,其中 clock 配置信息如下:采用外部晶振为 25MHZ,plln=360, pllm=25, pllp=2, pllq=8,系统主频: 25/25*360/2 = 180MHz,APB2: 180/2 = 90MHz,SPI 的波特率为2.8MHz。SPI 的引脚设置均为 GPIO_Initure.Speed 为 low。
8 v1 ?: V. A6 Q查找到 STM32F42xx 的勘误手册,我们发现有同样问题的描述: , J9 Z+ r# L5 L
% y2 ]& A7 ?7 T  H  s7 B

2 z+ T" Y$ ^3 w( Z2 z4 Q 5D]_SSDC$OYSUWLA6~L~QJJ.png + Y+ W6 @; [6 s! a

1 K8 A* k0 j$ a4 p% s
. F2 H7 M; O; b& r" L. j. R. F2 P/ K3 v
对于文档推荐的 2 种 workaround 也和我们测试时发现的一样。  7 c: o5 f# c# p1 \/ Y4 ~6 V8 N
7 `$ {+ X7 z% ?% J9 E  o) M# r
1 s& C2 G  E, J; h  o  O$ k
C9GLL7LY(8JDDJN8{88TDOY.png 7 t( E2 @" A2 z* i

: f/ |; i! Y% ~! I9 c3 X2 G
7 J3 o7 Y3 z4 w# F0 r7 e$ i
至此也是能较好的和客户解释了 MCU 底层的一些原理,并建议客户按照相应 workaound 的配置,去设定 APB 总线与 OSPEEDR 的关系,最终让问题得以解决。7 ^+ ^: x; R( n; A) w& H9 O

& g' r2 C: b: D. ?: x$ G# x" g

, r, A* `% j3 V完整版请查看:附件 SPI读取数据的最后一位出错问题.pdf (349.31 KB, 下载次数: 5)
赞 收藏 评论0 发布时间:2023-2-14 15:51

举报

0个回答

所属标签

相似技术帖

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