91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

使用極海APM32F427驅(qū)動(dòng)QSPI XIP內(nèi)存映射流程

Geehy極海半導(dǎo)體 ? 來源:21ic論壇極海半導(dǎo)體專區(qū) ? 2025-12-29 11:13 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

《APM32芯得》系列內(nèi)容為用戶使用APM32系列產(chǎn)品的經(jīng)驗(yàn)總結(jié),均轉(zhuǎn)載自21ic論壇極海半導(dǎo)體專區(qū),全文未作任何修改,未經(jīng)原文作者授權(quán)禁止轉(zhuǎn)載。

1. QSPI XIP 是個(gè)啥??

? QSPI(Quad SPI)和普通 SPI 的主要區(qū)別在于:

– 數(shù)據(jù)線從原本的 MOSI/MISO 升級(jí)為 IO0~IO3 四線,速度噌噌往上飆。傳統(tǒng)SPI通信與QSPI通信對(duì)比圖:

d754191a-dee8-11f0-8c8f-92fbcf53809c.png

控制器提供指令、地址階段的自動(dòng)管理以及內(nèi)存映射模式,更加“省心”。

? XIP (eXecute In Place) 就是 QSPI 內(nèi)存映射的“王牌功能”。

– 傳統(tǒng) SPI:讀寫外部 Flash 時(shí),每次都要軟件發(fā)送指令、配置地址。煩!

– QSPI + XIP:把外部 Flash 直接映射到 MCU 地址空間,讀數(shù)據(jù)就像讀內(nèi)存一樣簡(jiǎn)單。

讀取外部flash時(shí),使用不同形式讀取示意:

d7ae6dac-dee8-11f0-8c8f-92fbcf53809c.png

2.板載 W25Q16JV 外部 Flash

APM32F427 Tiny 板子上放了 W25Q16JV (16Mbit 容量),支持 Quad I/O、Fast Read 等多種讀指令。只要采用正確的指令碼、地址模式和 Dummy Cycle,就能高速訪問它。

3.驅(qū)動(dòng)QSPI XIP內(nèi)存映射流程(代碼示例)

下面這部分源自APM32F4xx_DAL_SDK_V1.3.0中的示例工程,并基于“QSPI_ReadWrite”例程進(jìn)行修改,演示如何實(shí)現(xiàn)W25Q16JV的擦除、寫入、讀取,以及如何進(jìn)入XIP內(nèi)存映射模式。

3.1 基礎(chǔ)讀寫操作

還沒上 XIP,就先測(cè)試基本的擦寫流程,保證外部 Flash 的讀寫通路 OK。大致就幾步:

1. 擦除指定扇區(qū)。

2. 寫入測(cè)試數(shù)據(jù)。

3. 再回讀來對(duì)比。

4. Check 成功則萬事俱備。

示例代碼片段如下:

/* Erase sector */

FLASH_EraseSector(0);

LOG_Print("FLASH_EraseSector (Sector 0 erased). ");

LOG_Print("Data read from offset 0 via QSPI. Dump rxBuffer: ");

FLASH_ReadData(0, rxBuffer, BUFFER_SIZE);

PrintArray32((uint32_t *)rxBuffer, BUFFER_SIZE / sizeof(uint32_t));

/* Write data */

FLASH_WriteData(0, txBuffer, BUFFER_SIZE);

LOG_Print("Data written to offset 0 via QSPI. Dump txBuffer: ");

PrintArray32((uint32_t *)txBuffer, BUFFER_SIZE / sizeof(uint32_t));

/* Read data */

FLASH_ReadData(0, rxBuffer, BUFFER_SIZE);

LOG_Print("Data read from offset 0 via QSPI. Dump rxBuffer: ");

PrintArray32((uint32_t *)rxBuffer, BUFFER_SIZE / sizeof(uint32_t));

/* Compare data */

if (BufferCmp((uint8_t*)txBuffer, (uint8_t*)rxBuffer, BUFFER_SIZE) != true)

{

BOARD_LED_On(LED3);

LOG_Print("Data compare failed! Error_Handler. ");

Error_Handler();

}

LOG_Print("Data compare success! ");

3.2 一鍵切換 XIP 模式

基礎(chǔ)讀寫沒問題后,就可以開啟 XIP。只需在 main.c 調(diào)用一個(gè) FLASH_EnterXIPMode() 函數(shù),它的核心是利用 QSPI 控制器的 MemoryMapped 功能:

void FLASH_EnterXIPMode(void)

{

QSPI_XIPTypeDef xipConfig = {0};

// 1) Instruction code: 0xEB (Quad I/O Fast Read)

xipConfig.Instruction = 0xEB;

// 2) WrapCode: if not using wrap, set 0

xipConfig.WrapCode = 0x00;

// 3) Address size: 24 bits, suitable for W25Q16JV

xipConfig.AddressSize = QSPI_XIP_ADDRESS_SIZE_24_BITS;

// 4) InstructionMode: how instruction and address are transmitted

// e.g. QSPI_XIP_INSTRUCTION_STANDARD_INS_ADDR, QSPI_XIP_INSTRUCTION_FRF_INS_ADDR

xipConfig.InstructionMode = QSPI_XIP_INSTRUCTION_STANDARD_INS;

// 5) Instruction bit length

xipConfig.InstructionSize = QSPI_XIP_INSTRUCTION_SIZE_8_BITS;

// 6) FrameFormat: QUAD

xipConfig.FrameFormat = QSPI_XIP_FRAME_FORMAT_QUAD;

// 7) DummyCycles: typically 6~10 cycles for 0xEB in W25Q16JV

xipConfig.DummyCycles = 6;

// 8) Endianness: little-endian

xipConfig.Endianness = QSPI_XIP_MEM_ACCESS_FORMAT_LITTLE_ENDIAN;

// 9) ContinuousMode / PrefetchMode

// For higher performance, can enable them if needed

xipConfig.ContinuousMode = ENABLE;

xipConfig.PrefetchMode = ENABLE;

// Enable chip select, then call the library function to enter memory-mapped mode

FLASH_ChipSelect(ENABLE);

if (DAL_QSPIEx_MemoryMapped(&hqspi, &xipConfig) != DAL_OK)

{

Error_Handler();

}

}

代碼中的配置要點(diǎn)主要是根據(jù)連接的SPI flash參數(shù)所決定的:

d80c1740-dee8-11f0-8c8f-92fbcf53809c.png

如圖所示我們需要使用的模式是

1.Fast Read Quad I/O:0xEB

2.地址是24Bit

等這個(gè)函數(shù)執(zhí)行完,W25Q16JV 就“掛”在了地址 0x90000000。此后,對(duì)該地址的訪問會(huì)自動(dòng)觸發(fā) READ 指令+地址+數(shù)據(jù)返回,無需編寫更多指令/地址邏輯??梢韵襁@樣驗(yàn)證:

FLASH_EnterXIPMode();

LOG_Print("XIP mode enabled. External flash is mapped at 0x90000000. ");

PrintArray32((uint32_t *)0x90000000, BUFFER_SIZE / sizeof(uint32_t));

只要打印出的數(shù)據(jù)和之前寫進(jìn)去的一樣,就說明XIP成功啦!

4.如何根據(jù)實(shí)驗(yàn)現(xiàn)象判斷XIP是否成功

1. 串口日志:read(0x90000000) 與原始寫入數(shù)據(jù)完全吻合,妥妥的 XIP。

2. 調(diào)試器內(nèi)存窗口(如 MDK、IAR):直接查看 0x90000000 區(qū)域,看到和 Flash 中相同的內(nèi)容,毫無違和感。

d86de308-dee8-11f0-8c8f-92fbcf53809c.png

總結(jié)

APM32F427 通過 QSPI XIP,讓外部 Flash 使用體驗(yàn)大幅提升:

– 免去頻繁發(fā)送指令、設(shè)置地址的煩惱;

– 連續(xù)讀速度快,代碼邏輯簡(jiǎn)單。

當(dāng)然,如果僅用于小數(shù)據(jù)量存儲(chǔ),XIP 可能不是必需。但一旦想實(shí)現(xiàn)就地執(zhí)行代碼(Execute In Place)或需要快速讀取遠(yuǎn)超內(nèi)部容量的數(shù)據(jù),XIP 就能讓項(xiàng)目如虎添翼。

注:文章作者在原帖中提供了代碼文件,有需要請(qǐng)至原文21ic論壇

原文地址:https://bbs.21ic.com/icview-3496231-1-1.html?_dsign=206adb5a

或點(diǎn)擊下方閱讀原文跳轉(zhuǎn)

聲明:本文內(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)投訴
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1748

    瀏覽量

    155508
  • 內(nèi)存映射
    +關(guān)注

    關(guān)注

    0

    文章

    16

    瀏覽量

    7614
  • QSPI
    +關(guān)注

    關(guān)注

    0

    文章

    55

    瀏覽量

    13355
  • 極海半導(dǎo)體
    +關(guān)注

    關(guān)注

    0

    文章

    209

    瀏覽量

    4825

原文標(biāo)題:APM32芯得 EP.69 | 給外部 Flash 安個(gè)家!——APM32F427 QSPI XIP 內(nèi)存映射輕松就搞定!

文章出處:【微信號(hào):geehysemi,微信公眾號(hào):Geehy極海半導(dǎo)體】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    APM32F427移植CherryUSB實(shí)現(xiàn)自定義USB HID設(shè)備

    最近需要使用到APM32F427枚舉成Custom HID設(shè)備進(jìn)行用戶自定義通信,但我又不想要使用官方的USB中間件去做一個(gè)USB Custom HID設(shè)備。了解到Cherry USB這個(gè)開源
    的頭像 發(fā)表于 01-20 09:52 ?3555次閱讀
    <b class='flag-5'>極</b><b class='flag-5'>海</b><b class='flag-5'>APM32F427</b>移植CherryUSB實(shí)現(xiàn)自定義USB HID設(shè)備

    半導(dǎo)體發(fā)布APM32F425/427系列高性能MCU 運(yùn)算、ADC、Flash控制器與通信接口四大維度革新

    聚焦工業(yè)4.0及能源管理應(yīng)用對(duì)主控MCU的高性能需求,正式發(fā)布APM32F425/427系列高性能拓展型MCU, 集合運(yùn)算性能、ADC性能、Flash控制器性能與通信接口 四大維度
    的頭像 發(fā)表于 08-27 18:14 ?3.7w次閱讀
    <b class='flag-5'>極</b><b class='flag-5'>海</b>半導(dǎo)體發(fā)布<b class='flag-5'>APM32F</b>425/<b class='flag-5'>427</b>系列高性能MCU 運(yùn)算、ADC、Flash控制器與通信接口四大維度革新

    關(guān)于APM32F1與Sxx32F1的兼容性問題

    、范例程序:可以使用相同的庫(kù)函數(shù)和范例程序,新增的功能通過添加對(duì)應(yīng)驅(qū)動(dòng)文件來完成 二、不同點(diǎn)1.APM32采用最新版本的M3內(nèi)核,增加了獨(dú)立的FPU單元,可以進(jìn)行單精度浮點(diǎn)運(yùn)算。2.QSPI接口
    發(fā)表于 01-07 16:29

    APM32F030R8 MINI開發(fā)板試用體驗(yàn)】+官方dma接收usart程序軟件

    接【APM32F030R8 MINI開發(fā)板免費(fèi)試用】+官方adc程序由于APM32F03
    發(fā)表于 12-24 12:34

    FAQ0130 AT32F435 437 QSPI XIP模式需開啟cache bypass

    AT32F435/437 QSPI XIP模式需開啟cache bypass在使用QSPI 時(shí),當(dāng)使用XIP 模式時(shí),運(yùn)行過程中讀寫外接器件
    發(fā)表于 10-23 06:15

    半導(dǎo)體新品上市—工業(yè)增強(qiáng)型APM32F091xC系列MCU

    半導(dǎo)體工業(yè)增強(qiáng)型APM32F091xC系列新品MCU,其在APM32F030xC的產(chǎn)品性能上實(shí)現(xiàn)增強(qiáng)優(yōu)化,為用戶提供豐富的通信方式。
    發(fā)表于 07-26 14:27 ?7371次閱讀
    <b class='flag-5'>極</b><b class='flag-5'>海</b>半導(dǎo)體新品上市—工業(yè)增強(qiáng)型<b class='flag-5'>APM32F</b>091xC系列MCU

    STM32CubeIDE XiP 和 BootROM介紹, XiP外部內(nèi)存QSPI FLASH執(zhí)行用戶代碼

    STM32CubeIDE XiP 和 BootROM介紹, XiP外部內(nèi)存QSPI FLASH執(zhí)行用戶代碼
    發(fā)表于 12-02 09:21 ?14次下載
    STM32CubeIDE <b class='flag-5'>XiP</b> 和 BootROM介紹, <b class='flag-5'>XiP</b>外部<b class='flag-5'>內(nèi)存</b><b class='flag-5'>QSPI</b> FLASH執(zhí)行用戶代碼

    APM32F407工業(yè)HMI應(yīng)用方案助您增強(qiáng)交互體驗(yàn)

    芯片的使用給工業(yè)HMI系統(tǒng)帶來性能與成本上的優(yōu)勢(shì)。APM32F407 HMI應(yīng)用方案可輕松實(shí)現(xiàn)圖像與數(shù)據(jù)顯示目標(biāo),滿足便捷、直觀的操作需求。針對(duì)工業(yè)控制領(lǐng)域,
    的頭像 發(fā)表于 05-19 16:24 ?1307次閱讀
    <b class='flag-5'>極</b><b class='flag-5'>海</b><b class='flag-5'>APM32F</b>407工業(yè)HMI應(yīng)用方案助您增強(qiáng)交互體驗(yàn)

    APM32F407 MCU低壓伺服驅(qū)動(dòng)器應(yīng)用方案

    同時(shí)提供低壓伺服驅(qū)動(dòng)器整個(gè)開發(fā)過程中的軟硬件技術(shù)支持與demo板。整機(jī)模塊工作過程如下:主控采用APM32F407高性能MCU,通過高級(jí)定時(shí)器,可輸出3組互補(bǔ)PWM來控制PMSM電
    發(fā)表于 06-09 17:13 ?1144次閱讀
    <b class='flag-5'>極</b><b class='flag-5'>海</b><b class='flag-5'>APM32F</b>407 MCU低壓伺服<b class='flag-5'>驅(qū)動(dòng)</b>器應(yīng)用方案

    推出首款電機(jī)控制專用芯片APM32F035系列MCU

    宣布正式推出首款高性能、高可靠性、高性價(jià)比的電機(jī)控制專用芯片—APM32F035系列MCU,覆蓋多種電機(jī)應(yīng)用。
    的頭像 發(fā)表于 07-28 17:13 ?2818次閱讀
    <b class='flag-5'>極</b><b class='flag-5'>海</b>推出首款電機(jī)控制專用芯片<b class='flag-5'>APM32F</b>035系列MCU

    基于半導(dǎo)體APM32F407系列MCU的伺服控制器應(yīng)用方案

    基于半導(dǎo)體APM32F407系列MCU的伺服控制器應(yīng)用方案
    的頭像 發(fā)表于 09-19 16:48 ?2304次閱讀
    基于<b class='flag-5'>極</b><b class='flag-5'>海</b>半導(dǎo)體<b class='flag-5'>APM32F</b>407系列MCU的伺服控制器應(yīng)用方案

    APM32F072xBT7硬件兼容ST電動(dòng)車應(yīng)用方案mcu

    APM32F072xBT7硬件兼容ST電動(dòng)車應(yīng)用方案MCU 隨著電動(dòng)車市場(chǎng)的不斷發(fā)展,對(duì)于電動(dòng)車控制器的要求也越來越高。而作為電動(dòng)車控制器的核心部件,MCU的選擇至關(guān)重要。
    的頭像 發(fā)表于 03-04 21:30 ?1512次閱讀

    基于APM32F035的屏蔽泵參考方案

    基于APM32F035電機(jī)控制專用MCU的屏蔽泵參考方案,可助力整機(jī)系統(tǒng)達(dá)到IE3的高效節(jié)能等級(jí),同時(shí)電路設(shè)計(jì)更緊湊與穩(wěn)定,成本效益相比傳統(tǒng)設(shè)計(jì)更高。APM32F035作為此參考方
    的頭像 發(fā)表于 01-18 09:50 ?1218次閱讀

    APM32F425/427系列MCU榮獲2025年度最能打的中國(guó)芯片獎(jiǎng)

    近日,2025年度“最能打的中國(guó)芯”獎(jiǎng)項(xiàng)評(píng)選正式公布。APM32F425/427系列高性能拓展型MCU脫穎而出,榮獲2025年度“最能打的中國(guó)芯”工業(yè)領(lǐng)域MCU獎(jiǎng)項(xiàng)。
    的頭像 發(fā)表于 01-08 14:26 ?1139次閱讀
    <b class='flag-5'>極</b><b class='flag-5'>海</b><b class='flag-5'>APM32F</b>425/<b class='flag-5'>427</b>系列MCU榮獲2025年度最能打的中國(guó)芯片獎(jiǎng)

    APM32F427系列MCU榮獲IEC 60730/60335功能安全認(rèn)證

    近日,APM32F427系列工業(yè)級(jí)高性能拓展型MCU,成功通過IEC 60730/60335功能安全認(rèn)證。這標(biāo)志著該系列產(chǎn)品在功能安全設(shè)計(jì)上已達(dá)到國(guó)際領(lǐng)先水平,能夠?yàn)榭蛻籼峁┓螩lass B標(biāo)準(zhǔn)的功能安全庫(kù),并助力其高效縮
    的頭像 發(fā)表于 02-09 09:15 ?747次閱讀
    <b class='flag-5'>極</b><b class='flag-5'>海</b><b class='flag-5'>APM32F427</b>系列MCU榮獲IEC 60730/60335功能安全認(rèn)證