最近碰到一個客戶,他們在 i.MX RT500 上使能了 FlexSPI->MCR0[RXCLKSRC] = 2(即 loopbackFromSckPad),這個選項字面上的意思是設(shè)置讀選通采樣時鐘源為 SCK 引腳,這個選項在恩智浦官方的代碼包里未曾使能過。
客戶在使用過程中遇到高頻時 SCK 引腳被降壓的問題(從正常的 1.8V 降至 1.2V),那么這個 loopbackFromSckPad 選項到底是什么作用,以及有什么使用限制呢?
注1: 參考手冊里顯示支持loopbackFromSckPad選項的型號有 i.MX RT1040/1050/1060/1064/1180/500
注2: 參考手冊里沒有提及支持loopbackFromSckPad選項的型號有 i.MX RT1010/1015/1020/1024/1160/1170/600
一、為什么存在Read Strobe?
對于串行 SPI 接口存儲器,F(xiàn)lexSPI 外設(shè)主要支持如下兩種讀數(shù)據(jù)時序:一是所謂的經(jīng)典 SPI 模式,IO0 (MOSI) 專用于發(fā)送命令和地址,IO1 (MISO) 專用于接收數(shù)據(jù)(圖中上面的時序)。二是 Multi-I/O SPI 模式,SIO[n:0] 一起用于發(fā)送命令地址以及接收數(shù)據(jù)(圖中下面的時序)。
顯然經(jīng)典 SPI 模式下 IO[1:0] 是單向的,而 Multi-I/O SPI 模式下,SIO[n:0] 是雙向的。當(dāng) SIO 用于雙向傳輸時,過程中必然存在引腳方向切換,而 FlexSPI 外設(shè)在處理 SIO 方向切換時,無法做到零等待周期讀取數(shù)據(jù),這就是為什么 Multi-I/O SPI 讀時序中總是會存在 Dummy 周期。
因為 Dummy 周期的存在,F(xiàn)lexSPI 外設(shè)內(nèi)部實際上有一個 Read Strobe 信號(即 DQS)來控制數(shù)據(jù)的選通性(即什么時候開始數(shù)據(jù)有效,將數(shù)據(jù)存入內(nèi)部 FIFO)。更直白點(diǎn)說,Read Strobe 信號的存在就是由于 FlexSPI 外設(shè)無法支持如下這種情況的讀時序(下圖中 COMMAND 實際應(yīng)為 COMMAND ADDR)。
二、FlexSPI內(nèi)部Read Strobe設(shè)計
在i.MX RT參考手冊里有如下 FlexSPI 前端采樣單元框圖,其中 ipp_ind_dqs_fa/b_int[x] 即是 Read Strobe 信號,它控制著 FIFO 中實際數(shù)據(jù)的存儲。
ipp_ind_dqs_fa/b_int[x] 信號共有四種來源,最原始的信號源由 FlexSPI->MCR0[RXCLKSRC] 選擇,中間可能還會經(jīng)過 DLLxCR 單元(這部分以后會另寫文章單獨(dú)介紹)、Phase Chain 單元做處理,然后送到采樣單元里。
下圖是 FlexSPI->MCR0[RXCLKSRC] = 0 的情況,此時 Read Strobe 經(jīng)由 ipp_do_dqs0_fa/b 純內(nèi)部 loopback 回來,沒有經(jīng)過任何延遲單元。這種配置一般僅用于經(jīng)典 SPI 傳輸模式(低速 60MHz SDR 場合),適用低容量 SPI NOR / EEPROM,這時候 FlexSPI DQS Pad 可用作其它功能或者 GPIO。
下圖是 FlexSPI->MCR0[RXCLKSRC] = 1 的情況,此時 Read Strobe 經(jīng)由懸空的 DQS 引腳 ipp_do_dqs1_fa/b 再 loopback 回來,此時有了 DQS 引腳繞一圈的延遲。這種配置可用于 Multi-I/O SPI 傳輸模式(較高速 133MHz SDR 場合),適用不含 DQS 引腳的大容量 QuadSPI NOR Flash,但是 FlexSPI DQS Pad 需要懸空。
注: 有一篇舊文《使能串行NOR Flash的DTR模式》跟這種配置相關(guān),這時候 dummy cycle 數(shù)的設(shè)置很關(guān)鍵。
下圖是 FlexSPI->MCR0[RXCLKSRC] = 3 的情況,此時 Read Strobe 完全由外部存儲器的 DQS 引腳輸出 ipp_ind_dqs3_fa/b 直通進(jìn)來。這種配置可用于 Multi-I/O SPI 傳輸模式(最高速 166MHz/200MHz DDR 場合),適用于包含 DQS 引腳的 OctalSPI NOR Flash,這時 FlexSPI DQS Pad 與外部存儲器相連。
注: 我有兩篇舊文《串行NOR Flash的DQS信號功能》、《啟動含DQS的Octal Flash可不嚴(yán)格設(shè)Dummy Cycle》跟這種配置相關(guān)。
三、loopbackFromSckPad選項意義
前面鋪墊了那么多,終于來到本文的主題了,即下圖 FlexSPI->MCR0[RXCLKSRC] = 2 的情況,此時 Read Strobe 經(jīng)由 SCK 引腳 ipp_ind_sck_fa/b 再 loopback 回來,此時有了 SCK 引腳繞一圈的延遲。
這種配置從應(yīng)用角度與 FlexSPI->MCR0[RXCLKSRC] = 1(即 loopbackFromDqsPad) 差不多,也可用于 Multi-I/O SPI 傳輸模式(較高速 133MHz SDR 場合),適用不含 DQS 引腳的大容量 QuadSPI NOR Flash,但是這時候 FlexSPI DQS Pad 被解放出來了,這也是它的最主要意義。
別小看只是省了一個 DQS 引腳,也許你認(rèn)為 i.MX RT 有那么多I/O,省一個引腳意義不大,但是如果某些 FlexSPI 引腳組不帶 DQS 信號,你又想配置 FlexSPI 以 60MHz 以上頻率去訪問 Flash,這時候 FlexSPI->MCR0[RXCLKSRC] = 2 選項就會幫上大忙了,見舊文《不支持DQS的FlexSPI引腳組連接串行NOR Flash注意事項》。
四、loopbackFromSckPad使用限制
FlexSPI->MCR0[RXCLKSRC] = 2 選項雖好,但有如下兩個實際使用限制:
存在信號完整性問題:主要出現(xiàn)在 SCK 頻率過高或者板級 PCB 上 SCK 信號走線過長時。
SCK自由運(yùn)行模式下不可用:對于某些 FPGA 應(yīng)用,有時需要設(shè)置 FlexSPI->MCR0[SCKFREERUNEN] = 1,即 SCK 需要持續(xù)給外部設(shè)備內(nèi)部 PLL 提供參考時鐘。
來源:恩智浦MCU加油站
審核編輯:湯梓紅
-
存儲器
+關(guān)注
關(guān)注
38文章
7530瀏覽量
164411 -
引腳
+關(guān)注
關(guān)注
16文章
1222瀏覽量
50955 -
SCK
+關(guān)注
關(guān)注
0文章
7瀏覽量
16201 -
時鐘源
+關(guān)注
關(guān)注
0文章
93瀏覽量
16042
發(fā)布評論請先 登錄
相關(guān)推薦
FlexSPI外設(shè)如何支持行列混合尋址存儲器
I.MX RT1166 Flashdriver問題如何解決?
FlexSPI和FlexSPI2外設(shè)都可以使用BEE嗎?
01:i.MX RT系列產(chǎn)品的介紹與演示
![01:<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>系列產(chǎn)品的介紹與演示](https://file.elecfans.com/web1/M00/7F/0B/pIYBAFwbSR6AL8OvAAAusl1_-Qo335.jpg)
01:i.MX RT的市場應(yīng)用和參考解決方案
![01:<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>的市場應(yīng)用和參考解決方案](https://file.elecfans.com/web1/M00/7E/93/o4YBAFwbSLKAL8huAAAsy0wfxyk367.jpg)
02:i.MX RT系列產(chǎn)品的介紹與演示
![02:<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>系列產(chǎn)品的介紹與演示](https://file.elecfans.com/web1/M00/7F/0B/pIYBAFwbSSqAAi9iAAAuup1cykg609.jpg)
i.MX RT開發(fā)筆記-08 | i.MX RT1062嵌套中斷向量控制器NVIC(按鍵中斷檢測)
![<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>開發(fā)筆記-08 | <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>1062嵌套中斷向量控制器NVIC(按鍵中斷檢測)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
RT-Thread & NXP 發(fā)布 i.MX RT 系列 BSP 新框架
![<b class='flag-5'>RT</b>-Thread & NXP 發(fā)布 <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b> 系列 BSP 新框架](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
loopbackFromSckPad選項是什么作用及有什么使用限制
i.MXRT中FlexSPI外設(shè)不常用的讀選通采樣時鐘源
探討i.MX RT下FlexSPI driver實現(xiàn)Flash編程時對于中斷支持問題
在i.MX RT10xx使用FlexIO實現(xiàn)XY2-100振鏡控制協(xié)議
![在<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>10xx使用FlexIO實現(xiàn)XY2-100振鏡控制協(xié)議](https://file1.elecfans.com/web2/M00/82/DF/wKgZomRlf3eAaUWcAAAuVOfDOJ0426.png)
理解i.MX RT中FlexSPI外設(shè)lookupTable里配置訪問行列混合尋址Memory的參數(shù)值
![理解<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b><b class='flag-5'>中</b><b class='flag-5'>FlexSPI</b><b class='flag-5'>外設(shè)</b>lookupTable里配置訪問行列混合尋址Memory的參數(shù)值](https://file1.elecfans.com/web2/M00/AD/14/wKgZomU_dlKAPytPAAArtXvFD0A938.png)
評論