博客 / 詳情

返回

痞子衡嵌入式:i.MXRT中FlexSPI外設速度上限的三個影響因子(數據手冊裏的糾結)


  大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家分享的是i.MXRT中FlexSPI外設速度上限的三個影響因子

  FlexSPI 幾乎是開發 i.MXRT 系列繞不開的外設,XIP 性能、OTA 設計、顯存擴展這些話題均不可避免要和 FlexSPI 打交道,這其中我們最關心的點就是 FlexSPI 的速度上限,這直接影響最終應用程序的運行性能。

  在芯片參考手冊(RM)裏更多地是介紹 FlexSPI 共性功能,而速度這個性能方面的參數會因平台而異(不同芯片型號之間可能有一定差異),因此這些差異化信息往往會被放在芯片數據手冊(DS)裏介紹。今天痞子衡以 RT1180 數據手冊裏關於 FlexSPI 速度方面的糾結性描述為例來聊聊影響 FlexSPI 速度上限的三個關鍵因子:

一、FlexSPI外設性能設計

  從 i.MXRT 家族第一個成員 RT1050 (2018年發佈)到最新的 RT1180(2025年發佈),其中 FlexSPI 外設的功能設計經歷了多次迭代和優化,但是始終堅持了同一個上限性能標準,那就是滿足 200MHz SDR/DDR 時序(這裏僅指外設本身,但在 MCU 系統裏最終性能可能會有損失)。

  FlexSPI 外設本身性能上限原則上也算一個影響因子,但考慮到 i.MXRT 家族全系列這個指標都一樣,所以我們就不特別指出這個影響因子。

二、清爽的RT3digits數據手冊

  我們打開 RT500 的 DS(Rev.3),找到 FlexSPI Flash interface 小節,可以清晰地看到 FlexSPI 性能能夠達到本身上限,所以這裏沒有啥疑義。(關於 RX Clock source 選項解釋詳見痞子衡舊文《i.MXRT中FlexSPI外設採樣時鐘源》)

  這裏有必要指出影響 FlexSPI 性能上限的第一個因子,那就是 VDDCORE 電源電壓。從下表可以看出,RT500 在不同電壓等級下,FlexSPI 的最大時鐘頻率是不同的:

  此外如果有些 FlexSPI Port 沒有將 DQS 信號從 PAD 引出,那麼最大性能也是達不到的,比如 RT600 PortB。由於這個因子屬於特殊情況(更多詳見痞子衡舊文《i.MXRT中不支持DQS的FlexSPI引腳組》),這裏我們也不將其特別指出。

  美中不足的是 RT3digits 系列的數據手冊裏未發現 I/O AC 參數表(最大頻率 fmax, 上升時間 tr, 下降時間 tf 等),這可能是因為 RT3digits 來源於 LPC 平台,而 LPC 系列的數據手冊裏也找不到 fmax,關於這個 fmax 有什麼用,下一節我們會細講。

三、從糾結的RT1180數據手冊引出三個影響因子

  在講 RT1180 之前,我們先簡單過一下 RT10xx 系列數據手冊,它們都是單核產品,MCU 系統架構相對簡單,所以 FlexSPI 性能描述也比較清爽,雖然上限沒達到 SDR/DDR 200MHz,但是超頻跑也不是完全不可以,恩智浦芯片設計 Margin 一般都會留得比較足。另外 I/O AC 參數表裏雖然沒有 fmax,但是由於各 PAD 組性能並沒有差異,這裏我們暫時也沒必要進一步討論。

MCU型號 FlexSPIn_MCR0[RXCLKSRC]
0x0 0x1 0x3
RT1010 SDR 60MHz, DDR 30MHz SDR 133MHz, DDR 66MHz SDR/DDR 133MHz
RT1020/1040/1050/1060 SDR 60MHz, DDR 30MHz SDR 133MHz, DDR 66MHz SDR/DDR 166MHz

  現在我們來看雙核產品 RT1170/1180,這裏數據手冊描述就開始變得有點糾結了。從 RT1180 的數據手冊(Rev.7)裏,我們可以看到一些比較有意思的細節。首先是 PAD 被分類了,有 fmax 208MHz/200MHz 高速 PAD 和 fmax 104MHz 標準 PAD 之分,這是影響 FlexSPI 性能上限的第二個因子,如果 PAD fmax 性能不夠,那麼 FlexSPI 的最大頻率也會受限。

  從 RT1180 數據手冊裏我們看到 FlexSPI parameters 小節裏提及的上限性能仍然是 166MHz SDR/DDR,這似乎和 RT1050 它們沒啥區別,彆着急我們繼續往下看:

  細心找,你會發現如下 SDR200M 和 DDR200M 的補充表格,這説明 RT1180 實際上是支持 200MHz SDR/DDR 的,但是僅在 FlexSPI1 上(注意 RT1180 有兩個 FlexSPI 外設)。這似乎是影響 FlexSPI 速度上限的第三個因子(即 FlexSPI 外設編號),不同編號的 FlexSPI 可能有不同的性能上限,這個結論既對又不對,並不是 FlexSPI 外設本身性能差異,而是不同編號 FlexSPI 在 MCU 系統架構中的位置不同導致的性能差異(與 PAD 之間的 path 長度),這才是真正的第三個影響因子。

  因此 RT1180 數據手冊裏有如下總結,這個總結綜合了 FlexSPI 性能全部影響因子,還是比較全面的,看到這裏,你應該不會再對數據手冊裏的描述感到糾結了吧!

  至此,i.MXRT中FlexSPI外設速度上限的三個影響因子痞子衡便介紹完畢了,掌聲在哪裏~~~

歡迎訂閲

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

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

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.