• 资料介绍
  • 在线预览
  • 相关推荐
申请入驻 产业图谱

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

03/25 15:31
697
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

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

349.31 KB

问题描述

客户在项目开发中使用 STM32F427ZGT6 的 SPI 连接外部 Flash 时,发现在常温下能正常读写,但是在高温下一段时间后(大概 5 分钟左右)出现读写异常的情况。读写异常时发生在发送 0x5 指令后,返回数据通过软件读取的是 0,而硬件抓取的是 1 。同时也发现同一份代码,同样硬件,如果 flash 换成别的厂家的,在同样温度条件下又没有出现读写异常。

问题的排查

根据客户的描述,初期怀疑是否是不同 Flash 厂家的兼容性问题,现场进一步测试,发现客户软件在70℃环境温度下,除了 program、erase 时寄存器会读错数据,用只读指令 0x03 也会读错数据(0x55、0xaa 会被软件读成 0x54、0xab)。

根据这个结果,我们怀疑到 tCLQV 这个参数。看上去当前的软件是在 flash 输出数据时,在 CLK 下降沿时去采集 flash MO 数据的,所以高温引起的细微的 tCLQV 变化可能会导致软件采集出错。 我们建议MCU 在下一个 CLK 的上升沿去采集数据,此时 flash MO 数据已经稳定为 1。

原因的进一步分析

进一步了解客户系统的初始化,其中 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。

在线预览

相关推荐