他來了
他真的來了……
繼《OSPI Flash適配秘籍之內(nèi)功心法篇》之后,本文將繼續(xù)深入探討如何將Winbond(華邦)W35T51NW OSPI Flash適配到你的系統(tǒng)[JX1] [DX2]中。筆者感謝老鐵們對瑞薩嵌入式小百科的持續(xù)關(guān)注。如果有讀者是第一次接觸OSPI接口,筆者建議先跳轉(zhuǎn)到內(nèi)功心法篇,先修煉《內(nèi)功心法篇》,否則直接上陣,怕是要走火入魔。
之前也說了廣大不同廠家的OSPI Flash,雖然說大部分功能相似,大部分功能也可以復(fù)用,但是不同廠家的OSPI Flash還是存在或多或少的差別。因此如果客戶出于成本的考慮,需要更換OSPI Flash的時(shí)候,是需要做驅(qū)動(dòng)層的適配工作。
那如何做OSPI Flash的驅(qū)動(dòng)的適配工作?請讓筆者傾囊相授。
首先,不同門派(廠商)的OSPI Flash雖說套路相似,但細(xì)節(jié)上總有些“暗器”藏著。適配之前,務(wù)必翻閱芯片手冊,了解其配置流程。尤其是從單線模式切換到八線模式時(shí),稍有不慎,便會(huì)“變線”翻車。
一般OSPI Flash除了支持8線模式,默認(rèn)都支持單線模式。所以一般Flash上電復(fù)位后,都默認(rèn)支持單線的協(xié)議。單線模式下,大部分廠商的OSPI Flash,命令碼以及命令-地址-數(shù)據(jù)之間的時(shí)延(如下時(shí)序圖中的Latency field)差別較小,但是在八線模式下這些差別就不能忽視,下面筆者會(huì)具體說明。

圖1.OSPI Read transaction時(shí)序圖
OSPI Flash適配的關(guān)鍵在于從單線模式轉(zhuǎn)換成八線模式的時(shí)候,如何正確通過單線指令完成轉(zhuǎn)換。圖2說明了Winbond W35T51NW OSPI Flash的具體的配置流程。不同廠商的Flash的初始化和配置流程是不一樣的,尤其是涉及到輸入輸出模式的切換時(shí),這也是移形換位大法的關(guān)鍵所在。
大多數(shù)廠家的Flash默認(rèn)設(shè)置就是單線模式。所以如果只是適配單線模式的情況下,過程會(huì)簡單很多。但是多線模式的適配注意事項(xiàng)會(huì)更多,也相對麻煩一些。
圖2展示了W35T51NW設(shè)備的存儲器讀取操作流程,包括XIP(Execute-in-Place)模式和標(biāo)準(zhǔn)命令模式(Standard Command Mode)。以下是對該圖的解析:
1.設(shè)備啟動(dòng)流程
設(shè)備上電后,會(huì)進(jìn)行設(shè)備初始化并刷新易失性/內(nèi)部配置寄存器(Volatile/Internal Configuration Register Refresh)。
配置寄存器的值,來自非易失性配置寄存器(Non-Volatile Configuration Register),決定設(shè)備是進(jìn)入XIP模式還是標(biāo)準(zhǔn)命令模式。

圖2.W35T51NW Serial Flash初始化配置流程圖
2.XIP模式
(Execute-in-Place)
如果設(shè)備進(jìn)入XIP模式,它會(huì)直接執(zhí)行地址輸入-數(shù)據(jù)輸出序列,用于直接從閃存執(zhí)行代碼,無需額外的讀取命令。
退出XIP模式需要將XMb設(shè)為1。(XMb是Non-Volatile Configuration Register配置寄存器中的一位,由于XIP模式不是本篇文章的重點(diǎn),這里不做過多的介紹)
3.標(biāo)準(zhǔn)命令模式
(Standard Command Mode)
在標(biāo)準(zhǔn)命令模式下,需要按照命令-地址-數(shù)據(jù)輸入/輸出序列進(jìn)行數(shù)據(jù)訪問。
該模式可以支持不同的數(shù)據(jù)傳輸模式,包括:
SDR 3字節(jié)地址模式
SDR 4字節(jié)地址模式
Octal DDR 4字節(jié)地址模式
4.工作模式切換
在標(biāo)準(zhǔn)命令模式下,默認(rèn)支持3字節(jié)地址模式,但可以通過B7h命令啟用4字節(jié)地址模式。通過E9h命令可禁用4字節(jié)地址模式,切換回3字節(jié)地址模式。
通過81h命令碼寫易失性配置寄存器(Volatile Config Reg)可以切換工作模式(從單線轉(zhuǎn)到八線):

點(diǎn)擊查看大圖
通過1s-1s-1s的協(xié)議向VCR(volatile Config Reg)寄存器用81h命令碼寫入E7h/C7h,可以把Flash的協(xié)議模式從1s-1s-1s切換成8d-8d-8d。不同的地址模式不影響協(xié)議模式的切換。Flash的工作模工切換成功后,緊接著要切換XSPI Master(ra8d1)這邊的協(xié)議模式。
同樣的如果要把Flash的協(xié)議模式從8d-8d-8d切回1s-1s-1s,此時(shí)需要用8d-8d-8d的協(xié)議通過81h命令碼向VCR寫入FFh/DFh。同樣Flash的工作模工切換成功后,緊接著要切換XSPI Master(ra8d1)這邊的協(xié)議模式。兩邊的協(xié)議要一致才能正常工作。
這里對VCR寄存器做一些說明,VCR寄存器共有00h-07h共8個(gè)地址。其中對00h地址通過81h命令碼寫入配置值就可以設(shè)置Flash的輸入輸出的協(xié)議模式。其它地址范圍的配置功能請參考手冊中的內(nèi)容,默認(rèn)情況下一般不會(huì)對其它地址的內(nèi)容進(jìn)行配置。
這里筆者還想說明一下,手冊中除了VCR還有NVCR,這兩者有什么區(qū)別呢?
NVCR的全稱是Non-volatile Configuration Register為非易失性的寄存器,而VCR是易失性的寄存器,即下電之后VCR的內(nèi)容將會(huì)重置為0。所以Flash在啟動(dòng)的時(shí)候會(huì)默認(rèn)讀取NVCR里面的配置作為默認(rèn)啟動(dòng)配置,而VCR可以在啟動(dòng)之后再去配置,但是VCR的配置只存在當(dāng)前的上電周期中生效。如果對Flash下電再上電VCR中的內(nèi)容將失效。
總結(jié)一句話,如果開發(fā)者想對Flash的啟動(dòng)配置項(xiàng)永久生效就寫NVCR,如果是臨時(shí)調(diào)整配置就可以寫VCR。

圖3.Flash輸入輸出協(xié)議模式切換命令調(diào)用說明
下圖讓讀者感性的認(rèn)識一下,同樣是通過85h命令碼讀取VCR的內(nèi)容,示波器的波形會(huì)是什么樣的?
左邊是1s-1s-1s可以很清晰的看出85h這個(gè)命令碼。右邊由于示波器通道數(shù)有限,加上示波器信號質(zhì)量也比較差,讀者不能清晰的感知到85h這個(gè)命令碼。但是通過黃色時(shí)鐘信號通道,讀者可以感受到八線的模式下,完成同樣的讀取VCR的操作所需要的時(shí)鐘數(shù)量會(huì)少很多。

圖4.讀取VCR配置值的單線和八線輸入輸出波形對比圖
5.復(fù)位
硬件復(fù)位(Hardware Reset)會(huì)使設(shè)備重新進(jìn)入上電初始化狀態(tài)。
軟件復(fù)位(Software Reset)通過66h+99h指令實(shí)現(xiàn),會(huì)讓設(shè)備回到上電后的初始狀態(tài)。
其次開發(fā)者要注意8線輸入輸出模式,常用的讀寫擦寫使能等指令,不同廠商的命令碼可能稍有不同,并且“Latency field”也可能不同。
如下圖5所示,在4字節(jié)地址模式下的快讀取的指令,指令碼是0Ch,其它的廠商就不一定也是0Ch。所以開發(fā)者要查看Flash手冊里的指令列表,換Flash芯片需要適配新的指令。
此外對于Dummy cycle數(shù)值也可能不一樣的,也就是前面提到的“Latency Field“。圖5中的8(16)表示如果是SDR模式的話,Dummy cycle是8,如果是DDR模式的話,Dummy cycle值是16。

圖5.Winbond W35T51NW OSPI Flash命令表說明
對于Dummy Cycle,在具體的波形圖里以如下方式呈現(xiàn):

圖6.Fast Read with 4-Byte Address指令SDR時(shí)序圖
筆者想強(qiáng)調(diào)一點(diǎn)的是在ODDR模式下,指令的長度變成兩個(gè)字節(jié)。如下圖所示,數(shù)據(jù)可以正常輸出。
對于這個(gè)ODDR工作模式的指令長度要變成2字節(jié)的說明在Winbond的Flash使用手冊上并沒有明確說明。但是在ra8d1的手冊上,37.2.2.7章節(jié)中有相關(guān)的寄存器配置說明。比如在ODDR模式下讀取VCR的值的命令碼是8585h,而不是85h,對應(yīng)的command_length 也需要調(diào)整為2。

圖7.RA8D1 OSPI command Type

圖8.ODDR模式下讀取VCR的值的代碼示例
最后要注意不同廠家的OSPI Flash所對應(yīng)的“Device ID”是不一樣的。一般驅(qū)動(dòng)代碼里都會(huì)有讀取&校驗(yàn)“Device ID”的操作,所以在驅(qū)動(dòng)代碼適配的時(shí)候“Device ID”值要從手冊中找到對應(yīng)的讀取“Device ID“的指令和ID值。
總結(jié)來說做OSPI Flash適配要關(guān)注以下方面:
初始化的配置流程的差異;
模式切換時(shí)候的差異;
關(guān)注指令碼和Dummy Cycle的差異;
以及Flash Device ID的差異。
好的,筆者感謝讀者們的耐心閱讀,也請感興趣的小伙伴持續(xù)關(guān)注我們的“瑞薩嵌入式小百科“公眾號,我們將為開發(fā)者提供更多實(shí)用的內(nèi)容作參考。
-
FlaSh
+關(guān)注
關(guān)注
10文章
1702瀏覽量
154275 -
存儲器
+關(guān)注
關(guān)注
39文章
7700瀏覽量
170435 -
瑞薩
+關(guān)注
關(guān)注
36文章
22415瀏覽量
89427
原文標(biāo)題:OSPI Flash適配秘籍之移形換位大法
文章出處:【微信號:瑞薩嵌入式小百科,微信公眾號:瑞薩嵌入式小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
瑞薩RA8D1 CEU介紹與使用說明
基于瑞薩電子RA8D1 MCU的USB和I2S數(shù)字音頻應(yīng)用解決方案
瑞薩RA8D1 MCU的OSPI Flash適配指南
使用瑞薩RA8D1開發(fā)板實(shí)現(xiàn)人臉識別的應(yīng)用演示
【Vision Board創(chuàng)客營連載體驗(yàn)】RA8D1 Vision Board初體驗(yàn)
【瑞薩RA8D1 CPK開發(fā)板試用】開箱與點(diǎn)燈
【瑞薩RA8D1 CPK開發(fā)板】RA8D1移植ThreadX操作系統(tǒng)
【CPKCOR-RA8D1】+ 1.RA8D1開箱點(diǎn)燈
【CPKCOR-RA8D1】RA8D1開箱測試報(bào)告
新品發(fā)布 | 瑞薩推出面向圖形顯示應(yīng)用和語音/視覺多模態(tài)AI應(yīng)用的全新RA8 MCU產(chǎn)品群
基于瑞薩電子RA系列的野火耀陽RA8D1開發(fā)板產(chǎn)品簡介

瑞薩RA8D1 MCU如何進(jìn)行OSPI Flash驅(qū)動(dòng)的適配工作
評論