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.

[参考译文] MSP430F425:是否可以在信息存储器中节省KWh

Guru**** 2587365 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/619974/msp430f425-is-it-possible-to-save-kwh-in-information-memory

部件号:MSP430F425

尊敬的各位:

我正在使用msp430f42设计一个简单的1相KWh仪表。

到目前为止,我一直在使用EEPROM保存KWh值(4字节)。 因为我只需要4个字节,所以REST内存没有使用,因此是无用的。

这就是为什么我想知道,是否可以在信息存储器中保存KWh (4字节)。 到目前为止,我只使用此内存保存校准值。

如果是,可以写入多少个周期。  

是否有任何特殊的方法。

请帮助。

提前感谢。

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

    是的,您一定可以这样做。 典型的耐久性为10万 循环,最小1万。 信息存储器A和B的大小均为128字节。 您可以擦除一个段的所有内存(将其设置为0xFF),然后始终为要保存的下一个值写入下一个未写入的4字节。 要查找下一个空闲位置,只需搜索下一个0xFF并存储您的数据。 如果句段已满,请擦除句段并从头开始。 这样,在您的情况下,分段的寿命乘以系数32。

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

    流程在概念上似乎正确且完美。

    但我见过许多老年人,他们总是拒绝使用信息存储器来保存KWh数据。

    您是否已尝试并检查设计至少6位数kWh。

    Dennis,我提出这个问题,只是为了克服我在市场上发送产品一年多后丢失KWh数据的担心。

    这就是为什么我要问您是否已检查和验证此流程。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    闪存不关心您存储在其中的信息类型,因此如果您存储kWh,校准值,状态信息或其他信息,它不会产生任何影响。 我没有将任何kWh数据存储到闪存中,因为这不是我正在处理的字段,但我使用信息存储器来存储设备的运行时间等内容。 例如,我有一些设备,我每小时都会向闪存写入数据-如果我不使用这样的机制,闪存可能会在大约一年后就开始死亡。 闪存不会每次都写入同一位置,它会延长设备的整体使用寿命。 为了获得更高的可靠性,您可以添加校验和以确保闪存内容有效。 如果没有,则发出警告。 对于不能丢失的数据,您甚至可以将相同的数据写入两个信息段,并在加载数据后比较其内容-如果存在不匹配,则具有冗余。 请记住,您永远不知道用户(或任何其他外部环境)何时断电-也许您只是在此时写入闪存,然后可能会失败。 或者,您有一些外部电路,可以尽早检测电源损耗,以防止写入闪存失败。 但MSP的信息存储器正是这样的。

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

    谢谢Dennis,

    请向我推荐任何硬件/电路(其成本不能超过EEPROM) ,以防止在断电期间写入闪存失败。

    我通过提供电源故障电路来检测电源故障,但如果电源在例行程序初始化后才开始写入闪存,该怎么办?

    我在电容式电源的3.3 V o/p上使用470uF/25V。

     

    请建议电路用于此目的。

     

     

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

    如果使用F425,您可以使用板载SVS检测3.3V以下的电源损耗,并停止闪存擦除/程序。 但是,这不会帮助防止在写入闪存或擦除过程中断电。 它也不会对峰值有所帮助,因为它的速度有限。

    您还可以使用外部电源电压监控器,该监控器可以在TI网页上找到,您可以在此处根据您的要求进行选择:

    www.ti.com/.../supervisor-reset-ic-products.page

    但是,如果您在修改Flash时拖放,这也不会真正有帮助。 在这种情况下,我总是建议实施内存CRC,以经常检查您的内存内容是否仍然正常。

    我认为附加的应用程序说明还为您提供了一些好的想法,以使您的数据存储更安全。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢Dietmar Walther,

    但请告诉我一件事:如果CRC不匹配,我的意思是还有办法保留KWh数据,还是意味着我丢失了它。

    必须有解决办法。 我的意思是如何防止数据丢失。

    如果有任何电路可防止因断电期间写入闪存不成功而导致数据丢失,请提出建议。

    但是,对于感应功率,我使用通过提供电源故障电路来检测电源故障,但如果电源在例行程序初始化后才开始写入闪存,该怎么办。

    我在电容式电源的3.3 V o/p上使用470uF/25V电压,我是否应该将此电容器增加到1000uF,是否有帮助?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    简单的CRC不会将您的数据返回-它只是为了知道数据是否正确。 冗余可以。 简单的电路可能如下所示:

    使用分压器输入到比较器输入或MCU的ADC,并使用二极管从输入到相对较大的存储电容器,该电容器能够提供足够的功率以进行完整的闪存写入。 输入端的压降会立即被检测到,但存储电容器会使MCU保持活动状态,以便它可以安全地准备"关闭"。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    更正如果CRC在您连续写入信息段时失败,数据将丢失。

    要提高安全性,请实施冗余并写入2个不同的段,以便在内存中有2个副本。 要添加更多安全,请使用3个分段。

    同样,如果您拔下电源,您所描述的正常电容器和内部SVS就足够了。 但是,如果您由于ESD,EMC或短路事件而出现快速下降,这不一定会有帮助。 但这是一个普遍的挑战,与MSP无关。 如果您写入EPROM,并且电源快速关闭,则会出现同样的情况!

    只要检测到内部SVS断电,高电容器就可以在功率下降470uF时提供足够的功率。 但是,如果电源接近0伏,您可能会遇到问题。 原因是在某个时间点,重置电路将使设备重置,这意味着功耗更低。

    这意味着盖子提供的耗材的下降时间会变慢,然后您可以进入某个不确定的供应区域。 请参阅以下用户指南摘要:

    如果您在灰色区域停留更长时间,可能会意外开始做一些不可预知的事情。 因此,仅仅增加上限并不总是最佳解决方案。

    无论如何,大的帽子将有助于在你刚开始行动后就能保证功率损失。 之后,SVS应启动并将设备置于安全状态,这意味着无需进一步的闪存编程,频率降低...

    但请注意电压低于1.8V时电压会缓慢下降。 如果此时可以激活放电盖,使其降至0伏,并确保在再次通电时正确启动,则会正常工作。