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.

[参考译文] MSP430F2132:MSP430F2132控制器写入问题

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/929051/msp430f2132-msp430f2132-controller-writing-issue

器件型号:MSP430F2132

我们有一个项目将 TI MSP430F2132设计为产品控制器、将产品信息存储在芯片的闪存信息存储区的 B 和 C 段中。
在进行特定测试之后,一切正常,两天后产品重新通电,发现区域 B 和 C 中的数据更改为 FF (初始闪存状态)。 在这两项测试中、仅对产品执行了电气性能测试。 但是、只有闪存的 D 区域在电气性能中被读取和写入、并且在 B 和 C 区域中没有读取或写入操作。 我们想了解这种现象的可能原因。
备注:出现问题后、我们测试闪存 B 和 C 区的读写功能、芯片仍然可以正常使用。

我公司某项目应用了TI公司的MSP430F2132作为产品控制器,在其片内FLASH的信息存储器B段、C段存储了产品信息。μ A
某次测试正常后,隔两天对该产品再次上电测试,发现B区、C区数据均变为FF(flash初始状态),在两次测试期间,对该产品做过一次电性能测试,但是只对FLASH的D区进行过读写操作,B区、C区无读写操作。咨询一下产生该现象可能的原因。μ A
注:出现该问题后,对该产品FLASH的B区、C区进行读写测试,可以正常使用 μ A

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

    您好、Mandy、  

    在进行电气性能测试时、您是否擦除了段 B 和段 C 中的代码? 您能否分享代码如何访问段 D?  

    在用户指南中、 A 至 D 段可以单独擦除、也可以作为具有0至 n 段的组擦除。只需确认您没有作为组擦除它们。  

    谢谢、  

    Lixin  

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

    您好、Lixin、

    在进行电气性能测试时、我们只进行写闪存 wirte 和擦除段 D、而没有对其他段执行任何操作。

    仅在软件内完成的擦除会执行段、不会作为一个组擦除它们。 段 B、C 和 D 中的代码写入与下面图片中共享的代码相同、即写入闪存中的子程序。

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

    您好、 Mandy、  

     FSSEL_1 = 0x0040。 这意味着选择的是 MCLK 而不是 SMCLK。 请仔细检查您的时钟设置是否在闪存速度规格内。  

    2.在勘误表中、FLASH24提到如果闪存写入或擦除突然终止、可能会发生错误的代码执行。 您能否检查闪存操作是否存在任何时钟问题?  

    3.您可以检查的另一件事是:闪存操作期间是否存在压降。 请确保 MCU VCC 具有足够的去耦电容器。

    一个问题、这个问题能否可靠地重现? 如果此问题仅发生一次且不容易重现、则应由异常时钟停止或压降引起。  

    谢谢、

    Lixin  

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

    您好、Lixin、

    1.如果时钟设置异常、导致 他在闪存读取和重写过程中异常操作、这是否会导致闪存中的完整内容被擦除或只更改某些部分?

    2.压降会导致闪存异常? 如何解释? 是导致软件运行并重新写入闪存、还是电源故障会直接影响闪存?

    在什么情况下、闪存数据存储器将在多个连续段中被擦除、而主存储器(存储代码的位置)不受影响?

    以下是软件编写代码:

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

    您好、Mandy、  

    [引用 user="Mandy Ke">1. 如果时钟设置异常、导致 他在闪存读取和重写中异常操作、这是否会导致擦除闪存中的完整内容或仅更改部分?

    如果时钟速度超出闪存操作的规格、则会出现意外行为。 根据数据表、fFTG (闪存时序发生器频率)应在257kHz ~ 476kHz 范围内。  

    [引用 user="Mandy Ke">2. 压降会导致闪存异常? 如何解释? 是导致软件运行并重新写入闪存、还是电源故障会直接影响闪存?

    同样、超出规格会导致意外行为。 根据数据表、在闪存存储器编程期间、Vcc 应该为2.2V ~ 3.6V。 如果压降导致代码区域的闪存编程错误、代码将异常运行:任何情况都可能发生、可能跳转到意外代码并使用意外数据写入闪存或擦除闪存。  

    Mandy Ke 说:
    3.在什么情况下,闪存数据存储器将在多个连续段中被擦除,而主存储器(存储代码的位置)不受影响?

    您是否有用于擦除连续段的代码? 对于您的情况、您是否有用于擦除扇区 B 和扇区 C 的代码?  

    谢谢、  

    Lixin  

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

    您好、Lixin、

    我们的最后两个问题:

     微控制器不在闪存上运行时、压降或时钟异常是否会影响闪存?

    2. 在这种软件设计的前提下,闪存数据存储区的 B 段和 C 段将被擦除但同时主存储区不受影响的可能性有多大?  我们可以消除软件在这种情况下失控的可能性、对吧? 在我们了解到失控最多只会影响存储区域的一个部分的情况下,不会同时影响两个部分?

    谢谢、

    曼迪

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

    我们的最后两个问题:

     微控制器不在闪存上运行时、压降或时钟异常是否会影响闪存?

    2. 在这种软件设计的前提下,闪存数据存储区的 B 段和 C 段将被擦除但同时主存储区不受影响的可能性有多大?  我们可以消除软件在这种情况下失控的可能性、对吧? 在我们了解到失控最多只会影响存储区域的一个部分的情况下,不会同时影响两个部分?

    谢谢、

    曼迪

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

    您好、Mandy、  

    [引用 user="Mandy Ke">1.  微控制器不在闪存上运行时、压降或时钟异常是否会影响闪存?[/QUERP]

    是的。 即使 MCU 未闪烁、压降或时钟异常也会导致意外问题。 代码可能会跳转到意外区域、从而导致意外的闪存操作。  

    [引用 user="Mandy Ke">2.  在这种软件设计的前提下、闪存数据存储区域的段 B 和 C 将被擦除但同时主存储区域不受影响的可能性有多大?  我们可以消除软件在这种情况下失控的可能性、对吧? 根据我们的理解,失控最多只会影响存储区域的一个部分,不会同时影响两个部分?

    与我上面的问题相同: 您是否有代码擦除扇区 B 和扇区 C、以及您是否能够可靠地重现问题?

    如果您能够可靠地重现问题、则可以尝试删除扇区 B 和扇区 C 的操作代码、并查看问题是否已解决。  

    在软件工程理论中、有许多方法可以提高软件稳健性、包括错误处理。 但基本的是保证硬件没有问题、并且没有违反规范的行为。  

    谢谢、  

    Lixin