This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430F2619S-HT:MSP430高温写入闪存问题

Guru**** 2391415 points
Other Parts Discussed in Thread: MSP430F2619S-HT

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1056149/msp430f2619s-ht-msp430-high-temperature-writing-to-flash-problems

器件型号:MSP430F2619S-HT

我们在高温下将 msp430f2619s-HT 写入内部闪存时遇到了一些问题、希望获得有关问题可能是什么以及如何缓解问题的反馈/建议?

我们一直在调查原因。 我们每10秒编写一次测试代码、以将以下测试模式写入内部闪存。

F3 F7 A5 A7 44 A4 00 40 F9 FC E7 F3 9F CF E3 3F

然后、我们将其放入烤箱中、使其每次达到1小时的不同温度水平。 然后、我们读取存储器以查看故障发生的时间。 写入00 40时、似乎会发生故障、这表示故障与清除的位数越多、发生故障的风险就越高。

F3 F7 A5 A7 44 A4 00 40 F9 FC E7 F3 9F CF E3 3F
F3 F7 A5 A7 44 A4 00 51 F9 FC E7 F3 9F CF E3 3F
F3 F7 A5 A7 44 A4 00 40 F9 FC E7 F3 9F CF E3 3F
F3 F7 A5 A7 44 A4 10 44 F9 FC E7 F3 9F CF E3 3F
F3 F7 A5 A7 44 A4 02 40 F9 FC E7 F3 9F CF E3 3F

每个芯片的问题不同。 我们现在已经在2个 MSP430上运行了此测试,一个在140C 时开始失败,另一个在155C 时失败,但我们有多个电路板,在这些电路板上发生了闪存写入故障,但还不知道确切的温度。

我们监控了 MSP430的电源、在写入时、它看起来是稳定的3.3V。 闪存时钟设置为364Hz,SMCLK 设置为8MHz。 也许我们还可以在硬件方面检查其他东西吗?

我们正在考虑更改写入每隔一位的过程以解决此问题、因为它在 A5下从未失败。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Neil、

    首先、请确保保持在器件的温度规格范围内。 如果您超过150摄氏度的最高温度、我们无法保证器件将按数据表中的规定工作或按预期工作。  

    第二、请查看以下两个资源、以帮助调试您的闪存写入问题。

    《调试 MSP430 系列微控制器上的闪存问题》

    MSP430闪存特性

    根据您描述的内容、如果您没有在测试中执行任何类型的擦除、我认为您可能会违反累积编程时间。   

    第三、执行这些测试时、我会仔细检查您的电源轨、以确保它们稳定并降至闪存编程所需的最低电压以下。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jace:

    感谢您的回答和建议。 我们更关注140C 故障、因为预计会出现150C 以上的问题。 在开始此调查之前、在不同的测试中、140C 时失败的工具可能略高于150C。 是否可以将芯片置于高于其指定温度的位置,从而永久损坏闪存,从而使其无法正常工作并低于其指定温度? 如果是、我们可以尝试在一些从未见过温度保持在150以下的新电路板上运行测试。

    我们使用示波器和触发器监控 MSP430电源、以确认写入期间没有电压下降。

    在累积的写入时间方面、我认为我们没有违反这一点。 由于我们使用的频率为364kHz、因此编写一个字大约需要80us。 一个块为64字节、因此我们的累积写入时间为2.54ms。 是这样吗? 即使我们要写入8个字,等待10秒,然后再将8个字写入同一个块中的下一个可用空间,如果我理解正确,这不会影响累积时间?

    我们不会在此测试代码中执行擦除、因为我们始终会写入内存中的下一个可用空间、该空间为空。 建议在写入前删除一个空的512字节段、即使没有写入任何内容也是如此?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尼尔

    在某一时刻超过最高温度的装置可能会在以后出现问题、即使在低温下也是如此。 这可能是一个潜在问题。

    累积写入时间仅在擦除时复位。 无论您在权限之间花费多长时间、您都需要在累积正确时间之前擦除该段以保持可靠。 MSP430闪存特性应用手册的第3.3节 介绍了几种情况、并提供了有关如何避免此问题的指导。  

    该节的相关节选:

    "在下一个擦除周期前、同一个16位闪存字不能被编程超过两次。 写入一个具有两个字节编程周期的16位字计为两个编程周期。 如果闪存单元之前已按16位字进行编程、则单位过编程只能一次。 多次写入同一行会导致写入干扰、并且擦除位也会被编程。 这不会造成物理损坏、擦除后、受干扰的位可按之前的方式进行编程。 没有长期影响是众所周知的。"

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jace:

    我知道、如果达到累计时间、您需要对段执行擦除、但在我们的方案中、如果计算正确、我们在每个64字节行上仅花费2.54ms、因此永远不会达到累计时间? 如果不是,请告诉我?

    当我们在运行新测试之前对固件进行重新编程时,所有512字节段都将在测试开始前被擦除,所以我想在这种情况下,每64字节行的累积写入时间都会被重置?

     为供您参考、我们对每个字使用 Word Write 方法、以便向相同的64字节行写入32次以填充该字。

    如果您可以确认我们没有违反累积写入时间、我们可以继续在未检测到温度的新电路板上使用相同的代码、以查看将此代码置于150°C 以上是否会在140°C 时导致问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Neil、

    是的、当您启动新测试并运行 所有 段时、您的累计写入时间将被重置。 您对新测试的定义是小时温度均热还是测试模式每写入10秒之间的温度? 我可能无法理解您的测试。  

    如果在每个10秒间隔写入测试之间或至少在其他10秒模式之间没有擦除、 则会出现问题。 这里的主要问题是在擦除之前写入特定字的次数。   " 同一个16位闪存字在下一个擦除周期前不能被编程超过两次 "

     因此、如果您通过擦除和重新编程、然后每10秒写入一次闪存而不进行任何擦除、那么您在擦除之间写入特定字大约360次。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我将尝试更清楚地描述测试。

    从您打开 MSP430的那一刻起、代码将开始将这个16字节测试模式写入到闪存存储器中的下一个可用位置(它扫描以找到下一个空段、所以处理复位)。  它从不会写入同一个位置两次。 它将写入下一个可用位置。 我们开始写入地址0x10000 (FLASH2)

    我们每隔十秒就会编写一个测试模式、因此每隔40秒就会填充一个64字节的行、然后移到下一行。 512字节段中有8行。 填充这些内容后、我们将继续下一个句段、依此类推。

    在我们的测试中、我们打开烤箱、将其设置为135C、然后启动 MSP430。我们等待一小时、然后将温度提高5C、等待一小时等、因此在135C、140C、145C 和150C 上以一小时的步长进行测试。

    然后关闭电源,系统冷却后,我们将读取整个内存。 当我们每10秒写入一次时、我们可以查看图形何时以及在什么温度下不再正确。 由于我们的测试很短、因此闪存永远不会完全填满。

    在 下一个擦除周期之前、使用"语句、同一个16位闪存字不能被编程两次以上。  “我假设这意味着您不能将相同的16位字写入同一位置? 还是64字节行中的任何位置。

    我想我们在同一行(不同位置)中写入相同的字4次、因为有4倍的相同16字节模式、所以这可能是问题吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、所以每10秒、你就会在你设置的模式中写入下一个字。 是这样吗?  那么、您再也不会写入同一个字位置?

    语句"在下一个擦除周期前、同一个16位闪存字不能被编程两次以上。"   这意味着在擦除之前、闪存中相同的16位字位置不能被写入两次。

    为了确认、在测试之间、在您再次读取闪存后、器件将被擦除并重新编程、然后再卡在试验箱中?  必须在 CCS/IAR 中使用一个设置 来批量擦除器 件、否则 IDE 只能擦除它正在编程的存储器部分。  

    您还可以在查看闪存模式期间以边界读取模式查看闪存。 这可以为您提供有关闪存在这些位置的一些附加信息。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好

    我们每隔10秒就会将测试图形写入闪存中的下一个可用位置、因此切勿再次写入同一位置。

    存储器启动看起来是这样的。 我添加了时间戳。

    对于测试模式中的每个字、我们都使用此过程。

    我们已通过在 CSS 中上载固件、让其运行一个位、然后重新上载固件并确认从0x100000 返回到0xFF 的所有字节来检查是否存在批量擦除。

    我们将研究这个边界读取模式。

    谢谢、

    Neil