0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

应用笔记 | SPI读取数据的最后一位出错问题

STM32单片机 来源:未知 2023-08-18 18:15 次阅读


关键字:STM32F42xx,SPI,OSPEEDR,APB



目录预览


1.问题描述

2.问题的排查

3.原因的进一步分析



01

问题描述


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


02

问题的排查


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


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



现场调整GPIO(即flash CLK/SI/SO)OSPEEDR速率后异常现象消失,GPIO速率调整后CLK信号斜率变大,tCLQV跟随变小,软件抓到错误数据的现象消失,这个实验结果也与上述tCLQV这个怀疑点相匹配。下面是不同GPIO速率下的测试结果。


GPIO_SPEED_FREQ_LOW,常温:tCLQV=5.584ns。

GPIO_SPEED_FREQ_LOW,70℃:tCLQV=6.064ns,FAIL

GPIO_SPEED_FREQ_MEDIUM,70℃:tCLQV=4.805ns。

GPIO_SPEED_FREQ_HIGH,70℃:tCLQV=4.577ns。


03

原因的进一步分析


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


查找到STM32F42xx的勘误手册,我们发现有同样问题的描述:



对于文档推荐的2种workaround也和我们测试时发现的一样。



至此也是能较好的和客户解释了MCU底层的一些原理,并建议客户按照相应workaround的配置,去设定APB总线与OSPEEDR的关系,最终让问题得以解决。


完整内容请点击“阅读原文”下载原文档。

长按扫码关注公众号


更多资讯,尽在STM32

点击“阅读原文”,可下载原文档


原文标题:应用笔记 | SPI读取数据的最后一位出错问题

文章出处:【微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6030

    文章

    44505

    浏览量

    632361
  • STM32
    +关注

    关注

    2265

    文章

    10859

    浏览量

    354533

原文标题:应用笔记 | SPI读取数据的最后一位出错问题

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-spi编程示例之spi硬件原理

    应的CS(下图使用NSS表示)信号线拉低。SPI接口为收发为双全工串行方式传输,收发同步,主设备发出一位给从设备时,从设备也发出一位给主设备。主多从情况如下图: 工作模式
    发表于 11-06 09:17

    飞凌嵌入式ElfBoard ELF 1板卡-spi编程示例之spi硬件原理

    应的CS(下图使用NSS表示)信号线拉低。SPI接口为收发为双全工串行方式传输,收发同步,主设备发出一位给从设备时,从设备也发出一位给主设备。主多从情况如下图: 工作模式
    发表于 11-05 08:44

    tas6424E-Q1 iic的sda的数据位初始化的时候最后一位现半高电平 , 直初始化不成功,为什么?

    现在所用的芯片tas6424E-Q1iic的sda的数据位初始化的时候最后一位现半高电平 ,直初始化不成功 ,波形图和原理图如下,可能
    发表于 09-27 09:35

    CSU18MX86应用笔记

    本应用笔记旨在为用户提供关于CSU18MX86的详细信息和使用指南,帮助用户快速开发基于CSU18MX86的应用。*附件:CSU18MX86应用笔记_V1.0.pdf
    发表于 05-16 10:21

    CSU18M91_蓝牙体脂秤_应用笔记

    字节 EEPROM 和 896 字节数据存储器。本文档是CSU18M91蓝牙体脂秤应用笔记,可以帮助用户快速开发。*附件:CSU18M91_蓝牙体脂秤_应用笔记V1.5.pdf
    发表于 05-16 10:16

    CSU18M91/CSU18M92 应用笔记

    Sigma-Delta ADC、8K×16 MTP 程序存储器、128 字节 EEPROM 和 896 字节数据存储器。本应用笔记,旨在指导用户针对芯海CSU18M91/CSU18M92的开发环境、仿真配置、烧录
    发表于 05-16 10:09

    让STM32的SPI主设备从从设备读取数据时遇到的疑问求解

    STM32的SPI在作为主设备,与个带有SPI接口的AD芯片通信。 时钟,相位都配置的对,数据位配置为8。 我想问
    发表于 05-16 07:50

    STM8 SPI外设采集外部AD芯片数据错位的原因?

    FF F0 00 0F FF FF FF 有效数据中的第一位spi移进入上个字节,有效数据中的
    发表于 04-30 06:38

    PIC24单片机与ADXL362使用SPI通信时出现了读取数据错误的问题怎么解决?

    工程师们好,我在使用PIC24单片机与ADXL362使用SPI通信时出现了读取数据错误的问题,因此想请教下。 我在读取相应寄存器的值得时
    发表于 01-02 08:27

    使用FPGA读取ADIS16407数据出错怎么解决?

    使用FPGA读取ADIS16407数据出错,问题如下: 1:读取出的十六位数据经过换算与DATASHEET中对应
    发表于 01-01 07:54

    使用ARM对ADIS16480进行SPI数据读取时,需要发送三次读取指令才能读取数据是为什么?

    使用ARM对ADIS16480进行SPI数据读取时,需要发送三次读取指令,第三次才能读到第次发送读取
    发表于 12-28 07:26

    晶体知识—的生成和增值知识介绍

    密度为单位体积内线的总长度,其数学表达式
    的头像 发表于 12-09 10:38 2705次阅读
    晶体知识—<b class='flag-5'>位</b><b class='flag-5'>错</b>的生成和增值知识介绍

    晶体知识:的基本类型和特征

    设含的晶体为简单立方晶体,在其晶面ABCD上半部存在多余的半排原子面EFGH,这个半原子面中断于ABCD面上的EF处,它好像把刀刃插入晶体中,使ABCD面上下部分晶体之间产生了原子
    的头像 发表于 12-02 11:40 6384次阅读
    晶体知识:<b class='flag-5'>位</b><b class='flag-5'>错</b>的基本类型和特征

    什么是a,c,c+a?如何区分三种

    密排六方的类型,根据伯氏矢量方向与C轴夹角可分为a、c、c+a
    的头像 发表于 11-25 09:57 6344次阅读
    什么是a<b class='flag-5'>位</b><b class='flag-5'>错</b>,c<b class='flag-5'>位</b><b class='flag-5'>错</b>,c+a<b class='flag-5'>位</b><b class='flag-5'>错</b>?如何区分三种<b class='flag-5'>位</b><b class='flag-5'>错</b>?

    i.MX-6ULL --ElfBoard SPI接口介绍

    ; CPHA 用来决定采样时刻: CPHA=0,每个周期的第个时钟沿采样;CPHA=1,每个周期的第二个时钟沿采样。 表2. 3 SPI总线的4种模式 设定 第一位数据输出 其他
    发表于 11-21 10:19