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.

msp430F4152 information memory数据丢失

Other Parts Discussed in Thread: MSP430F4152, UNIFLASH, MSP430F5529

利用  information memory 保存数据;原始数据通过编程器下载进去,程序如下:

#pragma location = 0x1040
__root const uint8_t INFO_1[64] = {。。。。。}

现在发现一部分MCU上电读出来的数据有FF FE之类的乱码,上电只读没有写操作。

  • 您是否占用了SegmentA?

    如用户指南中6.2.1 SegmentA on MSP430FG47x, MSP430F47x, MSP430F47x3/4, and MSP430F471xx Devices描述。您需要先unlock SegmentA

    user3673947 说:
    利用  information memory 保存数据;原始数据通过编程器下载进去

    另外请您先确保数据被成功下载进去了

    https://www.ti.com.cn/cn/lit/ug/slau056l/slau056l.pdf

  • msp430f4152是4个段,INFO_A, INFO_B ,INFO_C ,INFO_D ,64字节*4,不是两,128*2,帮忙看下,谢谢啊。
  • 在么,我看论坛有很多人提过这个问题,都没有说怎么解决,你们帮忙看下。。。。
  • 很抱歉,我手边暂时没有F4系列的板子。我之后会使用F5的板子来测试一下
  • 若是可以的话,也请将您的代码私信一下,谢谢
  • 以下是相关的测试代码以及实验结果

    测试代码

    /* --COPYRIGHT--,BSD_EX
     * Copyright (c) 2012, Texas Instruments Incorporated
     * All rights reserved.
     *
     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions
     * are met:
     *
     * *  Redistributions of source code must retain the above copyright
     *    notice, this list of conditions and the following disclaimer.
     *
     * *  Redistributions in binary form must reproduce the above copyright
     *    notice, this list of conditions and the following disclaimer in the
     *    documentation and/or other materials provided with the distribution.
     *
     * *  Neither the name of Texas Instruments Incorporated nor the names of
     *    its contributors may be used to endorse or promote products derived
     *    from this software without specific prior written permission.
     *
     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
     * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
     * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
     * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
     * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
     * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
     * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     *
     *******************************************************************************
     *
     *                       MSP430 CODE EXAMPLE DISCLAIMER
     *
     * MSP430 code examples are self-contained low-level programs that typically
     * demonstrate a single peripheral function or device feature in a highly
     * concise manner. For this the code may rely on the device's power-on default
     * register values and settings such as the clock configuration and care must
     * be taken when combining code from several examples to avoid potential side
     * effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
     * for an API functional library-approach to peripheral configuration.
     *
     * --/COPYRIGHT--*/
    //******************************************************************************
    //  MSP430F552x Demo - Flash In-System Programming w/ Long-Word write at 0x1800
    //
    //  Description: This program first erases flash seg D, then it writes a 32-bit
    //  value to memory location 0x1800 using long-word write mode. Long-word write
    //  provides faster write than byte/word mode.
    //  ACLK = REFO = 32kHz, MCLK = SMCLK = default DCO 1048576Hz
    //
    //                MSP430x552x
    //            -----------------
    //        /|\|              XIN|-
    //         | |                 |
    //         --|RST          XOUT|-
    //           |                 |
    //
    //
    //   Bhargavi Nisarga
    //   Texas Instruments Inc.
    //   April 2009
    //   Built with CCSv4 and IAR Embedded Workbench Version: 4.21
    //******************************************************************************
    
    #include <msp430.h>
    
    int main(void)
    {
      unsigned long * Flash_ptrD;               // Initialize Flash pointer Seg D
      unsigned long value;
      WDTCTL = WDTPW+WDTHOLD;                   // Stop WDT
    
      Flash_ptrD = (unsigned long *) 0x1800;    // Initialize Flash pointer
      value = 0x12345678;                       // Initialize Value
      FCTL3 = FWKEY;                            // Clear Lock bit
      FCTL1 = FWKEY+ERASE;                      // Set Erase bit
      *Flash_ptrD = 0;                          // Dummy write to erase Flash seg
      FCTL1 = FWKEY+BLKWRT;                     // Enable long-word write
      *Flash_ptrD = value;                      // Write to Flash
      FCTL1 = FWKEY;                            // Clear WRT bit
      FCTL3 = FWKEY+LOCK;                       // Set LOCK bit
      while(1);                                 // Loop forever, SET BREAKPOINT HERE
    }
    

    测试过程

    1 在CCS内新建工程,写入代码,编译成功后连接开发板调试

    可以发现程序运行后,0x1800处已经成功写入数据

    2 而后板子断电,而后重新连接电脑上的uniflash来读memory,数据依然存在

  • 在MSP430F5529中,0x1800是information memory的D

  • msp430F4152的infoD保存的是不是校准参数,我这边测试也可以下载进去,只不过是多次上电,下电有个别数据出错了
  • 一般是放在 SegmentA的
  • 在哪里可以查到msp430F4152的A、B、C、D那个区域不能写数据
  • 都可以写数据的,只是A中保存了器件相关的校准信息,所以设置了LOCK位,只要lock位为0,也是可以进行擦除和编程的
  • 另外需要注意

  • 是不是SegmentA不能擦除?msp430F4152 这些数据在A吗?
  • 可以擦除,但是一般不建议擦除,因为包含了器件相关的校准信息等
  • 感谢耐心支持。
  • 很高兴能帮到您!后续有其他问题可以在论坛发新帖,我们会在第一时间为您解答