查看: 3977|回复: 3

[原创] 【经验分享】MIMXRT1064 内部flash操作代码

[复制链接]

该用户从未签到

656

主题

6312

帖子

0

超级版主

Rank: 8Rank: 8

积分
19936
最后登录
2024-4-19
发表于 2020-3-20 19:51:02 | 显示全部楼层 |阅读模式
本帖最后由 小恩GG 于 2020-3-20 19:52 编辑

【经验分享】MIMXRT1064 内部flash操作代码

一,文档简介

     写本篇经验分享的原因是,有些网友想单独操作MIMXRT1064的内部flash,都知道MIMXRT1064的内部flash实际上是一颗4MB Winbond W25Q32JV 的芯片放在RT1064芯片内部,然后通过QSPI 如下接口连接:

1.jpg

在官方的RT1064 SDK代码中,有flexpi接口连接QSPI 的代码:

SDK_2.7.0_EVK-MIMXRT1064\boards\evkmimxrt1064\driver_examples\flexspi\nor\polling_transfer

但是如果仔细查看,可以发现这个代码是通过FlexSPIA接口连接MIMXRT1064-EVK板上外部的ISSI QSPI 芯片:

2.jpg

那么如果要修改官方SDKflexSPI代码,如果实现与内部winbond芯片的连接呢?本篇文章讲仔细讲解在SDK2.7.0MCUXpresso工程具体需要修改的点,并且给出测试结果,其他IDE修改代码修改方式一样。



二,代码说明

     ISSI IS25WP064芯片和winbond W25Q32JV都是QSPI接口的QSPI flash,那么它们到底有哪些不同点呢?

1. QE bit位置不同

3.jpg

W25Q32JV QE位置为S9 IS25WP064bit 6,所以我们需要修改关于QE的代码:

3-1.jpg

WriteValue从之前的0X40改为0X0200

2. Flashsector 擦除的命令不同

查看代码可以发现,SDK代码里面擦除的命令为0XD7

   /*Erase Sector  */

   [4 * NOR_CMD_LUT_SEQ_IDX_ERASESECTOR] =

       FLEXSPI_LUT_SEQ(kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, 0xD7, kFLEXSPI_Command_RADDR_SDR, kFLEXSPI_1PAD, 0x18),

然后查看两块芯片的数据手册,发现命令如下:

4.jpg

其实0X20 4K sector erase的共同运行命令,所以完全可以修改0XD70X20,因为winbond不能支持0XD7擦除命令。

3. 修改flash模块时钟

5.jpg

时钟修改为133Mhz

4.不需要的配置FlexSPIA接口的Pinmux代码可以去掉

5-1.jpg

5. 代码修改为从内部RAM运行

  因为内部QSPI flash不能支持RWW功能,所以操作flash的代码需要放到内部RAM运行,修改如下:

6.jpg

到目前为止,所有的修改已经完成,可以进入测试阶段,烧录RAM看功能


三,测试结果

1. 初始化flexSPI,读取VID

result1.jpg

读出0XEF,正确结果

2. 擦除命令

result2.jpg

之前0X70004000区域是有数据的,经过sector擦除,都变成0XFF,说明擦除成功。


3. 编程命令

result3.jpg

可以看到0X70004000区域已经有需要写入的数据,编程命令也操作成功。

到目前为止,所有的命令均已经成功,所以该程序可以准确访问内部flash了。

evkmimxrt1064_flexspi_nor_polling_internal_transfer.rar (645.94 KB, 下载次数: 100)
回复

使用道具 举报

  • TA的每日心情
    奋斗
    2019-11-19 11:08
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    16

    帖子

    0

    注册会员

    Rank: 2

    积分
    96
    最后登录
    2022-1-10
    发表于 2020-11-6 11:04:50 | 显示全部楼层
    刚接触,学习
    good good study,day day up
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    11 小时前
  • 签到天数: 590 天

    [LV.9]以坛为家II

    51

    主题

    2209

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    6995
    最后登录
    2024-4-19
    发表于 2020-12-31 11:28:07 | 显示全部楼层
    请教一下“因为内部QSPI flash不能支持RWW功能,所以操作flash的代码需要放到内部RAM运行”是不是意味着如果是代码运行在内部QSPI flash就不能在对内部flash进行写操作了?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    656

    主题

    6312

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    19936
    最后登录
    2024-4-19
     楼主| 发表于 2020-12-31 13:57:34 | 显示全部楼层
    andeyqi 发表于 2020-12-31 11:28
    请教一下“因为内部QSPI flash不能支持RWW功能,所以操作flash的代码需要放到内部RAM运行”是不是意味着如 ...

    正确
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-19 21:17 , Processed in 0.128267 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表