衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

理解i.MX RT中FlexSPI外設lookupTable里配置訪問行列混合尋址Memory的參數值

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

關于FlexSPI外設的lookupTable,之前寫過一篇非常詳細的文章 《從頭開始認識i.MX RT啟動頭FDCB里的lookupTable》,這篇文章幾乎可以幫助解決所有串行QuadSPI NOR Flash(四線) 以及Octal Flash(八線)的讀時序配置問題,因為這些Flash都只用單一行地址(Row Addr)來尋址。

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

一、FlexSPI外設關于行列地址 Memory支持

先來看FlexSPI外設是如何支持行列混合尋址存儲器的。

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

100564727-274190-1.png

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

100564727-274191-2.png

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

100564727-274192-3.png

看到這里,似乎已經把FlexSPI對于行列地址Memory的支持講完了。

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

是的,這里需要再詳細展開!

首先我們要明白一點,因為FlexSPI連接的是八線Memory,在實際總線上行、列地址傳輸位一定都是8bits的整數倍,如果RADDR/CADDR_DDR參數值設置得不是8bits的整數倍,不足8bits的部分,FlexSPI會自動在低位插入相應保留位(即下圖低保留bits,這些保留位的值是什么不確定,對FlexSPI來說也不在乎),然后在 RADDR/CADDR_DDR設置的參數值范圍內,如果對應Memory實際行、列地址位寬小于參數值,超出實際行、列地址的部分會被FlexSPI自動填入0值(即下圖高亮填充bits)。

100564727-274193-4.png

二、常見行列混合地址Memory 讀配置實例

大部分 HyperBus Flash/RAM 在行、列地址設計上是一樣的,這里羅列了市面上常見的型號如下,我們就以MIMXRT1050-EVKB板卡上那顆S26KS512為例來介紹。

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

我們在S26KS512手冊里可以找到如下讀時序圖,主要關注時序最前面48bits的Command-Address序列,在手冊Command / Address Bit Assignments表里有這48bits的詳細定義,其中CA[37:16] 是行地址與高位列地址,CA[2:0] 是低位列地址。

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

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

因為CAS = 3,所以CADDR_DDR里的高13bits也會被FlexSPI設為0(CADDR[2:0]用于傳輸CA[2:0]),這是符合S26KS512手冊時序定義的。

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 讀配置實例

最近我們在支持客戶的過程中也發現了一些Memory有著不一樣的行、列地址設計,比如如下這顆IS66WVO OctalRAM。從手冊里找到其Command / Address bit assignment表里48bits的定義。與上一節HyperBus Flash/RAM不一樣的是,其高位列地址并不是在8bits對齊處出現的。

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

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

對于IS66WVO這樣的行、列地址設計,我們在lookupTable里該如何填入RADDR/CADDR_DDR參數值呢?首先CAS設為4,CADDR_DDR設為0x08可以解決CA[3:0]傳輸問題。

現在的重點是RADDR_DDR參數值,總共24bits傳輸位,低位還需要留2個保留位,所以RADDR_DDR僅能被設為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),
};

來源:恩智浦MCU加油站



審核編輯:湯梓紅


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FlaSh
    +關注

    關注

    10

    文章

    1642

    瀏覽量

    148673
  • 存儲器
    +關注

    關注

    38

    文章

    7528

    瀏覽量

    164343
  • 儲存器
    +關注

    關注

    1

    文章

    93

    瀏覽量

    17537
收藏 人收藏

    評論

    相關推薦

    FlexSPI外設如何支持行列混合尋址存儲器

    關于FlexSPI外設lookupTable,之前寫過一篇非常詳細的文章 《從頭開始認識i.MX RT啟動頭FDCB
    的頭像 發表于 10-13 09:11 ?1214次閱讀

    RT1176如何調試自定義FlexSPI配置塊?

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

    I.MX RT1166 Flashdriver問題如何解決?

    我正在嘗試為 I.MX RT1166 編寫自定義閃存驅動程序應用程序。我一直在使用 iMXRT117x_FlexSPI_SFDP 項目,該項目可以在 Mcuxpresso 安裝的 ide
    發表于 03-31 07:18

    FlexSPIFlexSPI2外設都可以使用BEE嗎?

    我有一個關于 i.MX.RT 1061 系列的問題。i.MX.RT1061 中有兩個 FlexSPI。還有一個用于運行加密啟動映像的 BEE。FlexSPI
    發表于 04-19 08:30

    01:i.MX RT系列產品的介紹與演示

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

    01:i.MX RT的市場應用和參考解決方案

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

    02:i.MX RT系列產品的介紹與演示

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

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

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

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

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

    i.MX RT1170上串行NOR Flash雙程序可交替啟動設計

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

    FlexSPI外設關于行列地址Memory支持

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

    探討i.MX RTFlexSPI driver實現Flash編程時對于中斷支持問題

    前段時間有客戶在官方社區反映i.MX RT1170下,使用官方SDKFlexSPI驅動去擦寫Flash時不能很好地支持全局中斷。 客戶項目
    的頭像 發表于 02-06 15:09 ?1298次閱讀

    i.MX RT的FlexRAM配置問題

    i.MX RT的FlexRAM配置問題
    的頭像 發表于 10-24 15:46 ?865次閱讀
    <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>的FlexRAM<b class='flag-5'>配置</b>問題

    i.MX RTFlexSPI外設不常用的讀選通采樣時鐘源

    i.MX RTFlexSPI外設不常用的讀選通采樣時鐘源
    的頭像 發表于 10-30 17:44 ?602次閱讀
    <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'>外設</b>不常用的讀選通采樣時鐘源

    XMCD – i.MX RT11xx系列簡單易用的特定外設配置功能

    i.MX RT1160/ RT1170 B0以及后續的RT1180開始,BootROM引入了XMCD新功能,其用途與傳統DCD功能(之前文章介紹過)類似。DCD可以實現對芯片指定
    的頭像 發表于 10-26 09:25 ?2025次閱讀
    XMCD – <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>11xx系列簡單易用的特定<b class='flag-5'>外設</b><b class='flag-5'>配置</b>功能
    百家乐官网庄闲统计数| 百家乐网站制作| 威尼斯人娱乐上网导航| 桃江县| 新濠百家乐官网娱乐场| 威尼斯人娱乐城送38| 赌博百家乐官网赢不了| 任你博百家乐官网的玩法技巧和规则 | 百家乐官网乐翻天| 电脑百家乐的玩法技巧和规则| 博彩太阳城| 百家乐必胜绝技| 大发888娱乐场 ylc8| 百家乐官网游戏试| 大发888足球开户| 在线百家乐官网纸牌游戏| 真人百家乐视频| 百家乐官网真钱在线| 百家乐视频游戏双扣| 盈丰| 网上百家乐赌钱| 淘金盈开户| 百家乐官网免费体验金| tt娱乐城官方网站| 百家乐官网园试玩| 58娱乐城开户| 蓝宝石百家乐官网娱乐城| bet365虚拟运动| 阳宅24方位判断方法| 鼎尊国际娱乐| 百家乐注册开户| 托克逊县| 百家乐庄闲| 网页百家乐官网游戏| 中华百家乐娱乐城| 任你博百家乐官网现金网| 至尊百家乐赌场娱乐网规则 | 利高百家乐官网现金网| 最新百家乐双面数字筹码| 海立方百家乐官网客户端| 百家乐送钱平台|