i.MX RT1020 擦寫外部 Flash

關鍵字 :i.MX RT1020Flashrt1064

對於 NXP i.MX RT 系列的 MCU ,一般是免不了與 SPI Flash 打交道的,即使那些擁有內部 Flash 的型號(i.MX RT1064 等),實際上內部也是與 flexspi外設相連。當我們需要存儲某些數據到 Flash 或者實現 BootLoader功能的時候就需要對其進行讀寫,官方的例程都是針對 EVK 上的 Flash 來編寫,然後大部分的用戶用的 Flash 都不一樣,這篇文章將介紹通過 flexspi 對華邦 Flash 讀寫擦除。

  

硬體平台:i.MX RT1020 EVK

Flash : W25Q64JVSIQ

SDK 版本:2.12.1

IDE: MCUXpresso

 

我們先導出 flexspi 的例程:evkmimxrt1020_flexspi_nor_polling_transfer

 

 

對於 SPI Flash 的操作,是通過 SPI 發送對應的命令,然後接受返回的數據,而 flexspi 外設中有一個 LUT 表來預存一些會用的指令,接下來就需要修改 LUT 表。

下圖標出了常用的 flash 指令:

 

  

在代碼中對這些部分逐一修改:

 

 

(1)JEDEC ID

 

 

由於華邦返回的 ID 有 24bit,將對應存儲變量和傳參改為 32bit,另外讀取 ID 函數裡面做以下修改:

 

 

(2)Write Enable

不需要修改

 

(3)Page Program

同樣不需要修改

 

 

(4)Sector Erase

擦除命令有所不同,這裡改為 0x20,否則會擦除失敗:

 

修改完成後將代碼重新編譯,進調試:

首先可以看到讀 ID 部分,ID 為 EF4017 :

 

 

接下來通過 jflash 回讀數據,可以看到對應位置已經寫入預期數據:

 

 

其實不難看出,換不同家 Flash ,主要是對比 Flash 的指令,在 LUT 表中對應修改,這樣才能正常擦寫 Flash 。

 



參考資料:

《W25Q64JVSIQ datasheet》

https://item.szlcsc.com/3325446.html

 

《IMXRT1020RM》

https://www.nxp.com.cn/

 

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論