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.

[参考译文] RTOS/LAUNCXL-CC2650:从外部闪存读取/写入时出现意外行为(MX25R8035F)

Guru**** 2589300 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/578617/rtos-launchxl-cc2650-unexpected-behavior-while-reading-writing-from-external-flash-mx25r8035f

部件号:LAUNCHTXL-CC2650

工具/软件:TI-RTOS

我正在使用 ExtFlash API 对外部闪存执行读写操作。

在执行以下代码时,我遇到了意外的行为:

uINT8_t we [9]="9.87654321亿";
uint8_t pri500[9];
uint8_t pri532[9];
uint8_t post500[9];
uint8_t post532[9];
ExtFlash_Close();
ExtFlash_open();

res = ExtFlash_Read (0x500,9,pri500);
RES = ExtFlash_Read (0x532,9,pri532);
RES = ExtFlash_write (0x500,9, WE);
res = ExtFlash_write (0x532,9,WE);
res = ExtFlash_Read (0x500, 9,post500);
res = ExtFlash_Read (0x532,9,post532); 

此代码将相同的数据"9.87654321亿"写入第一个扇区(0x500,0x532)上的两个不同地址。 在写入之前和之后,将读取来自这些地址的数据。

以下是调试会话的打印屏幕:

这是意外的,因为写入前后的读取字节相同。

我以为这可能是一个受限区域,但根据( Macronix的)文档,受保护区域在0x000-0x3FF之间。

我错过了什么吗?

非常感谢任何想法或有用的见解。

谢谢!

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

    我找到了一个解决方案,尽管我无法解释它为什么起作用。

    通过在每次写入前擦除数据(从闪存),读取值 将达到预期值。

    我希望有人会觉得这很有用。

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

    我没有研究过Macronix数据表,但这可能是一项要求?

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

    您好Mega,

    今天面临同样的问题。

    感谢您的解决方案,它对我也很有用

    此致,

    Michael