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

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

[复制链接]
STMCU小助手 发布时间:2023-2-14 15:51
1.问题描述 客户在项目开发中使用 STM32F427ZGT6 的 SPI 连接外部 Flash 时,发现在常温下能正常读写,但是在高温下一段时间后(大概 5 分钟左右)出现读写异常的情况。读写异常时发生在发送 0x5 指令后,返回数据通过软件读取的是 0,而硬件抓取的是 1 。同时也发现同一份代码,同样硬件,如果 flash 换成别的厂家的,在同样温度条件下又没有出现读写异常。
$ {9 `8 d: X# X+ B: M1 i
! A2 H8 k% G+ [4 @5 n* M0 r* G

) f4 W( i" U- }+ J% k) _2.问题的排查 # |* G' E. L( Q' g1 x$ p& D+ `7 }
根据客户的描述,初期怀疑是否是不同 Flash 厂家的兼容性问题,现场进一步测试,发现客户软件在70℃环境温度下,除了 program、erase 时寄存器会读错数据,用只读指令 0x03 也会读错数据(0x55、0xaa 会被软件读成 0x54、0xab)。 & w; N/ c% h; b9 }
根据这个结果,我们怀疑到 tCLQV 这个参数。看上去当前的软件是在 flash 输出数据时,在 CLK 下降沿时去采集 flash MO 数据的,所以高温引起的细微的 tCLQV 变化可能会导致软件采集出错。 我们建议MCU 在下一个 CLK 的上升沿去采集数据,此时 flash MO 数据已经稳定为 1。 . F( q, Q* M* S6 L! s4 B8 ]

- \0 V) j8 X8 ?$ I  B- C& B# G

; x/ t' c% X5 k( `1 q  l( R QNIGOZM}AWZQX)V1QL{Z%(B.png ( R4 J0 K! w; |6 ?: {, x

8 t4 L- ?, y6 P, T2 n) ~
+ X8 `, i1 d" m) {& v- a
现场调整 GPIO(即 flash CLK/SI/SO)OSPEEDR 速率后异常现象消失, GPIO 速率调整后 CLK 信号斜率变大,tCLQV 跟随变小,软件抓到错误数据的现象消失,这个实验结果也与上述 tCLQV 这个怀疑点相匹配。下面是不同 GPIO 速率下的测试结果。
* `" P% C/ C7 E  J* y* {* hGPIO_SPEED_FREQ_LOW,常温: tCLQV=5.584ns。
( L; O; g5 N/ |  U) F. J. ]  {GPIO_SPEED_FREQ_LOW,70℃: tCLQV=6.064ns, FAIL。: i0 I7 K9 L5 o: H+ q# x
GPIO_SPEED_FREQ_MEDIUM,70℃:tCLQV=4.805ns。1 [0 E3 B8 u+ w5 C0 j+ K0 D+ A
GPIO_SPEED_FREQ_HIGH,70℃:tCLQV=4.577ns
& p) X- Y3 L$ T) T. o& e4 B$ V  W6 S$ Y8 ]" U2 Y6 G

/ `+ I  i, _6 v- ^5 `3.原因的进一步分析 / |4 Z$ w0 {" S
进一步了解客户系统的初始化,其中 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。
& @% s( [0 Q$ R/ E5 V6 p" `# M: b( Q查找到 STM32F42xx 的勘误手册,我们发现有同样问题的描述: 9 q2 s6 _% L) O
' O+ k4 E, b$ N3 e( j

0 _- C9 Q% M! `5 P. ^7 Y# L8 G( c 5D]_SSDC$OYSUWLA6~L~QJJ.png % C& X; h  |- N: b* j
( U+ I( O, I2 Z4 e  W- R2 _
7 l2 N7 o& n; t! J& D
对于文档推荐的 2 种 workaround 也和我们测试时发现的一样。  1 P" T- c. n" l  X

& n5 R. u# W: K: U
. a( d0 D& ]9 B
C9GLL7LY(8JDDJN8{88TDOY.png ' `' H$ ]$ k+ n$ U9 T" a' P

3 f+ T5 Z6 T! W6 {) w2 b! C3 ?& y% G

7 M) W: v  I; I' `, |) b$ d至此也是能较好的和客户解释了 MCU 底层的一些原理,并建议客户按照相应 workaound 的配置,去设定 APB 总线与 OSPEEDR 的关系,最终让问题得以解决。% h( U! [# t1 U8 u& J3 p. ^; i7 u
% H0 Q) T6 G. Z! `1 |& ?; A
* v# i+ \3 X1 r; P3 D
完整版请查看:附件 SPI读取数据的最后一位出错问题.pdf (349.31 KB, 下载次数: 0)
收藏 评论0 发布时间:2023-2-14 15:51

举报

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