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/MSP430F5342:MSP430f5342

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/815145/ccs-msp430f5342-msp430f5342

器件型号:MSP430F5342

工具/软件:Code Composer Studio

您好!

我想在 msp430f5342的信息 B 存储器中存储4种不同类型的数组、但是每次写入数据时、我都必须根据系列用户指南中给出的示例完全擦除信息 B 并写入新数据。 这样、我就无法擦除信息 B 的特定字节  

是否有任何方法可以擦除信息存储器的特定数据或任何新方法?

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

    您好!

    感谢您发帖、我们将开始对此进行研究。

    祝你一切顺利、

    Colin Adema

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

    您好 Samatha、

    您是否为 MSP430F5xxx 器件使用 Driverlib? Driverlib 具有可用于写入闪存特定段的函数。 您可以在器件网页上的"软件"下找到它。

    请参阅下面的代码和附带的屏幕截图、我使用相应的数据创建了4个数组、并分别写入每个数组、而不会影响其他数组。

    #pragma LOCATION (array_8、0x1900);//指定数组位置
    #pragma LOCATION (array_8_2、0x190a);
    #pragma LOCATION (array_16、0x1914);
    #pragma LOCATION (array_32、0x1928);

    uint8_t array_8[10]={};//定义数组
    uint8_t array_8_2[10]={};
    uint16_t array_16[10]={};
    uint32_t array_32[10]={};

    uint8_t DATA_8[5]={1、2、3、4、5};//数据
    uint16_t DATA_16[5]={1、2、3、4、5};
    uint32_t DATA_32[5]={1、2、3、4、5};

    uint8_t * segBstart =&array_8[0];//段 B 开始

    int main (空)

    WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器

    FlashCtl_eraseSegment (segBstart);//擦除段 B

    FlashCtl_write8 (&data_8[0]、&array_8[0]、5);//写入第一个数组

    FlashCtl_write8 (&data_8[0]、&array_8_2[0]、5);//写入第二个数组

    FlashCtl_write16 (&data_16[0]、&array_16[0]、5);//写入第三个数组

    FlashCtl_write32 (&data_32[0]、&array_32[0]、5);//写入第四个数组


    返回0;


    祝你一切顺利、

    Colin Adema

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

    您好!

    感谢您的回复!

    我不能擦除整个信息 B、而只 能擦除"array_8"并将新数据具体地复制到"array_8"、而不 会干扰信息 B 中的其他数据

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

    您应该尝试下载 driverlib 的更新版本、以防翻译中出现问题。 这里是执行该操作的链接

    http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSP430_Driver_Library/latest/index_FDS.html

    该下载中的闪存控制文件应该具有写入特定位置的函数、就像我在示例中所做的那样。

    请告诉我这是否有帮助!

    祝你一切顺利、

    Colin Adema

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

    我认为答案是、单个段是可以擦除的最小闪存容量。  但是、根据阵列的大小、您可以在 INFOB 中保存它们的连续版本、并且只在 INFOB 已被填满时擦除。  或者、您也可以对主存储器的一个或多个段执行相同的操作。  但是、如果您需要覆盖单个字节或字的功能、则 FR 部分可能更合适。

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

    您好 Samatha、

    我可能误解了你以前的要求、抱歉。

    我同意 George 的说法、我们的 FR 设备似乎更适合您的应用。 FR 器件包含 FRAM、允许单独覆盖字节。

    祝你一切顺利、

    Colin Adema

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

    您好 Samatha、

    问题是什么? 是否已解决?

    祝你一切顺利、

    Colin Adema