天天看點

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

i.MXRT1060是緊接着i.MXRT1050之後推出的增強型,在IP數量上進一步增多,尤其是本文重點關注的IP - FlexSPI,i.MXRT1060内部內建了兩個FlexSPI子產品(均是雙通道8bit),相比于i.MXRT1050的單FlexSPI子產品,i.MXRT1060在雙Flash啟動連接配接的支援上要更豐富一些。而i.MXRT1064因為有内置Flash,其在單Flash啟動方式則是定死的,永遠從内部Flash啟動,無法選擇從外部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項目很有幫助。

  • Note1 : i.MXRT1060 可啟動 NOR Flash 僅能挂載在 FlexSPI1 上,在系統映射位址空間配置設定上,給 FlexSPI1 配置設定的起始位址是 0x60000000,是以 XIP 應用程式需要從 0x60000000 之後的空間開始連結
  • Note2 : i.MXRT1064 内部封裝的 NOR Flash 挂載在 FlexSPI2 上,在系統映射位址空間配置設定上,給 FlexSPI2 配置設定的起始位址是 0x70000000,是以 XIP 應用程式需要從 0x70000000 之後的空間開始連結

一、關于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。

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

二、涉及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.MX RT1xxx系列MCU啟動那些事(11.B)- FlexSPI NOR連接配接方式大全(RT1060/1064(SIP))

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

  下表适用于i.MXRT1064(适用全系列封裝):

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

2.2 BootROM未指定

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

  下表适用于i.MXRT106x(适用全系列封裝):

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

三、單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的最大意義所在。

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

四、雙Flash連接配接方式

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

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

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_SS1 B_SS0 B_SS1

B_DATA[3:0]

B_SCLK

1

Code

Data
2
3
4

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具體型号,但其實這也不是秘密,自己網上搜一搜相關資訊吧,痞子衡就不在這裡透露了。
FlexSPI 1st Option FlexSPI 2nd Option
BootROM未指定 BootROM指定
B_SCLK
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

五、雙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 RT1xxx系列MCU啟動那些事(11.B)- FlexSPI NOR連接配接方式大全(RT1060/1064(SIP))

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

歡迎訂閱

文章會同時釋出到我的 部落格園首頁、CSDN首頁、微信公衆号 平台上。

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

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

  最後歡迎關注痞子衡個人微信公衆号【痞子衡嵌入式】,一個專注嵌入式技術的公衆号,跟着痞子衡一起玩轉嵌入式。

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

  衡傑(痞子衡),目前就職于恩智浦MCU系統部門,擔任嵌入式系統應用工程師。

  專欄内所有文章的轉載請注明出處:http://www.cnblogs.com/henjay724/

  與痞子衡進一步交流或咨詢業務合作請發郵件至 [email protected]

  可以關注痞子衡的Github首頁 https://github.com/JayHeng,有很多好玩的嵌入式項目。

  關于專欄文章有任何疑問請直接在部落格下面留言,痞子衡會及時回複免費(劃重點)答疑。

  痞子衡郵箱已被私信擠爆,技術問題不推薦私信,堅持私信請先掃碼付款(5元起步)再發。