關(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è)置。
如果FLSHxxCR1[CAS]位不為0,那么FlexSPI外設(shè)在傳輸時(shí)序里會(huì)拆分實(shí)際映射Flash Address(即存儲(chǔ)器自身偏移地址)為行地址FA[31:CAS]和列地址[CAS-1:0]來分別傳輸。
在最終lookupTable里我們可以用這樣的時(shí)序配置來實(shí)現(xiàn)存儲(chǔ)器的讀訪問,這里RADDR_DDR子序列即傳輸行地址,CADDR_DDR子序列即傳輸列地址(注:如下示例是在FLSHxxCR1[CAS] = 3的設(shè)置下)。
看到這里,似乎已經(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)。
二、常見行列混合地址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] 是低位列地址。
再來看 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
對(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), };
-
寄存器
+關(guān)注
關(guān)注
31文章
5294瀏覽量
119821 -
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7434瀏覽量
163519 -
時(shí)序
+關(guān)注
關(guān)注
5文章
384瀏覽量
37247 -
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)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論