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.

[参考译文] CC2640R2F:外部闪存 MX25R8035F 读写问题

Guru**** 2551200 points
Other Parts Discussed in Thread: CC2640R2F

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/710890/cc2640r2f-external-flash-memory-mx25r8035f-read-write-issue

器件型号:CC2640R2F

您好!

我正在使用 CC2640R2F Launchpad 读取对板载外部闪存 MX25R8035F 的写入操作。 我将  simplelink_cc2640r2_sdk_1_40_00_45用于外部闪存驱动程序(ExtFlash.c 和 ExtFlash.h)。

我能够写入特定地址、并且只能从该地址读取一次相同的值。 如果我向该地址写入其他值、则无法读取该值(获取任何随机值)。

例如、如果我将"test"写入地址0x00100、那么我可以从0x00100读取"test"

如果我将"ABCD"写入地址0x00100、那么我从0x00100读取"@@@@"。

这意味着我无法将其他值写入该地址。

SPI 配置:

比特率:4MHz

帧格式:0

模式:阻塞

问题可能出在哪呢?  

感谢您的支持。

谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您如何写入此外部闪存? 您是否参考 dev.ti.com/.../上的 nvsspi 示例
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../1055.ExtFlash.ce2e.ti.com/.../0407.ExtFlash.h

    您好!

    很抱歉耽误你的回复。

    我正在使用 TI 提供的外部闪存驱动程序(ExtFlash.c 和 ExtFlash.h)。  

    请查找附加的文件。

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

    您是否已查看用于外部存储的 NVS 驱动程序? 您必须下载较新的 SDK 版本、但与 ExtFlash API 相比、它是一个改进得多的驱动程序。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对此进行了任何更新?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    器件型号:CC2640R2F

    这是对 DigitalEye 的回复  

     他的问题

    我正在使用  CC2640R2F Launchpad 读取对板载外部闪存  MX25R8035F 的写入操作。 我将  simplelink_cc2640r2_sdk_1_40_00_45用于 外部闪存驱动程序(ExtFlash.c 和 ExtFlash.h)。

    我能够写入特定地址、并且只能从该地址读取一次相同的值。 如果我向该地址写入其他值、则无法读取该值(获取任何随机值)。

    例如、如果我将"test"写入地址 0x00100 、那么我可以从 0x00100读取"test"

    如果我将"ABCD"写入地址 0x00100 、那么我从 0x00100读取"@@@@"。

    遗憾   的是、这是 MX25R8035F 的一个属性。如果您阅读数据表中的详细内容、您会发现"写入"不是您认为的"写入"。

    毫无疑问、您向闪存发送了一条"清除"命令、然后将您的"测试"写入 存储器读回、一切正常。

    在这个特定芯片的 Flash 存储器内部的一些背景下 ,Flash 存储器通过欺骗来实现了极低的功耗... 您发送的"清除"命令实际上会将已清除块中的所有位设置为'1'  

    然后、当您写入特定的存储器位置时、"Write"命令只会切换需要为"0"的位、而仅切换这些位  、因此每次写入相同位置时、根据您写入的新数据、只需切换更多位 "0"、因此 当您不断在同一位置写数据时、您很快就会收到垃圾。

    如果您需要重置到相同的位置,则至少需要再次清除该块 (最小块大小为4K,我认为 对于该芯片)...

    该存储器更适合用作静态长期存储数据、或用于存储 可能已下载用于 OTA 更新的代码图像...  

    如果要将其用作任何动态工作存储器的扩展、例如将其用作连续收集实时数据的循环缓冲器、则会很糟糕。

    (笑声) 如果这是我 第一次遇到这块芯片时遇到的安慰、我也会被卷入其中。

    但愿这对您有所帮助

    William