痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU啟動那些事(11.2)- FlexSPI NOR連接方式大全(RT1060/1064(SIP))

来源:https://www.cnblogs.com/henjay724/archive/2020/03/01/12390823.html
-Advertisement-
Play Games

i.MXRT1060是緊接著i.MXRT1050之後推出的增強型,在IP數量上進一步增多,尤其是本文重點關註的IP - FlexSPI,i.MXRT1060內部集成了兩個FlexSPI模塊(均是雙通道8bit),相比於i.MXRT1050的單FlexSPI模塊,i.MXRT1060在雙Flash啟動... ...



  大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是恩智浦i.MX RT1060/1064(SIP)兩款MCU的FlexSPI NOR啟動的連接方式

  上一篇文章《FlexSPI NOR啟動連接方式(RT1015/1020/1050)》 寫完之後,痞子衡發給了做線上客戶支持的同事們審閱,受到了同事們的好評,同事們希望這個系列能把所有i.MXRT家族都寫一遍,於是便有了今天的文章。特別提醒閱讀本文時需要有上一篇文章的基礎,因為有一些重覆的內容本文不會贅述。
  今天的主角是i.MXRT1060和i.MXRT1064,說是兩款不同的晶元,其實本質上是一款,因為i.MXRT1064是i.MXRT1060的SIP(System In a Package)版本,簡單的說就是 i.MXRT1060 + 內置QSPI NOR Flash (4MB, 108MHz) = i.MXRT1064。但要真說是一款晶元吧,其實它們確實是兩款不同的晶元,我們今天要聊到的FlexSPI NOR啟動特性(尤其是連接方式)上兩者又不一樣。
  i.MXRT1060是緊接著i.MXRT1050之後推出的增強型,在IP數量上進一步增多,尤其是本文重點關註的IP - FlexSPI,i.MXRT1060內部集成了兩個FlexSPI模塊(均是雙通道8bit),相比於i.MXRT1050的單FlexSPI模塊,i.MXRT1060在雙Flash啟動連接的支持上要更豐富一些。而i.MXRT1064因為有內置Flash,其在單Flash啟動方式則是定死的,永遠從內部Flash啟動,無法選擇從外部Flash啟動。
  i.MXRT1060集成雙FlexSPI的主要用意其實並不是連接兩個Flash,而是一個掛Flash,另一個掛HyperRAM。HyperRAM性能與價格現在與SDRAM相差無幾,但引腳減少了很多,這對於I/O資源使用緊張的i.MXRT項目很有幫助。

一、關於Pin2Pin相容

  我們知道i.MXRT1050和i.MXRT1060均是BGA196封裝,而且它們是Pin2Pin相容,這意味著只要你的代碼里使用的資源在兩個晶元上都存在,那麼這個代碼原則上既可以跑在i.MXRT1050上,也可以跑在i.MXRT1060上。
  你肯定會覺得奇怪,明明i.MXRT1060比i.MXRT1050多了一些IP模塊(比如FlexSPI2),為什麼還能做到Pin2Pin相容,那FlexSPI2模塊的Pinmux跑哪裡去了?且聽痞子衡慢慢解釋,Pinmux分配都在IOMUXC模塊里,i.MXRT1050上每個GPIO共支持ALT0-ALT7共8個選項,i.MXRT1060上關於ALT0-ALT7的定義與i.MXRT1050是一模一樣的,這是Pin2Pin相容的根本原因,但i.MXRT1060上部分GPIO還拓展了ALT8和ALT9,那些新增的IP模塊的Pinmux都在ALT8-ALT9上。
  下表示例了GPIO_EMC[11:9]的ALT定義,可以看到ALT0-ALT7的定義在兩個晶元上是一樣的,但是i.MXRT1060上多了ALT8定義,這正是FlexSPI2的部分Pinmux。

二、涉及FlexSPI引腳

2.1 BootROM指定

  前面講了,既然i.MXRT1060與i.MXRT1050是Pin2Pin相容的,那麼它們的BootROM在FlexSPI NOR啟動的支持上是不是也一樣的呢?你猜對了,雖然i.MXRT1060有兩個FlexSPI模塊,但是它的BootROM僅指定了從FlexSPI1啟動,與i.MXRT1050是完全一致的
  我們可以在i.MXRT1060晶元參考手冊System Boot這一章節找到BootROM指定的FlexSPI NOR引腳,痞子衡整理如下:

  下表適用於i.MXRT1060(適用全系列封裝):

  i.MXRT1064內置了一片QSPI Flash,這片Flash固定連在FlexSPI2 PortA上,具體PAD是在GPIO_SPI分組裡,但是你在晶元手冊里根本找不到GPIO_SPI分組,因為這是晶元封裝內部的I/O,沒有引到外部BGA196封裝上。為了充分利用片內Flash,其BootROM指定了僅從片內Flash所連接的FlexSPI2啟動
  下表適用於i.MXRT1064(適用全系列封裝):

2.2 BootROM未指定

  在此也列出不在BootROM指定的FlelxSPI NOR引腳,方便後續設計雙Flash時參考。

  下表適用於i.MXRT106x(適用全系列封裝):

三、單Flash連接方式

3.1 對於i.MXRT1060(3種)

  參考上一篇文章《FlexSPI NOR啟動連接方式(RT1015/1020/1050)》 的 《二、單Flash連接方式(3種)》章節,在這方面,i.MXRT1060與i.MXRT1050是一樣的。

3.2 對於i.MXRT1064(1種)

  單Flash連接方式對於i.MXRT1064來說就是一種,直接使用內部QSPI Flash,用戶板級設計根本不需要再考慮外掛Flash。這也是i.MXRT1064相比i.MXRT1060的最大意義所在。

四、雙Flash連接方式

  i.MXRT1050/1020僅含單FlexSPI模塊,最大可以同時掛4片QSPI Flash,i.MXRT106x的兩個FlexSPI模塊當然理論上可以同時掛8片Flash。僅考慮接兩片Flash的話,選擇真的是太多了。

4.1 對於i.MXRT1060(18+4種)

  參考上一篇文章《FlexSPI NOR啟動連接方式(RT1015/1020/1050)》 的 《三、雙Flash連接方式(18種)》章節,在這方面,i.MXRT1060也同樣支持i.MXRT1050所支持的18種連接方式。需要註意的是這18種連接均是基於FlexSPI1。
  除了上述18種連接外,在i.MXRT1060上還可以實現FlexSPI1和FlexSPI2上各連接一個Flash,這是i.MXRT1060相比i.MXRT1050的獨特優勢,使用兩個FlexSPI模塊可以天然解決在Code Flash中原地執行代碼去擦寫Data Flash這個難題
  所在在i.MXRT1060上又新增瞭如下4種組合方式:

Num FlexSPI1 1st Option
BootROM指定
FlexSPI2
BootROM未指定
A_SS0 A_DATA[3:0]
A_SCLK
A_SS0 A_SS1 A_DATA[3:0]
A_SCLK
B_SS0 B_SS1 B_DATA[3:0]
B_SCLK
1
Code

Data
2
Code

Data
3
Code

Data
4
Code

Data

4.2 對於i.MXRT1064(3+16種)

  i.MXRT1064片內Flash固定為Code Flash,因此我們只需要外掛一片Data Flash就行。所以對於i.MXRT1064來說,雙Flash方案需要從頭設計,有了前面的基礎,咱們按葫蘆畫瓢吧:

Note:下麵組合方案中第17種方案,因為涉及跟內部QSPI共信號,所以外掛Flash需跟內部QSPI Flash型號保持一致。恩智浦並沒有公佈i.MXRT1064內部QSPI具體型號,但其實這也不是秘密,自己網上搜一搜相關信息吧,痞子衡就不在這裡透露了。

Num FlexSPI 1st Option FlexSPI 2nd Option FlexSPI2
BootROM未指定 BootROM指定 BootROM未指定
A_SS0 A_SS1 A_DATA[3:0]
A_SCLK
B_SS0 B_SS1 B_SCLK B_DATA[3:0] A_SS1 B_SS0 A_SS0 A_SS1 A_DATA[3:0]
A_SCLK
B_DATA[3:0] A_SS0 A_DATA[3:0]
A_SCLK
A_SS1 B_SS0 B_SS1 B_DATA[3:0]
B_SCLK
1
Data

Code
2
Data

Code
3
Data

Code
4
Data

Code
5
Data

Code
6
Data

Code
7
Data

Code
8
Data

Code
9
Data

Code
10
Data

Code
11
Data

Code
12
Data

Code
13
Data

Code
14
Data

Code
15
Data

Code
16
Data

Code
17
Code

Data
18
Code

Data
19
Code

Data

五、雙FlexSPI主要用意

  最後再簡單介紹一下雙FlexSPI的主要用意,我們知道對於一些帶LCD屏的i.MXRT項目,常常需要大的顯存,晶元內部雖有高達1MB的RAM,但往往也捉襟見肘,所以我們一般還需要外掛一片RAM。在i.MXRT1050上我們是通過SEMC介面來接SDRAM,而到了i.MXRT1060上,除了接SDRAM之外,我們還可以通過FlexSPI介面連HyperRAM,HyperRAM相比SDRAM在I/O占用上要少一些,這樣我們就可以省出更多的I/O用作其他設計。這才是雙FlexSPI的核心價值。

  至此,恩智浦i.MX RT1060/1064(SIP)兩款MCU的FlexSPI NOR啟動的連接方式痞子衡便介紹完畢了,掌聲在哪裡~~~

歡迎訂閱

文章會同時發佈到我的 博客園主頁CSDN主頁微信公眾號 平臺上。

微信搜索"痞子衡嵌入式"或者掃描下麵二維碼,就可以在手機上第一時間看了哦。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Introduction: 在C#6及以上版本中,加入了一項特別好用的運算符:Null條件運算符?.和?[]可以用來方便的執行判空操作,當運算符左側操作數不為null時才會進行訪問操作,否則直接返回null。這極大的簡化的判空代碼的書寫,但在使用過程中仍然需要註意一些問題,以免其帶來我們意想不到的後 ...
  • 正如上一章介紹,WPF動畫通過一組動畫類(Animation類)表示。使用少數幾個熟悉設置相關信息,如開始值、結束值以及持續時間。這顯然使得它們非常適合於XAML。不是很清晰的時:如何為特定的事件和屬性關聯動畫,以及如何在正確的時間觸發動畫。 在所有聲明式動畫中都會用到如下兩個要素: 故事板。故事板 ...
  • 在上一篇文章abp(net core)+easyui+efcore實現倉儲管理系統——入庫管理之一(三十七) 中我們創建了入庫單的實體類,並使用CodeFirst功能創建了資料庫表,接下我們來創建一些有關與入庫單有關的DTO類與查詢分頁類。 ...
  • 其實這個坑呢,說實話是非常的有意思,因為當時這個坑弄得我甚至是以為編譯器壞了。 昨天我在寫關於豆瓣的爬蟲的時候,有這樣一個需求: 我想抓這個a標簽,拿他的鏈接地址。這個時候在瀏覽器里右鍵該標簽,複製其xpath結果如下: //*[@id="content"]/div/div[1]/div[2]/ta ...
  • 實現代碼 <TextBlock Text="錄像中" FontSize="48" Foreground="#ED4646" HorizontalAlignment="Center" FontWeight="Medium" x:Name="TextBlockRecording"> <TextBlock ...
  • VMware 增加Linux系統 1、啟動VMware,進入主界面 2、點擊“ 創建新的虛擬機 ”,進入創建虛擬機嚮導界面,建議初學者選擇“ 典型(推薦) ” 3、點擊“下一步”按鈕,進入“ 安裝客戶機操作系統 ”界面選擇“安裝來源”,建議初學者選擇第三項,創建空白硬碟的虛擬機 如果有一定經驗的話, ...
  • RHEL Linux 7的防火牆firewalld學習總結 本文介紹一下RHEL 7下的防火牆配置工具firewalld。 在RHEL 7之前,我們一般使用iptables防火牆管理工具,其實,iptables與firewalld都不是真正的防火牆,它們都只是用來定義防火牆策略的防火牆管理工具而已,... ...
  • 磕叨 有幸入到一個規模不算小的公司,算是對走彎路的過往的一個終結,慢慢適應吧。 新公司已上市,相比小公司,規矩比較多,現在要磕到的一條就是不能自帶吃飯的家伙(macbook),只能用公司配的(windows),新來的員工不好意思申請公司配macbook,而且,假設我是leader,我大概率也不會批的 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...