chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

如何在MCXN947板的FlexSPI接口接HyperRAM

恩智浦MCU加油站 ? 來源:恩智浦MCU加油站 ? 2025-06-04 09:39 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

概述

MCXN947芯片是一款高度集成的微控制器,具有強(qiáng)大的處理能力、豐富的外設(shè)支持和高級(jí)安全特性,適用于多種復(fù)雜應(yīng)用。其中有個(gè)非常重要的外設(shè)為FlexSPI。

FlexSPI是一種可擴(kuò)展的串行外設(shè)接口,主要用于連接固態(tài)存儲(chǔ)設(shè)備,如QuadSPI NOR Flash、QuadSPI NAND Flash、HyperRAM等。FlexSPI是一種全面的、靈活的、高性能的解決方案,可以配置成不同的模式以適應(yīng)不同的存儲(chǔ)設(shè)備。

NXP FRDM-MCXN947板是一款基于MCXN947設(shè)備的低成本設(shè)計(jì)與評(píng)估板。NXP為MCXN947設(shè)備提供了包括硬件評(píng)估板、軟件開發(fā)集成開發(fā)環(huán)境(IDE)、示例應(yīng)用程序和驅(qū)動(dòng)程序在內(nèi)的工具和軟件支持。該板FlexSPI接口默認(rèn)接了一塊MT35XU512 NOR Flash。

11ec6052-3c2b-11f0-b715-92fbcf53809c.png

在本文中,我們將探討如何在MCXN947板的FlexSPI接口接HyperRAM。

硬件環(huán)境:

開發(fā)板:FRDM-MCXN947

HyperRAM:W956D8MBYA

軟件環(huán)境:

IDE:MCUXpresso IDE v11.9.0

SDK:SDK Builder | MCUXpresso SDKBuilder (nxp.com)

HyperRAM原理圖

以下是官方FRDM-MCXN947中的八線Flash的原理圖,由于W956D8MBYA的HyperRAM的封裝都為TFBGA 24-Ball 5 x 5 Array,所以可以直接進(jìn)行替換。

1213d966-3c2b-11f0-b715-92fbcf53809c.png

根據(jù)以上原理圖,總結(jié)出HyperRAM存儲(chǔ)器的信號(hào)連接方式見表:

12231c00-3c2b-11f0-b715-92fbcf53809c.png

HyperRAM配置流程

3.1 時(shí)鐘配置

FlexSPI的時(shí)鐘需要正確配置。

123e2928-3c2b-11f0-b715-92fbcf53809c.png

我們?cè)谡{(diào)試程序的階段還是保險(xiǎn)地選擇低一點(diǎn)的頻率,這里選擇75MHz。

3.2 FlexSPI初始化配置結(jié)構(gòu)體詳解

接下來是FlexSPI相關(guān)配置,我們可以調(diào)用FLEXSPI_GetDefaultConfig獲取一些針對(duì)FlexSPI特性結(jié)構(gòu)體flexspi_config_t的一些默認(rèn)配置,這個(gè)默認(rèn)配置具有一定的普遍性,能兼容大部分的FlexSPI設(shè)備,對(duì)于該W956D8MBYA 的HyperRAM,在默認(rèn)配置的基礎(chǔ)上,增加如下幾個(gè)參數(shù):

config.ahbConfig.enableAHBPrefetch = true;

config.ahbConfig.enableAHBBufferable = true;

config.ahbConfig.enableReadAddressOpt= true;

config.ahbConfig.enableAHBCachable = true;

config.rxSampleClock= kFLEXSPI_ReadSampleClkLoopbackFromDqsPad;

(1)enableAHBPrefetch:是否使能AHB預(yù)讀取特性,當(dāng)使能時(shí),F(xiàn)lexSPI會(huì)讀取比當(dāng)前AHB突發(fā)讀取更多的數(shù)據(jù)。

(2)enableAHBBufferable :是否使能AHB寫緩沖訪問,在執(zhí)行寫命令后,不等待其執(zhí)行完畢就返回,允許后續(xù)指令繼續(xù)執(zhí)行,提高系統(tǒng)的并發(fā)性。

(3)enableReadAddressOpt:控制是否移除AHB讀取突發(fā)起始地址對(duì)齊限制,若使能,突發(fā)讀取地址沒有字節(jié)對(duì)齊限制。

(4)enableAHBCachable:使能AHB總線緩存讀取,若命中則從緩存中讀取,但要確保數(shù)據(jù)的一致性

(5)rxSampleClock:讀數(shù)據(jù)使用的時(shí)鐘源,對(duì)于HyperRAM來說,HyperRAM提供讀選通脈沖并從DQS引腳輸入。

3.3 FlexSPI外部設(shè)備配置結(jié)構(gòu)體詳解

FlexSPI與外部設(shè)備通訊時(shí)常常需要與設(shè)備協(xié)調(diào)通訊的時(shí)序,如時(shí)鐘頻率、數(shù)據(jù)有效時(shí)間等內(nèi)容,NXP軟件庫提供了結(jié)構(gòu)體類型flexspi_device_config_t專門用于配置這些參數(shù)。

typedef struct _flexspi_device_config


{


uint32_t flexspiRootClk;


bool isSck2Enabled;


uint32_t flashSize;


flexspi_cs_interval_cycle_unit_t CSIntervalUnit;


uint16_t CSInterval;


uint8_t CSHoldTime;


uint8_t CSSetupTime;


uint8_t dataValidTime;


uint8_t columnspace;


bool enableWordAddress;


uint8_t AWRSeqIndex;


uint8_t AWRSeqNumber;


uint8_t ARDSeqIndex;


uint8_t ARDSeqNumber;


flexspi_ahb_write_wait_unit_t AHBWriteWaitUnit;


uint16_t AHBWriteWaitInterval;


bool enableWriteMask;


} flexspi_device_config_t;

(1) flexspiRootClk = 75000000,此參數(shù)與前面設(shè)置的FlexSPI的時(shí)鐘頻率一致。

(2) flashSize = 0x2000, Flash的大小,以KB為單位。對(duì)于W956D8MBYA,64Mb = 8MB = 8 *1024KB。

(3) CSIntervalUnit = kFLEXSPI_CsIntervalUnit1SckCycle,此參數(shù)用于配置CS信號(hào)線間隔的時(shí)間單位。

(4) CSInterval = 2,此參數(shù)用于配置CS信號(hào)線有效與無效切換的最小時(shí)間間隔,單位為上面CSIntervalUnit成員的配置。

(5) CSHoldTime = 3,此參數(shù)用于設(shè)定CS信號(hào)線的保持時(shí)間,單位為FlexSPI根時(shí)鐘周期。

(6) CSSetupTime=3,此參數(shù)用于設(shè)定CS信號(hào)線的建立時(shí)間,單位為FlexSPI根時(shí)鐘周期。

124f3740-3c2b-11f0-b715-92fbcf53809c.png

1259eafa-3c2b-11f0-b715-92fbcf53809c.png

根據(jù)MCXNx4x datasheet,= 6ns,最小的= 8.3ns,最小的= 9.8ns。時(shí)鐘為75M的周期時(shí)間大約是13.3ns。故CSHoldTime和CSSetupTime大于等于1即可,均配置成3。

(7) dataValidTime=2,寄存器DLLACR和DLLBCR,本成員用于配置通訊中的數(shù)據(jù)有效時(shí)間,單位為納秒。

(8) columnspace = 3,低位列地址寬度,對(duì)于這個(gè)HyperRAM來說,是用行列進(jìn)行尋址的,這里列地址的寬度為3位。

1279d766-3c2b-11f0-b715-92fbcf53809c.png

(9) enableWordAddress = true,配置是否使能2字節(jié)可尋址功能,使能后會(huì)以16位的數(shù)據(jù)格式對(duì)HyperRAM進(jìn)行訪問。

(10) AWRSeqIndex = 1,對(duì)應(yīng)寫的時(shí)序序列在LUT中的索引。

(11) AWRSeqNumber =1,此參數(shù)配置AHB寫命令的序列數(shù)目。

(12) ARDSeqIndex = 0,對(duì)應(yīng)讀的時(shí)序序列在LUT中的索引。

(13) ARDSeqNumber =1,此參數(shù)配置AHB讀命令的序列數(shù)目。

(14) enableWriteMask = true,此參數(shù)用于設(shè)置FlexSPI寫外部設(shè)備時(shí)是否使能驅(qū)動(dòng)DQS位作為掩碼,這種功能在訪問數(shù)據(jù)寬度為16位時(shí)用于地址對(duì)齊。

3.4 LUT表格配置

下面是HyperRAM 讀和寫的時(shí)序LUT表格的代碼示例,

const uint32_t customLUT[CUSTOM_LUT_LENGTH] = {


/* Read Data */


   [4 * PSRAM_CMD_LUT_SEQ_IDX_READDATA] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_DDR,kFLEXSPI_8PAD, 0xA0, kFLEXSPI_Command_RADDR_DDR, kFLEXSPI_8PAD, 0x18),


   [4 * PSRAM_CMD_LUT_SEQ_IDX_READDATA + 1] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_CADDR_DDR,kFLEXSPI_8PAD, 0x10, kFLEXSPI_Command_DUMMY_RWDS_DDR, kFLEXSPI_8PAD, 0x07),


   [4 * PSRAM_CMD_LUT_SEQ_IDX_READDATA + 2] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_READ_DDR,kFLEXSPI_8PAD, 0x04, kFLEXSPI_Command_STOP, kFLEXSPI_1PAD, 0x00),


   /* Write data */


   [4 * PSRAM_CMD_LUT_SEQ_IDX_WRITEDATA] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_DDR,kFLEXSPI_8PAD, 0x20, kFLEXSPI_Command_RADDR_DDR, kFLEXSPI_8PAD, 0x18),


   [4 * PSRAM_CMD_LUT_SEQ_IDX_WRITEDATA + 1] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_CADDR_DDR,kFLEXSPI_8PAD, 0x10, kFLEXSPI_Command_DUMMY_RWDS_DDR, kFLEXSPI_8PAD, 0x07),


   [4 * PSRAM_CMD_LUT_SEQ_IDX_WRITEDATA + 2] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_WRITE_DDR,kFLEXSPI_8PAD, 0x04, kFLEXSPI_Command_STOP, kFLEXSPI_1PAD, 0x00),






};

(1) 我們使用的是8線差分的HyperRAM,在時(shí)鐘的雙邊沿都采樣,所以與外部存儲(chǔ)器通信時(shí)用的數(shù)據(jù)線的個(gè)數(shù)均為kFLEXSPI_8PAD。

(2) HyperRAM和HyperFlash是基于Cypress Semiconductor的HyperBus接口規(guī)范設(shè)計(jì)的存儲(chǔ)器產(chǎn)品,這個(gè)operand是在該規(guī)范中定義的,所以讀操作operand固定為0xA0,寫數(shù)據(jù)的operand固定為0x20。

1279d766-3c2b-11f0-b715-92fbcf53809c.png

(3) CADDR_DDR列地址,由于一次傳輸?shù)淖止?jié)一定是8的倍數(shù),如果你傳的行列地址大于特定大小的HyperRAM最大的行和列,F(xiàn)lexSPI會(huì)自動(dòng)將高位置0。

上表中顯示低16位是列地址,有效位有3位,高13位是預(yù)留兼容的列地址位,需要置0。所以這里列地址的時(shí)序參數(shù)需要填16,即0x10。

12a946cc-3c2b-11f0-b715-92fbcf53809c.png

(4) RADDR_DDR行地址,如圖所示,如果 FLSHxxCR1[CAS] 位不為 0 ,那么 FlexSPI 外設(shè)在傳輸時(shí)序里會(huì)拆分實(shí)際映射 Flash Address (即存儲(chǔ)器自身偏移地址) 為行地址 FA[31:CAS] 和列地址 [CAS-1:1] 來分別傳輸。對(duì)于字可尋址閃存設(shè)備,不需要地址的最后一位,因?yàn)殚W存是按照兩個(gè)字節(jié)讀取和編程的。Flexspi 一個(gè)字為兩個(gè)字節(jié),所有需要如果2個(gè)字節(jié)對(duì)齊,就需要少一位地址。行列地址加一起少一位。W956D8MBYA有64Mbit,即2^26,列地址還有3位,所以理論上行地址需要傳輸26-1-3=22位,即可尋址整個(gè)HyperRAM。然后向8位對(duì)齊,不然FlexSPI會(huì)在低位補(bǔ)0,就不是我們要訪問的地址了。所以參數(shù)為0x18,即24位。

實(shí)驗(yàn)驗(yàn)證 我們可以利用簡(jiǎn)單的AHB讀寫來驗(yàn)證此HyperRAM是否可以工作。

代碼如下:

for (i = 0; i < sizeof(s_psram_write_buffer); i++)


{


s_psram_write_buffer[i] = i;


}


memcpy((uint32_t*)(EXAMPLE_FLEXSPI_AMBA_BASE), s_psram_write_buffer, sizeof(s_psram_write_buffer));


memcpy(s_psram_read_buffer,(uint32_t*)(EXAMPLE_FLEXSPI_AMBA_BASE) , sizeof(s_psram_read_buffer));


if (memcmp(s_psram_read_buffer, s_psram_write_buffer,sizeof(s_psram_write_buffer)) == 0)


{


      PRINTF("AHB Command Read/Write data successfully !
");


}

當(dāng)你的串口打印出"AHB Command Read/Write data successfully!"

證明你的FlexSPI接HyperRAM現(xiàn)在可以正常工作啦!

作者:Hang Zhang

聲明:本文內(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)注

    48

    文章

    7953

    瀏覽量

    155087
  • NXP
    NXP
    +關(guān)注

    關(guān)注

    61

    文章

    1348

    瀏覽量

    189403
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    9005

    瀏覽量

    153763
  • HyperRAM
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    1655

原文標(biāo)題:MCX N947:FlexSPI接HyperRAM分析和配置

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    恩智浦MCU MCXN947 基于MCUXpresso Config tools創(chuàng)建IIC的教程步驟

    MCXN947是NXP推出的高性能微控制器,支持豐富的通信接口,如I2C。借助MCUXpresso Config Tools,開發(fā)者可快速配置I2C外設(shè),生成初始化代碼。該工具提供圖形化界面,簡(jiǎn)化
    的頭像 發(fā)表于 05-22 09:40 ?1167次閱讀
    恩智浦MCU <b class='flag-5'>MCXN947</b> 基于MCUXpresso Config tools創(chuàng)建IIC的教程步驟

    何在MCXN947微控制器上配置安全啟動(dòng)和生命周期

    本文檔旨在介紹如何在MCXN947微控制器上配置安全啟動(dòng)和生命周期,以確保產(chǎn)品在量產(chǎn)階段的安全性,防止代碼被竊取和篡改,并且能夠安全地升級(jí)更新固件。通過本應(yīng)用筆記,開發(fā)者可以更好地理解和實(shí)施安全啟動(dòng)和固件更新的最佳實(shí)踐。
    的頭像 發(fā)表于 06-26 09:49 ?1131次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>MCXN947</b>微控制器上配置安全啟動(dòng)和生命周期

    FRDM-MCXN947的純Linux命令行環(huán)境搭建

    =\'sudo /mnt/MyNAS/walker/.bin/JLink/JLinkExe -autoconnect 1 -device MCXN947 -if swd -speed
    發(fā)表于 07-28 22:55

    關(guān)于將Flash寫入FRDM-MCXN947的問題求解

    這次我想問一個(gè)關(guān)于使用 MCXN947 將 Flash 寫入另一個(gè)的問題。 我嘗試使用 FRDM-MCXN947 的寫入方法作為參考寫入此,但發(fā)生了錯(cuò)誤。 下面是當(dāng)時(shí)控制臺(tái)的內(nèi)容。
    發(fā)表于 03-17 06:29

    MCXN947使用ADC并編寫代碼,總是報(bào)警告是怎么回事?

    我使用 MCXN947,我想使用 ADC 并編寫代碼,但警告總是發(fā)生。然后我創(chuàng)建了一個(gè)新項(xiàng)目進(jìn)行調(diào)試,它仍然發(fā)生了。 我試著打掃,但還是沒用。 警告:無法將 \'main\' 從主機(jī)編碼 (CP1252) 轉(zhuǎn)換為 UTF-32。 這通常不會(huì)發(fā)生,請(qǐng)?zhí)峤?bug 報(bào)告。
    發(fā)表于 03-20 08:17

    MCXN947如何配置和外擴(kuò)PSRAM?

    mcxn947自帶的ram太小了,無法滿足需求,想外擴(kuò)一塊psram,比如樂鑫的esp-psram64芯片,這個(gè)需求有哪個(gè)案例可以參考嗎?
    發(fā)表于 03-31 06:54

    MCXN947怎么驅(qū)動(dòng)FRDM-STBI-A8974三軸陀螺儀?

    MCXN947怎么驅(qū)動(dòng)FRDM-STBI-A8974三軸陀螺儀
    發(fā)表于 04-14 10:50

    《電子發(fā)燒友電子設(shè)計(jì)周報(bào)》聚焦硬科技領(lǐng)域核心價(jià)值 第14期:2025.06.2--2025.06.6

    ChatGPT實(shí)現(xiàn)的MQTT智能家居項(xiàng)目 http://www.brongaenegriffin.com/d/6702868.html 7、如何在MCXN947FlexSPI
    發(fā)表于 06-07 16:46

    何在HyperRAM中讀/寫?

    flexspi 接口。該最初配備了 hyperFLASH,但經(jīng)過修改以接受組合芯片。 不幸的是,我不知道如何讓芯片正常工作。我可以從 hyperflash 訪問和啟動(dòng),但想知道如何在
    發(fā)表于 05-31 13:22

    FlexSPI1 ISSI HyperRAM初始化問題求解

    HYPERRAM_CMD_LUT_SEQ_IDX_READREG 2 #define HYPERRAM_CMD_LUT_SEQ_IDX_WRITEREG 3 flexspi_device_config_t devicecon
    發(fā)表于 06-09 08:29

    恩智浦MCX系列MCU的新品MCXN947

    鑒于 N54x 是 N94x 的簡(jiǎn)配版,我們今天主要聊 MCXN947 這個(gè)型號(hào)。老規(guī)矩先來看一下 MCXN947 內(nèi)部模塊框圖,它搭載了兩個(gè) Arm Cortex-M33 內(nèi)核,主頻可達(dá) 150MHz,此外還為 CM33 配備了 DSP 協(xié)處理器(PowerQuad)。
    的頭像 發(fā)表于 12-21 12:57 ?2639次閱讀

    《恩智浦FRDM-MCXN947開發(fā)實(shí)踐指南》上線啦

    RT-Thread率先支持NXPFRDM-MCXN947,并聯(lián)合恩智浦半導(dǎo)體推出了NXPFRDM-MCXN947開發(fā)評(píng)測(cè)活動(dòng)。測(cè)評(píng)活動(dòng)順利完成,并且有了不錯(cuò)的產(chǎn)出,我們將大家的測(cè)試文檔及代碼整理后
    的頭像 發(fā)表于 05-13 18:19 ?1861次閱讀
    《恩智浦FRDM-<b class='flag-5'>MCXN947</b>開發(fā)實(shí)踐指南》上線啦

    使用VSCode調(diào)試FRDM MCXN947開發(fā)

    想必關(guān)注MCXN947系列MCU的朋友們已經(jīng)知道板載MCXN947的FRDM開發(fā)已經(jīng)正式和大家見面了。
    的頭像 發(fā)表于 05-16 11:16 ?1285次閱讀
    使用VSCode調(diào)試FRDM <b class='flag-5'>MCXN947</b>開發(fā)<b class='flag-5'>板</b>

    MCXN947系列高性能微控制器產(chǎn)品介紹

    基于Arm? Cortex?-M33的雙核邊緣人工智能新品MCXN947系列,搭配功能強(qiáng)大且完全開源的AWTK GUI框架,可輕松令產(chǎn)品方案實(shí)現(xiàn)成本與性能的完美平衡。
    的頭像 發(fā)表于 08-06 16:14 ?1890次閱讀
    <b class='flag-5'>MCXN947</b>系列高性能微控制器產(chǎn)品介紹

    使用NXP MCX-N板卡搭建環(huán)境及點(diǎn)燈

    FRDM-MCXN947開發(fā)是一個(gè)基于MCXN947器件的低成本設(shè)計(jì)的評(píng)估。MCXN947器件將兩個(gè)Arm Cortex-M33微控制
    的頭像 發(fā)表于 02-12 09:07 ?747次閱讀
    使用NXP MCX-N板卡搭建環(huán)境及點(diǎn)燈