数字接口中的系统级噪声如何导致串行闪存产生数据错误
扫描二维码
随时随地手机看文章
在不断追求系统更高性能的过程中,集成设备制造商(IDMS)已经非常擅长开发数字接口,能够在充满挑战的电力环境中高速运行。标准接口,如SPI和I2C,提供了一种相对简单的方式,以可靠和有效的方式连接来自不同供应商的设备。其他类型的接口也是如此。
数字领域可以被认为是为希望利用"标准"技术快速构建复杂系统的开发者提供了一个安全的避难所。实际上,嵌入式产业在很大程度上依赖于基于标准的界面,因为它们为创新提供了框架。当它们不"仅仅起作用"时,就会导致混淆,特别是如果错误的原因被错误解释的话。任何混淆都是可以理解的,因为当按照规范应用时,接口的开发是安全和可靠的。事实上,底层的物理接口是固定的保护器件也将提供保证。
各种形式的系统噪音
对信号的任何扭曲都可以被解释为噪音,可能有理由假定在通信环境中噪音最为明显;所收到的信号不是所发出的信号。这种直接相关性是相对容易找到的,但在某些情况下,因果关系并不那么容易确定。当断层时断时续时,挑战就更加复杂了。
今天的微控制器设计的目的是以最小的配置提供可靠的操作。在串行接口的情况下,这可能包括对I/O销上的高驱动电流的默认,以应对长电路板轨道或高电容负载的影响。在某些情况下,这会导致过度驱动一个接口,而这反过来又会导致被解释为错误或错误的派生效应。
例如,串行闪存装置提供了一些先进的功能,可以确保可靠的操作,并允许对该装置进行审讯。这可以包括噪声滤波器,先进的自适应编程,和擦除算法,以管理单元格边缘.一些制造商还将ECC包括在存储元件中,在每个写入操作中保存额外元数据,允许检测和纠正单位或多位错误,但当噪音腐蚀通信接口总线上的基本消息事务时,ECC修复将不会有帮助。
SPI接口上的噪音可能被误解为额外的时钟脉冲。由于SPI是一个时钟驱动的接口,它会产生一些影响,比如命令被忽略、数据被错误解释、命令被使用错误等等。然而,噪音也携带能量,在某些情况下,这种能量本身就会在设备的操作中造成错误。
充电泵和超射
在大多数情况下,一些信号的过高或过低可以被数字接口所容忍。然而,不应忘记,曲线下的能量仍然存在,在某些电路中,这可能是破坏性的。
这方面的一个例子是串行闪存中的电荷泵电路。如果SPI总线信号含有明显的噪声,则该信号中的能量有可能传播到电荷泵并扰乱其运行。
闪存中的电荷泵是一个关键功能,因为它提供了改变存储单元的偏置所需的能量,并且有效地存储了一个逻辑1或0。写入/删除过程是闪存操作中的一个关键时刻,在此期间对充电泵的任何干扰都可能导致写入或删除错误,虽然这些错误可能被发现,但它们可能不明显。
这种错误很容易被解释为闪存设备中的故障。闪存具有有限数量的读写周期由制造商保证,这一事实被嵌入式设计师很好地理解,但也许没有很好地理解,提供一个没有太多过高或过低过高的干净接口的重要性。
影响噪声水平的因素有多种,如操作频率、信号幅值、单片机驱动水平、噪声峰所含能量。PCB的设计和信号之间的交叉对话也可能是一个因素。
这种噪声的结果是设备操作错误,显示为串行闪存存储值中的错误。最初,错误的真正影响被忽略了,因为在较少频率的基础上对状态登记册进行轮询报告的错误较少,导致设计人员对失败的根本原因做出错误的假设。
找出真正的根源
虽然这个故障看起来像是内存故障,但根本原因并不在闪存设备上。这是阿多斯特工程师通过探测SPI信号和识别系统噪声发现的。虽然噪音部分可以归因于单片机和闪存之间的电路板轨道上的阻抗不匹配,但这并不是全部的故事。
噪音的来源实际上是单片机接口,它默认为高驱动水平的电源。过度的驱动力足以导致过高和过低的SPI线,在一些情况下,这可能被错误地解释为信号转换,导致读写错误。然而,在这个例子中,发现过远射具有足够的能量来扰乱闪存泵,从而导致错误。
在客户的设计中,正在使用的单片机为其I/O提供了可配置的驱动电流,该电流在启动时默认值很高。由于应用程序代码在初始化过程中没有修改这个级别,所以在正常操作中仍然很高。
对于SPI总线上的其他设备来说,这种影响可能并不明显,因为数字接口通常设计得很安全。闪存的敏感性,需要在更高的频率上工作,特别是充电泵的工作,使得闪存容易受到过高/过高的影响。这导致错误的操作,最初被错误地解释为一个故障的闪存设备。
纠正错误
降低通过固件的驱动电流,将超射和下射降低到有效的零,反过来导致闪存的无错误操作。
故障的性质表明,闪光设备正在尽一切努力补偿错误的影响,这是系统对SPI接口的过度噪声。
也许这里最重要的一点是,原因实际上是所使用的单片机的设计特性,它默认了一种在大多数情况下完全可以接受的操作模式。高驱动输出和不完全的印刷电路板电感的结合造成了间歇性失效的情况。减少了单片机上的驱动输出,通过简单的固件更换,解决了问题。
这突出了这里的真正教训:可能出现的真正组件故障实际上可能是设计中的疏忽。更换存储器设备本来是对最初被认为是故障的自然反应,但通过客户与供应商以及硬件和软件工程团队之间的强有力的工作关系,找到了实际原因并应用了正确的解决办法。其结果是设计明显改进,系统性能提高,可靠性提高.
结论
如果没有明显的影响,系统噪音很容易消除.在最佳情况下,间歇性错误特别难以确定,但当错误被错误解释时,挑战就更加困难。
过高可能是系统噪声中最不明显的一种形式,但正如这里所解释的,它的影响可能是显著的。闪存是一种可靠的技术,但它依赖于精心设计的接口。串行接口上的过高噪声有可能传播到电荷泵电路上,影响编程的运行,消除电路。这导致了不可预见的特性,很容易被解释为设备本身的故障,显示为内存单元故障,以及不一致或不可靠的编程和删除操作。
在这种情况下,替换闪存并假设问题已经解决,可能导致产品进入市场,在某一时刻可能会失败。相反,设计者能够通过一个重要的因素改进编程和消除一致性,在检测到超过250万个周期的错误之前,有效的耐力从一个不可接受的~20k周期跳到没有错误和不需要补充错误检测和纠正例程。
现代微控制器提供的可配置水平可以被看作是一个帮助和障碍;在这个例子中,驱动器电流是可配置的事实可能是导致过度的原因。然而,能够降低驱动强度也是有效的解决问题。