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

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

[复制链接]
STMCU小助手 发布时间:2023-2-14 15:51
1.问题描述 客户在项目开发中使用 STM32F427ZGT6 的 SPI 连接外部 Flash 时,发现在常温下能正常读写,但是在高温下一段时间后(大概 5 分钟左右)出现读写异常的情况。读写异常时发生在发送 0x5 指令后,返回数据通过软件读取的是 0,而硬件抓取的是 1 。同时也发现同一份代码,同样硬件,如果 flash 换成别的厂家的,在同样温度条件下又没有出现读写异常。
6 l* a) J- Y  q, T
& a$ s4 M# c6 A7 d9 t7 {5 m
1 }( _  D9 g; N  h8 @0 i
2.问题的排查
. H+ L) S# U: W# C  l; X根据客户的描述,初期怀疑是否是不同 Flash 厂家的兼容性问题,现场进一步测试,发现客户软件在70℃环境温度下,除了 program、erase 时寄存器会读错数据,用只读指令 0x03 也会读错数据(0x55、0xaa 会被软件读成 0x54、0xab)。
# M  O0 f# Q1 W( j- [* `2 D根据这个结果,我们怀疑到 tCLQV 这个参数。看上去当前的软件是在 flash 输出数据时,在 CLK 下降沿时去采集 flash MO 数据的,所以高温引起的细微的 tCLQV 变化可能会导致软件采集出错。 我们建议MCU 在下一个 CLK 的上升沿去采集数据,此时 flash MO 数据已经稳定为 1。 " l6 d0 F# w/ U1 a$ ?) w
" j, x, E% ?; _: b
4 b/ ?0 k) f+ N! g$ n
QNIGOZM}AWZQX)V1QL{Z%(B.png
3 v" f- D( `% U
2 Y$ y: }; W' @0 b% ?: J! t

' }" w' p* w; b5 k8 s0 t& J* j" I现场调整 GPIO(即 flash CLK/SI/SO)OSPEEDR 速率后异常现象消失, GPIO 速率调整后 CLK 信号斜率变大,tCLQV 跟随变小,软件抓到错误数据的现象消失,这个实验结果也与上述 tCLQV 这个怀疑点相匹配。下面是不同 GPIO 速率下的测试结果。
' g0 k- J  ^) Q0 T5 Z) U& aGPIO_SPEED_FREQ_LOW,常温: tCLQV=5.584ns。
' w3 ]% ^4 E7 V# R4 U( YGPIO_SPEED_FREQ_LOW,70℃: tCLQV=6.064ns, FAIL。
. A; a0 e. K2 o4 L( S( F: |& jGPIO_SPEED_FREQ_MEDIUM,70℃:tCLQV=4.805ns。
0 p" H5 W3 A, U7 DGPIO_SPEED_FREQ_HIGH,70℃:tCLQV=4.577ns$ v$ @8 w) b% x, _1 n

3 b4 e! c4 E0 f1 J/ Y! R

; g/ R& l( S2 z3 y3.原因的进一步分析 ( m2 I0 s, q2 A2 u
进一步了解客户系统的初始化,其中 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 u6 n/ b" Y% q& k+ b查找到 STM32F42xx 的勘误手册,我们发现有同样问题的描述: 9 q7 i& M  s& U# v
( n7 \  L  j$ z5 P4 |

: ?/ Z5 G4 g1 {) o' \& w 5D]_SSDC$OYSUWLA6~L~QJJ.png
3 W1 |( r1 s3 S8 I
) F; K* p* g; F, v6 q
- O* c# }) K' h+ [  k, e& U5 {
对于文档推荐的 2 种 workaround 也和我们测试时发现的一样。  " t$ r0 x: O  M8 r9 n

' }9 R5 d5 j& u% t* r5 ]! D! g% |
  m% m4 T/ d4 ]3 g$ U- b8 r
C9GLL7LY(8JDDJN8{88TDOY.png 7 G, {# i7 f4 S. S
4 ~0 K  h- K  f5 S* d. Y: |! x& }: t
; T: G) F7 Y% m4 K" F$ ~- R) |
至此也是能较好的和客户解释了 MCU 底层的一些原理,并建议客户按照相应 workaound 的配置,去设定 APB 总线与 OSPEEDR 的关系,最终让问题得以解决。
5 E% U" g- b. q; O+ L- u" b6 C0 t1 q2 w2 O- @" K5 z
* ]: P# u/ Z8 ^4 q7 |, _
完整版请查看:附件 SPI读取数据的最后一位出错问题.pdf (349.31 KB, 下载次数: 3)
收藏 评论0 发布时间:2023-2-14 15:51

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版