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

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

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

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

恩智浦MCU加油站 ? 來源:恩智浦MCU加油站 ? 作者:恩智浦MCU加油站 ? 2022-10-13 09:11 ? 次閱讀

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

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

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

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

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

83626f1e-4a8f-11ed-a3b6-dac502259ad0.png

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

83b24d18-4a8f-11ed-a3b6-dac502259ad0.png

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

83c493ba-4a8f-11ed-a3b6-dac502259ad0.png

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

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

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

首先我們要明白一點(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來說也不在乎),然后在 RADDR/CADDR_DDR設(shè)置的參數(shù)值范圍內(nèi),如果對(duì)應(yīng)Memory實(shí)際行、列地址位寬小于參數(shù)值,超出實(shí)際行、列地址的部分會(huì)被FlexSPI自動(dòng)填入0值(即下圖高亮填充bits)。

83ed3702-4a8f-11ed-a3b6-dac502259ad0.png

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

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

ISSI的IS26KSxxx系列HyperFlash

ISSI的IS66/67WVH系列HyperRAM

Cypress/Infineon的S26KSxxx系列HyperFlash

Cypress/Infineon的S80KSxxx系列HyperRAM

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] 是低位列地址。

8406393c-4a8f-11ed-a3b6-dac502259ad0.png

8442d7ca-4a8f-11ed-a3b6-dac502259ad0.png

再來看 SDK_2_12_0_EVKB-IMXRT1050oardsevkbimxrt1050driver_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è)谥С挚蛻舻倪^程中也發(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

8470a4e8-4a8f-11ed-a3b6-dac502259ad0.png

84d954de-4a8f-11ed-a3b6-dac502259ad0.png

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

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

    關(guān)注

    31

    文章

    5294

    瀏覽量

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

    關(guān)注

    38

    文章

    7434

    瀏覽量

    163519
  • 時(shí)序
    +關(guān)注

    關(guān)注

    5

    文章

    384

    瀏覽量

    37247
  • CAS
    CAS
    +關(guān)注

    關(guān)注

    0

    文章

    34

    瀏覽量

    15177

原文標(biāo)題:理解i.MX RT中FlexSPI外設(shè)lookupTable里配置訪問行列混合尋址Memory的參數(shù)值

文章出處:【微信號(hào):NXP_SMART_HARDWARE,微信公眾號(hào):恩智浦MCU加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于NIOS II的SOPC中存儲(chǔ)器外設(shè)接口的設(shè)計(jì)

    強(qiáng)大的硬件支持。SOPC是Ahera公司提出的一種靈活、高效的片上系統(tǒng)(SOC)解決方案,它將處理、存儲(chǔ)器、I/O口等系統(tǒng)設(shè)計(jì)所需要的功能模塊集成到一個(gè)可編程器件上,從而構(gòu)成一個(gè)可編程的片上系統(tǒng)
    發(fā)表于 12-07 10:27

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

    使用 BEE 嗎?(不是同時(shí)) 在查看 AN12852 時(shí),我想執(zhí)行以下操作。-未加密的引導(dǎo)映像存儲(chǔ)在外部閃存中,并通過FlexSPI外設(shè)執(zhí)行。- 我的軟件(從 FlexSPI
    發(fā)表于 04-19 08:30

    內(nèi)容可尋址存儲(chǔ)器MCM69C232在交換機(jī)中的應(yīng)用

      內(nèi)容可尋址存儲(chǔ)器CAM(Coment-Addressable Memo-ry)以內(nèi)容進(jìn)行尋址存儲(chǔ)器,是一種特殊的存儲(chǔ)陣列RAM。它的主
    發(fā)表于 09-23 11:12 ?1284次閱讀
    內(nèi)容可<b class='flag-5'>尋址</b><b class='flag-5'>存儲(chǔ)器</b>MCM69C232在交換機(jī)中的應(yīng)用

    pic單片機(jī)教程之?dāng)?shù)據(jù)存儲(chǔ)器的直接間接尋址方式

    單片機(jī)數(shù)據(jù)存儲(chǔ)器由特殊寄存(SFR)和通用寄存(GPR)組成。SFR特殊寄存器用到cpu和外設(shè)控制器件操作,GPR通用寄存則負(fù)責(zé)通用RAM存儲(chǔ)尋址
    發(fā)表于 07-26 15:04 ?8649次閱讀
    pic單片機(jī)教程之?dāng)?shù)據(jù)<b class='flag-5'>存儲(chǔ)器</b>的直接間接<b class='flag-5'>尋址</b>方式

    STM32系列微控制存儲(chǔ)器外設(shè)

    STM32系列微控制存儲(chǔ)器外設(shè)
    發(fā)表于 09-29 14:50 ?7次下載
    STM32系列微控制<b class='flag-5'>器</b><b class='flag-5'>存儲(chǔ)器</b>與<b class='flag-5'>外設(shè)</b>

    存儲(chǔ)器尋址方式有哪些?

    存儲(chǔ)器是現(xiàn)代信息技術(shù)中用于保存信息的記憶設(shè)備。其概念很廣,有很多層次,在數(shù)字系統(tǒng)中,只要能保存二進(jìn)制數(shù)據(jù)的都可以是存儲(chǔ)器尋址是數(shù)據(jù)恢復(fù)技術(shù)的基礎(chǔ),是定位數(shù)據(jù)和扇區(qū)的關(guān)鍵。尋址這個(gè)概念比
    發(fā)表于 11-17 16:14 ?2.3w次閱讀
    <b class='flag-5'>存儲(chǔ)器</b><b class='flag-5'>尋址</b>方式有哪些?

    關(guān)于非易失性存儲(chǔ)器和易失性存儲(chǔ)器的區(qū)別詳解

    非易失性存儲(chǔ)器技術(shù)是在關(guān)閉計(jì)算機(jī)或者突然性、意外性關(guān)閉計(jì)算機(jī)的時(shí)候數(shù)據(jù)不會(huì)丟失的技術(shù)。非易失性存儲(chǔ)器技術(shù)得到了快速發(fā)展,非易失性存儲(chǔ)器主要分為塊尋址和字節(jié)
    發(fā)表于 01-23 11:33 ?1.7w次閱讀

    非易失性存儲(chǔ)器和易失性存儲(chǔ)器有什么全部詳細(xì)資料對(duì)比

    非易失性存儲(chǔ)器技術(shù)是在關(guān)閉計(jì)算機(jī)或者突然性、意外性關(guān)閉計(jì)算機(jī)的時(shí)候數(shù)據(jù)不會(huì)丟失的技術(shù)。非易失性存儲(chǔ)器技術(shù)得到了快速發(fā)展,非易失性存儲(chǔ)器主要分為塊尋址和字節(jié)
    發(fā)表于 04-07 14:33 ?8752次閱讀

    寄存存儲(chǔ)器的區(qū)別

    存儲(chǔ)器范圍最大,它幾乎涵蓋了所有關(guān)于存儲(chǔ)的范疇。寄存,內(nèi)存,都是存儲(chǔ)器里面的一種。凡是有存儲(chǔ)能力的硬件,都可以稱之為
    發(fā)表于 07-22 09:11 ?1.5w次閱讀

    51單片機(jī)存儲(chǔ)器的結(jié)構(gòu)和原理解析

    51單片機(jī)存儲(chǔ)器采用的是哈佛結(jié)構(gòu),即是程序存儲(chǔ)器空間和數(shù)據(jù)存儲(chǔ)器空間分開,程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器各自有自己的
    發(fā)表于 10-21 16:33 ?2.3w次閱讀
    51單片機(jī)<b class='flag-5'>存儲(chǔ)器</b>的結(jié)構(gòu)和原理解析

    UC-009:尋址16MB外部數(shù)據(jù)存儲(chǔ)器

    UC-009:尋址16MB外部數(shù)據(jù)存儲(chǔ)器
    發(fā)表于 04-25 10:55 ?1次下載
    UC-009:<b class='flag-5'>尋址</b>16MB外部數(shù)據(jù)<b class='flag-5'>存儲(chǔ)器</b>

    FlexSPI NOR連接方式大全(RT1015/1020/1050)

    由于i.MXRT內(nèi)部沒有非易失性存儲(chǔ)器,因此在系統(tǒng)設(shè)計(jì)時(shí)為i.MXRT搭配一塊存放應(yīng)用程序代碼的存儲(chǔ)器是頭等大事。i.MXRT支持啟動(dòng)的外部存儲(chǔ)器類型眾多,其中通過
    發(fā)表于 02-09 11:26 ?1次下載
    <b class='flag-5'>FlexSPI</b> NOR連接方式大全(RT1015/1020/1050)

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

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

    西門子博途: 存儲(chǔ)器間接尋址的應(yīng)用

    對(duì)于存儲(chǔ)器間接尋址,可以在變量中存儲(chǔ)地址。變量可以是 WORD 或 DWORD 數(shù)據(jù)類型。變量可以位于存儲(chǔ)器區(qū)域“數(shù)據(jù)”(DB 或 DI)、“位存儲(chǔ)
    發(fā)表于 07-15 11:20 ?5259次閱讀

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

    理解i.MX RT中FlexSPI外設(shè)lookupTable里配置訪問行列混合尋址Memory的參數(shù)值
    的頭像 發(fā)表于 10-30 17:23 ?472次閱讀
    理解i.MX RT中<b class='flag-5'>FlexSPI</b><b class='flag-5'>外設(shè)</b>lookupTable里配置訪問<b class='flag-5'>行列</b><b class='flag-5'>混合</b><b class='flag-5'>尋址</b>Memory的參數(shù)值