0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

理解i.MX RT中FlexSPI外設(shè)lookupTable里配置訪問(wèn)行列混合尋址Memory的參數(shù)值

jf_pJlTbmA9 ? 來(lái)源:恩智浦MCU加油站 ? 作者:恩智浦MCU加油站 ? 2023-10-30 17:23 ? 次閱讀

關(guān)于FlexSPI外設(shè)的lookupTable,之前寫(xiě)過(guò)一篇非常詳細(xì)的文章 《從頭開(kāi)始認(rèn)識(shí)i.MX RT啟動(dòng)頭FDCB里的lookupTable》,這篇文章幾乎可以幫助解決所有串行QuadSPI NOR Flash(四線) 以及Octal Flash(八線)的讀時(shí)序配置問(wèn)題,因?yàn)檫@些Flash都只用單一行地址(Row Addr)來(lái)尋址。

但是市面上也有一些特殊的存儲(chǔ)器(比如八線HyperBus Flash/RAM,OctalRAM等)采用了行列混合尋址方式,對(duì)于這類存儲(chǔ)器,我們?cè)贔lexSPI里配置讀時(shí)序,尤其是讀時(shí)序里的地址序列參數(shù)值時(shí)需要稍微注意一下,今天就來(lái)聊聊這個(gè)話題

一、FlexSPI外設(shè)關(guān)于行列地址 Memory支持

先來(lái)看FlexSPI外設(shè)是如何支持行列混合尋址存儲(chǔ)器的。

在FLSHxxCR1寄存器里有CAS控制位,這里配置的即是存儲(chǔ)器列地址(Column Addr)位寬。對(duì)于不支持列地址的存儲(chǔ)器,CAS需要設(shè)置為0;如果存儲(chǔ)器支持列地址,那么CAS需要根據(jù)存儲(chǔ)器實(shí)際情況來(lái)設(shè)置。

100564727-274190-1.png

如果FLSHxxCR1[CAS]位不為0,那么FlexSPI外設(shè)在傳輸時(shí)序里會(huì)拆分實(shí)際映射Flash Address(即存儲(chǔ)器自身偏移地址)為行地址FA[31:CAS]和列地址[CAS-1:0]來(lái)分別傳輸。

100564727-274191-2.png

在最終lookupTable里我們可以用這樣的時(shí)序配置來(lái)實(shí)現(xiàn)存儲(chǔ)器的讀訪問(wèn),這里RADDR_DDR子序列即傳輸行地址,CADDR_DDR子序列即傳輸列地址(注:如下示例是在FLSHxxCR1[CAS] = 3的設(shè)置下)。

100564727-274192-3.png

看到這里,似乎已經(jīng)把FlexSPI對(duì)于行列地址Memory的支持講完了。

但是我相信你還是會(huì)有疑問(wèn),上面序列表里RADDR_DDR和CADDR_DDR具體參數(shù)值設(shè)置似乎沒(méi)有講清楚,為什么行列地址加起來(lái)位寬是0x18 + 0x10一共40bit(一般 Memory行列地址總位寬也就32 bit)?并且明明CAS值只是 3,為何CADDR_DDR 里設(shè)成0x10也行?

是的,這里需要再詳細(xì)展開(kāi)!

首先我們要明白一點(diǎn),因?yàn)镕lexSPI連接的是八線Memory,在實(shí)際總線上行、列地址傳輸位一定都是8bits的整數(shù)倍,如果RADDR/CADDR_DDR參數(shù)值設(shè)置得不是8bits的整數(shù)倍,不足8bits的部分,F(xiàn)lexSPI會(huì)自動(dòng)在低位插入相應(yīng)保留位(即下圖低保留bits,這些保留位的值是什么不確定,對(duì)FlexSPI來(lái)說(shuō)也不在乎),然后在 RADDR/CADDR_DDR設(shè)置的參數(shù)值范圍內(nèi),如果對(duì)應(yīng)Memory實(shí)際行、列地址位寬小于參數(shù)值,超出實(shí)際行、列地址的部分會(huì)被FlexSPI自動(dòng)填入0值(即下圖高亮填充bits)。

100564727-274193-4.png

二、常見(jiàn)行列混合地址Memory 讀配置實(shí)例

大部分 HyperBus Flash/RAM 在行、列地址設(shè)計(jì)上是一樣的,這里羅列了市面上常見(jiàn)的型號(hào)如下,我們就以MIMXRT1050-EVKB板卡上那顆S26KS512為例來(lái)介紹。

1、ISSI的IS26KSxxx系列HyperFlash
2、ISSI的IS66/67WVH系列HyperRAM
3、Cypress/Infineon的S26KSxxx系列HyperFlash
4、Cypress/Infineon的S80KSxxx系列HyperRAM
5、Winbond的W957D8、W959D8系列HyperRAM

我們?cè)赟26KS512手冊(cè)里可以找到如下讀時(shí)序圖,主要關(guān)注時(shí)序最前面48bits的Command-Address序列,在手冊(cè)Command / Address Bit Assignments表里有這48bits的詳細(xì)定義,其中CA[37:16] 是行地址與高位列地址,CA[2:0] 是低位列地址。

100564727-274194-5.png
100564727-274195-6.png

再來(lái)看 SDK_2_12_0_EVKB-IMXRT1050boardsevkbimxrt1050driver_examplesflexspihyper_flashpolling_transfer 例程里的如下lookupTable,RADDR_DDR參數(shù)值是0x18,CADDR_DDR參數(shù)值是0x10,根據(jù)上一節(jié)的分析,RADDR_DDR里的高2bits會(huì)被FlexSPI設(shè)為0(RADDR[21:0]用于傳輸CA[37:16])。

因?yàn)镃AS = 3,所以CADDR_DDR里的高13bits也會(huì)被FlexSPI設(shè)為0(CADDR[2:0]用于傳輸CA[2:0]),這是符合S26KS512手冊(cè)時(shí)序定義的。

flexspi_device_config_t deviceconfig = {
    .columnspace          = 3,
    .enableWordAddress    = true,
};

const uint32_t customLUT[CUSTOM_LUT_LENGTH] = {
    /* Read Data */
    [0] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_DDR,       kFLEXSPI_8PAD, 0xA0, kFLEXSPI_Command_RADDR_DDR, kFLEXSPI_8PAD, 0x18),
    [1] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_CADDR_DDR, kFLEXSPI_8PAD, 0x10, kFLEXSPI_Command_READ_DDR,  kFLEXSPI_8PAD, 0x04),
};

三、特殊行列混合地址Memory 讀配置實(shí)例

最近我們?cè)谥С挚蛻舻倪^(guò)程中也發(fā)現(xiàn)了一些Memory有著不一樣的行、列地址設(shè)計(jì),比如如下這顆IS66WVO OctalRAM。從手冊(cè)里找到其Command / Address bit assignment表里48bits的定義。與上一節(jié)HyperBus Flash/RAM不一樣的是,其高位列地址并不是在8bits對(duì)齊處出現(xiàn)的。

1. ISSI出品的IS66/67WVO系列OctalRAM

100564727-274196-7.png
100564727-274197-8.png

對(duì)于IS66WVO這樣的行、列地址設(shè)計(jì),我們?cè)趌ookupTable里該如何填入RADDR/CADDR_DDR參數(shù)值呢?首先CAS設(shè)為4,CADDR_DDR設(shè)為0x08可以解決CA[3:0]傳輸問(wèn)題。

現(xiàn)在的重點(diǎn)是RADDR_DDR參數(shù)值,總共24bits傳輸位,低位還需要留2個(gè)保留位,所以RADDR_DDR僅能被設(shè)為0x16(RADDR[20:2]用于傳輸RA[12:0] + CA[9:4]),即如下面代碼:

flexspi_device_config_t deviceconfig = {
    .columnspace          = 4,
    .enableWordAddress    = false,
};

const uint32_t customLUT[CUSTOM_LUT_LENGTH] = {
    /* Read Data with continuous burst Sequence in DDR command mode */
    [0] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_DDR,       kFLEXSPI_8PAD, 0xA0, kFLEXSPI_Command_DDR,       kFLEXSPI_8PAD, 0x00),
    [1] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_RADDR_DDR, kFLEXSPI_8PAD, 0x16, kFLEXSPI_Command_CADDR_DDR, kFLEXSPI_8PAD, 0x08),
    [2] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_DUMMY_DDR, kFLEXSPI_8PAD, 0x1E, kFLEXSPI_Command_READ_DDR,  kFLEXSPI_8PAD, 0x04),
};

來(lái)源:恩智浦MCU加油站



審核編輯:湯梓紅


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1635

    瀏覽量

    148042
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    38

    文章

    7492

    瀏覽量

    163854
  • 儲(chǔ)存器
    +關(guān)注

    關(guān)注

    1

    文章

    93

    瀏覽量

    17479
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FlexSPI外設(shè)如何支持行列混合尋址存儲(chǔ)器

    關(guān)于FlexSPI外設(shè)lookupTable,之前寫(xiě)過(guò)一篇非常詳細(xì)的文章 《從頭開(kāi)始認(rèn)識(shí)i.MX RT啟動(dòng)頭FDCB
    的頭像 發(fā)表于 10-13 09:11 ?1159次閱讀

    RT1176如何調(diào)試自定義FlexSPI配置塊?

    我們正在開(kāi)發(fā)帶有 i.MX RT1166 uC 和另一個(gè)閃存芯片的定制板,而不是 NXP 評(píng)估板上使用的芯片。我們的閃存芯片使用與 NXP 評(píng)估板不同的時(shí)序,因此我們需要編寫(xiě)自己的 FlexSPI
    發(fā)表于 03-28 07:57

    I.MX RT1166 Flashdriver問(wèn)題如何解決?

    我正在嘗試為 I.MX RT1166 編寫(xiě)自定義閃存驅(qū)動(dòng)程序應(yīng)用程序。我一直在使用 iMXRT117x_FlexSPI_SFDP 項(xiàng)目,該項(xiàng)目可以在 Mcuxpresso 安裝的 ide
    發(fā)表于 03-31 07:18

    FlexSPIFlexSPI2外設(shè)都可以使用BEE嗎?

    我有一個(gè)關(guān)于 i.MX.RT 1061 系列的問(wèn)題。i.MX.RT1061 中有兩個(gè) FlexSPI。還有一個(gè)用于運(yùn)行加密啟動(dòng)映像的 BEE。FlexSPI
    發(fā)表于 04-19 08:30

    01:i.MX RT系列產(chǎn)品的介紹與演示

    i.MX RT產(chǎn)品是今年市場(chǎng)上最受歡迎的跨界MCU產(chǎn)品。本講座將對(duì)i.MX RT系列做一個(gè)簡(jiǎn)要的介紹,包括主要特性和主要外設(shè)。然后會(huì)分享能夠
    的頭像 發(fā)表于 01-23 07:21 ?3003次閱讀
    01:<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>系列產(chǎn)品的介紹與演示

    01:i.MX RT的市場(chǎng)應(yīng)用和參考解決方案

    i.MX RT產(chǎn)品是今年市場(chǎng)上最受歡迎的跨界MCU產(chǎn)品。i.MX RT定位為一款MCU產(chǎn)品,它可以重復(fù)利用傳統(tǒng)的Arm MCU生態(tài)系統(tǒng)。除此之外,本次講座還將簡(jiǎn)要介紹
    的頭像 發(fā)表于 01-21 07:13 ?3359次閱讀
    01:<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>的市場(chǎng)應(yīng)用和參考解決方案

    02:i.MX RT系列產(chǎn)品的介紹與演示

    i.MX RT產(chǎn)品是今年市場(chǎng)上最受歡迎的跨界MCU產(chǎn)品。本講座將對(duì)i.MX RT系列做一個(gè)簡(jiǎn)要的介紹,包括主要特性和主要外設(shè)。然后會(huì)分享能夠
    的頭像 發(fā)表于 01-21 07:04 ?2311次閱讀
    02:<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>系列產(chǎn)品的介紹與演示

    i.MX RT開(kāi)發(fā)筆記-08 | i.MX RT1062嵌套中斷向量控制器NVIC(按鍵中斷檢測(cè))

    系列文章目錄i.MX RT開(kāi)發(fā)筆記-01 | 初識(shí) i.MX RT1062 跨界MCUi.MX RT
    發(fā)表于 12-01 13:51 ?2次下載
    <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>開(kāi)發(fā)筆記-08 | <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>1062嵌套中斷向量控制器NVIC(按鍵中斷檢測(cè))

    RT-Thread & NXP 發(fā)布 i.MX RT 系列 BSP 新框架

    前言i.MX RT 是 NXP 推出的跨界處理器系列。該系列下又包括 i.MX RT1020、i.MX
    發(fā)表于 12-07 13:06 ?2次下載
    <b class='flag-5'>RT</b>-Thread & NXP 發(fā)布 <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b> 系列 BSP 新框架

    i.MX RT1170上串行NOR Flash雙程序可交替啟動(dòng)設(shè)計(jì)

    i.MX RT10xx一樣,這里要聊的還是在一片掛載在FlexSPI上的串行NOR Flash做冗余/雙程序設(shè)計(jì),就是下圖中的image L和image H,不涉及LPSPI接口F
    的頭像 發(fā)表于 04-28 09:55 ?1243次閱讀

    FlexSPI外設(shè)關(guān)于行列地址Memory支持

    但是市面上也有一些特殊的存儲(chǔ)器(比如八線 HyperBus Flash/RAM, OctalRAM 等)采用了行列混合尋址方式,對(duì)于這類存儲(chǔ)器,我們?cè)?FlexSPI
    的頭像 發(fā)表于 10-14 09:05 ?1102次閱讀

    探討i.MX RTFlexSPI driver實(shí)現(xiàn)Flash編程時(shí)對(duì)于中斷支持問(wèn)題

    前段時(shí)間有客戶在官方社區(qū)反映i.MX RT1170下,使用官方SDKFlexSPI驅(qū)動(dòng)去擦寫(xiě)Flash時(shí)不能很好地支持全局中斷。 客戶項(xiàng)目
    的頭像 發(fā)表于 02-06 15:09 ?1263次閱讀

    i.MX RT的FlexRAM配置問(wèn)題

    i.MX RT的FlexRAM配置問(wèn)題
    的頭像 發(fā)表于 10-24 15:46 ?814次閱讀
    <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>的FlexRAM<b class='flag-5'>配置</b>問(wèn)題

    i.MX RTFlexSPI外設(shè)不常用的讀選通采樣時(shí)鐘源

    i.MX RTFlexSPI外設(shè)不常用的讀選通采樣時(shí)鐘源
    的頭像 發(fā)表于 10-30 17:44 ?556次閱讀
    <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>不常用的讀選通采樣時(shí)鐘源

    XMCD – i.MX RT11xx系列簡(jiǎn)單易用的特定外設(shè)配置功能

    i.MX RT1160/ RT1170 B0以及后續(xù)的RT1180開(kāi)始,BootROM引入了XMCD新功能,其用途與傳統(tǒng)DCD功能(之前文章介紹過(guò))類似。DCD可以實(shí)現(xiàn)對(duì)芯片指定
    的頭像 發(fā)表于 10-26 09:25 ?1918次閱讀
    XMCD – <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>11xx系列簡(jiǎn)單易用的特定<b class='flag-5'>外設(shè)</b><b class='flag-5'>配置</b>功能