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.

[参考译文] CCS/MSP430I2041:MSP430 i2041无法写入闪存

Guru**** 2589265 points
Other Parts Discussed in Thread: MSP430I2040

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/930766/ccs-msp430i2041-msp430-i2041-cannot-write-to-flash

器件型号:MSP430I2041
主题中讨论的其他器件:MSP430I2040

工具/软件:Code Composer Studio

你(们)好

我尝试在中使用 TI 示例

 http://dev.ti.com/tirex/explore/node?node=AH1usbSuYSeImpZGDdBbhA__IOGqZri__LATEST

 和  

http://dev.ti.com/tirex/explore/node?node=AGy3iy0wxZhiie8W7f-xBw__IOGqZri__LATEST

但无法将任何内容写入闪存。

在示例中、写入0x1060处的闪存、但程序无法写入该地址、如果我更改为 wirte to RAM、则没关系。

 我看到所有示例在写入前不擦除闪存段、它是对的吗?

任何人都可以帮助我解决这个问题。

我只使用 TI 示例、不修改任何内容!

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

    嘿、Huy、

    我现在没有设置电路板进行测试、但我很确定我最近已经测试了您连接的第一个示例、它对我来说是有效的。   您如何在0x1060处检查闪存、您是否通过内存查看器查看了闪存?   

    至于擦除、您可以确定此示例不会擦除段。   它将写入包含器件关键 TLV 校准数据的信息存储器。  如果没有这些数据、器件基本上是无用的、因此所有软件项目实际上都会检查它是否仍然完好。  如果缺失、则我们的示例工程都不会引导。   

    如果您愿意、您仍然可以擦除此段、但您必须在项目中格外小心、以保留 TLV 数据并将其重新写入其所属位置。   

    我最近正在设计一个 MSP430I2040参考设计、该设计将校准数据存储在信息存储器中。  我将尝试与您分享我的示例项目。  根据我的测试结果、它成功保存了 TLV、擦除了该段并写入了大量数据。  但是、不能保证代码是完美的、并且有可能仍然使器件砖型、但是它肯定会擦除和写入闪存。   

    我会找到并分享它。   

    谢谢、

    JD

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

    嘿、Huy、

    这是我最近正在开发的项目。  e2e.ti.com/.../MSP430I2040_5F00_Calibration_5F00_Data_5F00_Loader.zip

    请看一下、让我知道它是否有用。   

    谢谢、

    JD

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

    感谢 

    我在写入后使用调试来检查闪存数据。  您可以看到我将0xAA 写入地址0x1060、但数据始终返回0x00。  

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

    嘿、Huy、

    您还可以直接查看存储器。  如果您转到"View-Memory Browser"、  在这里、您只需输入地址0x1060并查看所有闪存字节。  

    如果您使用我分享的示例、请告诉我。   

    谢谢、

    JD

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

    大家好、我捕获了内存浏览器。 它在存储器中的0x1060处显示0x00值。

    注意:我首先调试 TI 示例代码以调试简单程序,而不是在代码中。

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

    写入闪存无法写入1、只能将1更改为0。 一旦闪存字节全部为0、它将保持这种状态、直到您将其擦除。  

    正如 JD 所指出的、擦除信息段是危险的、需要小心操作。 因此、自包含示例可以向您展示的任何内容都存在限制。

    它看起来好像您已成功写入闪存(因为它现在为0)。 您的长期目标是什么?

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

    如前所述、TI 示例将无法正常工作、需要添加一些内容才能工作、 例如在编写之前添加删除。

    对于从 MSP430i 开始的每个人来说、TI 示例是否过于模糊? 如果"擦除信息段是危险的、需要仔细检查"、则该示例可以尝试在其他存储器位置读取、写入、擦除以显示写入闪存的完整步骤。

    我想知道 TI 在发布该示例之前没有尝试运行该示例。  

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

    也许吧。 我想说、该示例实际上能够向您展示的内容是有限的。 它确实(显然)写在闪存上,这正是它所声称的。 其他闪存写入示例有不同的危险--我记得,如果您让闪存运行几分钟,它会磨损。

    我认为 JD 为您提供了一个替代示例。 您看了一下吗?

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

    感谢

    我尝试提供的 JD、它工作正常。

    我 的应用是电能测量、当它在交流电流上找到中断时、它会向闪存写入一些值

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

    嘿、Huy、

    很高兴听到它在工作。  

    我想指出的是、我的示例仍然不完全符合我们的要求。  在擦除信息存储器和将 TLV 数据写回闪存之间有一个很小的时间窗口、此窗口容易受到器件的攻击。  如果此时发生复位/电源周期、校准数据可能会丢失、从而使 MSP430I20xx 无用。   

    您将看到我在程序启动时添加了2-3秒的延迟、这是因为如果没有它、当我对器件进行重新编程时、JTAG/SBW 编程器的电源和复位之间的时序恰好到达此窗口、并使一些器件感到惊慌。  因此、我添加了一个延迟、作为快速解决方案。   

    也许在未来、我可以继续改进它、并找到一种防止电源、复位或编程中断的方法。  

    谢谢、

    JD