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

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

3天内不再提示

系统级噪声中串行闪存的虚假错误问题

要长高 来源:embedded 作者:Paul Hill和Gordon Ma 2022-05-09 17:39 次阅读

在系统级不断追求更高性能的过程中,集成设备制造商 (IDM) 已经精通开发能够在电气挑战环境中高速运行的数字接口。标准接口,如 SPI 和 I2C,提供了一种相对简单的方法,以可靠和有效的方式互连来自不同供应商的设备。其他类型的接口也是如此。

可以将数字域视为为希望使用“标准”技术快速构建复杂系统的开发人员提供的避风港。事实上,嵌入式行业很大程度上依赖于“正常工作”的基于标准的接口,因为它们为创新提供了框架。当它们不“正常工作”时,可能会导致混乱,尤其是在错误解释错误原因的情况下。任何混淆都是可以理解的,因为这些接口在按照规范应用时是健壮和可靠的。底层物理接口固定在硅片中的事实也可以提供保证。

各种形式的系统噪音

信号的任何失真都可以被解释为噪声,并且可以合理地假设噪声在通信环境中最常见;收到的信号不是发送的信号。这种直接相关性比较容易找到,但在某些情况下,因果关系并不那么容易确定。当故障变得间歇性时,挑战变得更加复杂。

当今的微控制器旨在以最少的配置提供可靠的操作。在串行接口的情况下,这可能包括默认为 I/O 引脚上的高驱动电流,以对抗长 PCB 走线或高容性负载的影响。在某些情况下,这可能导致接口过度驱动,进而导致衍生效应被解释为错误或故障。

例如,串行闪存设备提供了许多高级功能,可确保可靠运行并允许对设备进行查询。这可以包括噪声过滤器、高级自适应编程和管理单元余量的擦除算法。一些制造商还在存储元件中包含 ECC,以在每次写入操作时保存额外的元数据,以允许检测和纠正单个或多个位错误,但当噪声破坏通信接口总线上的基本消息事务时,此 ECC 修复将无济于事。

SPI 接口上的噪声可能会被误解为额外的时钟脉冲。由于 SPI 是时钟驱动的接口,因此会产生一些影响,例如命令被忽略、数据被误解、使用错误命令等。但是,噪声也带有能量,在某些情况下,这种能量本身会在设备操作中引入错误。

电荷泵和过冲

在大多数情况下,数字接口可以容忍信号中的一些过冲或下冲。然而,不应忘记曲线下的能量仍然存在,并且在某些电路中这可能是破坏性的。

一个典型的例子是串行闪存中的电荷泵电路。如果 SPI 总线信号包含大量噪声,则该信号中的能量可能会传播到电荷泵并破坏其运行。

闪存中的电荷泵是一项关键功能,因为它提供了改变存储单元偏置所需的功率,并有效地存储逻辑 1 或 0。写入/擦除过程是闪存操作的关键时刻存储器,在此期间对电荷泵的任何中断都可能导致写入或擦除错误,虽然可以检测到这些错误,但它们有可能不会很明显。

这种错误很容易被解释为闪存设备中的故障。嵌入式设计人员非常了解闪存具有制造商保证的有限数量的读写周期这一事实,但可能不太了解的是提供没有太多过冲或下冲的干净接口的重要性。

例如,考虑图 1 中的图像。它显示了六个闪存设备的健康单元边距。在用表示逻辑 1(2V 至 5V)和 0(》6v)的数据编程的单元之间出现了两种不同的模式。相比之下,图 2 中的图像显示了三个闪存设备的存储单元余量,这些设备因控制线上的过冲和下冲而遭受数据损坏。

poYBAGJ44LyAIt0IAADasiNhee0418.png

图 1:该图显示了已编程和擦除的闪存的良好单元边缘分离数据。(来源:阿德斯托)

pYYBAGJ44MKAQiQCAAG_xq0GiHk572.png

图 2:该图显示了闪存的单元边缘分离数据较差,其中 SPI 线路上存在明显的噪声。(来源:阿德斯托)

多种因素会影响噪声水平,例如工作频率、信号幅度、MCU 驱动水平以及噪声尖峰中包含的能量。PCB 设计和信号之间的串扰也可能是影响因素。

图 2 中的数据显示了过度过冲和下冲对串行接口的影响。下面的图 3 显示了这种过冲在实际应用中的样子。

pYYBAGJ44MiAPFuMAAhi1CzKVyM073.png

图 3:该迹线图像清楚地显示了 SPI 线路上存在的过冲和下冲导致 5.65V 的峰峰值电压,超过了闪存规范中记录的绝对最大值。(来源:阿德斯托)

这种噪声的结果是错误的设备操作,表现为串行闪存存储值中的错误。最初,错误的真正影响被忽略了,因为以较低频率轮询状态寄存器报告的错误较少,导致设计人员对故障的根本原因做出错误的假设。

确定真正的根本原因

尽管此故障表现为内存故障,但根本原因并非闪存设备。Adesto 工程师通过探测 SPI 信号并识别存在的系统噪声发现了这一点。虽然噪声可能部分归因于 MCU 和闪存之间的 PCB 轨道上存在的阻抗不匹配,但这并不是全部。

噪声的来源实际上是 MCU 接口,它在上电时默认为高驱动电平。过度驱动足以导致 SPI 线路上的过冲和下冲,在某些情况下可能会被误解为信号转换,从而导致读取或写入错误。然而,在这种情况下,发现过冲具有足够的能量来破坏 Flash 电荷泵,这反过来又会导致错误。

在客户的设计中,所使用的微控制器为其 I/O 提供了可配置的驱动电流,在启动时默认为 HIGH。由于应用程序代码在初始化期间没有修改此级别,因此它在正常操作中保持高电平。

对于 SPI 总线上的其他设备,这种影响可能并不明显,因为数字接口通常被设计成稳健的。闪存的敏感特性,需要以更高的频率运行,特别是电荷泵的运行,使存储器容易出现过冲/下冲。这导致了最初被误解为闪存设备故障的错误操作。

纠正错误

通过固件降低驱动电流可将过冲和下冲有效地减少到零(图 4),进而导致闪存的无错误运行。

poYBAGJ44M6AGEerAAOfS4l4boE333.png

图 4:没有明显的过冲,串行闪存的电荷泵能够正确运行并提供可靠的功能。(来源:阿德斯托)

故障的性质表明,Flash 设备正在尽一切努力补偿错误的影响,即 SPI 接口上的系统噪声过大。

也许这里最重要的一点是,原因实际上是所使用的 MCU 的设计特性,它默认为在大多数情况下完全可以接受的操作模式。高驱动输出和不完美的 PCB 电感相结合造成了导致间歇性故障的条件。通过简单的固件更改,减少 MCU 上的驱动输出,解决了这个问题。

这突出了这里真正的教训:看似真正的组件故障实际上可能是设计中的疏忽。更换存储设备本来是对最初认为是故障的自然反应,但通过客户和供应商以及硬件和软件工程团队之间的牢固工作关系,找到了实际原因并应用了正确的解决方案。 结果是明显更好的设计、更高的系统性能和更高的可靠性。

结论

当没有明显影响时,系统噪音很容易被消除。在最佳条件下,间歇性错误特别难以定位,但当错误被误解时,挑战变得更加困难。

过冲可能是最不明显的系统噪声形式,但正如这里所解释的,它的影响可能很大。闪存是一种可靠的技术,但它依赖于精心设计的接口。串行接口上​​的过多噪声有可能传播到电荷泵电路,从而影响编程和擦除电路的操作。这会导致无法预料的特性,这些特性很容易被解释为设备本身的故障,表现为存储单元故障,以及不一致或不可靠的编程和擦除操作。

在这种情况下,更换闪存并假设问题已得到解决,可能会导致产品上市时可能会在某个时候失败。相反,设计人员能够将编程和擦除一致性提高一个重要因素,有效的耐久性从检测到错误之前不可接受的约 20K 周期跃升至超过 250 万个周期,没有错误,并且不需要补充错误检测和纠正例程。

现代微控制器提供的可配置性水平既可以看作是帮助,也可以看作是障碍。驱动电流可配置的事实可能是该示例中过冲的原因。然而,能够降低驱动强度对于解决问题也很有效。

Paul Hill是 Adesto 的高级营销总监,负责公司的特定应用非易失性存储器产品线。他在航空电子系统设计等领域拥有超过 30 年的行业经验;半导体、MCU、内存产品应用;和内存产品营销。保罗毕业于南安普顿索伦特大学。他拥有多项关于内存产品架构和功能的专利。

Gordon MacNee是一名负责北欧的 Adesto 现场应用经理。他毕业于格拉斯哥大学,在那里他学习了物理学。Gordon 在电子行业工作了 30 多年,在广泛的细分市场推广、设计和支持涉及微控制器、有线通信、射频和内存产品的项目。

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

    关注

    146

    文章

    16865

    浏览量

    349852
  • pcb
    pcb
    +关注

    关注

    4315

    文章

    22928

    浏览量

    395466
  • FlaSh
    +关注

    关注

    10

    文章

    1613

    浏览量

    147644
  • 存储器
    +关注

    关注

    38

    文章

    7425

    浏览量

    163505
收藏 人收藏

    评论

    相关推荐

    如何在ModusToolbox 3.0.0添加串行闪存库CAN?

    ; 没有这样的文件或目录\"。 似乎串行闪存库尚未设置。在库管理器1.0下,而我使用的是库管理器2.0,在管理器2.0下找不到串行闪存库。 在此先谢谢。
    发表于 01-24 07:09

    如何将Littlefs安装到通过qspi连接到电路板的外部串行闪存上?

    我正试图在 XMC7100 V1.1 的 qspi 外部串行闪存闪存 littlefs 文件系统。 我看到库
    发表于 05-27 06:03

    原创:应用串行NOR闪存提升内存处理能力

    本帖最后由 eehome 于 2013-1-5 09:58 编辑 ImproveMemory Throughput with SPI NOR Flash■Spansion公司在嵌入式系统
    发表于 12-12 10:35

    串行闪存和MPFS/FAT文件系统不会挂载该怎么办?

    在编写可以插入文件系统服务(如SD卡、内部闪存等)的串行闪存驱动程序的过程,我注意到除非媒体管理器驱动程序找到有效的文件
    发表于 08-08 11:09

    数字接口中的系统噪声如何导致串行闪存虚假报错?

    数字接口中的系统噪声如何导致串行闪存虚假报错
    发表于 03-09 07:00

    怎么实现串行闪存小体积的数据采集系统设计?

    本文介绍了一种基于AD、CPLD、串行闪存来实现的小体积的数据采集系统。与其他数据采集系统相比,该系统体积小,存储器便于控制,易于升级存储器
    发表于 04-07 06:48

    在ESP32 PICO D4 SIP模块上的闪存读取错误是何原因?如何解决?

    我正在使用 ESP32 PICO D4 SIP 模块在自定义板上启动电路板,使用 arduino 我正在加载示例代码。我在串行监视器上收到以下错误。20:23:58.907 -> rst
    发表于 03-01 07:12

    新型串行闪存满足大容量存储应用需求

    128Mb以上的串行闪存被认为是电子产品满足市场需求、增加更多功能的一个主要障碍,针对需要128Mb以上串行闪存的应用要求,美光科技 (Micron Technology)推出一个简单
    发表于 10-11 11:36 54次下载

    基于串行闪存小体积的数据采集系统的设计与实现

    基于串行闪存小体积的数据采集系统的设计与实现 0 引 言     在现代电子测量、仪器仪表、生物医学等领域中,经常涉及到现场采集模拟信号的工作,
    发表于 12-15 09:54 782次阅读
    基于<b class='flag-5'>串行</b><b class='flag-5'>闪存</b>小体积的数据采集<b class='flag-5'>系统</b>的设计与实现

    业界最快串行闪存:Spansion® FL-S NOR闪存系列

    RobertFrance先生介绍Spansion公司推出业界最快串行闪存产品——65nm Spansion® FL-S NOR闪存系列。
    的头像 发表于 06-25 17:00 3868次阅读

    关于NAND闪存有哪些观念是错误的?

    在半导体业,有非常多与接口标准、性能规格、功能特性和设计的真实可能性有关联的假设、术语和误解。因此,弄清事实很重要。本文将阐明关于NAND闪存错误观念。
    发表于 08-30 14:39 935次阅读

    Mate9系列闪存近日终于宣判了,法院认定华为不构成虚假宣传

    现在关于Mate9的闪存门已经得到了法院的宣判,据WP7吧网友放出的判决书显示,法院认为华为对于Mate9系列的闪存芯片的确是宣传不当,但不是虚假宣传,Mate9系列的闪存属于定制的,
    的头像 发表于 09-29 17:26 7139次阅读

    NAND闪存有那些错误观念

    在半导体业,有非常多与接口标准、性能规格、功能特性和设计的真实可能性有关联的假设、术语和误解。因此,弄清事实很重要。本文将阐明关于NAND闪存错误观念。
    发表于 10-25 17:37 18次下载

    串行SPI NOR闪存与并行NOR闪存之间的对比

    ,因此吞吐量更高。但是随着串行SPI NOR闪存设备多通道(2-8条并行数据线)支持的出现,它现在在低功耗设备变得越来越流行。 这些闪存
    发表于 03-03 16:36 1891次阅读

    数字接口中的系统噪声如何导致串行闪存虚假错误

    系统不断追求更高性能的过程,集成设备制造商 (IDM) 已经精通开发能够在具有挑战性的电气环境中高速运行的。标准接口,如 SPI 和 I2C,提供了一种相对简单的方法,以可靠和有效的方式互连
    的头像 发表于 07-21 10:16 1112次阅读
    数字接口中的<b class='flag-5'>系统</b><b class='flag-5'>级</b><b class='flag-5'>噪声</b>如何导致<b class='flag-5'>串行</b><b class='flag-5'>闪存</b><b class='flag-5'>中</b>的<b class='flag-5'>虚假</b><b class='flag-5'>错误</b>