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

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

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

STM32L4R9的QuadSPI Flash通訊速率不理想

jf_pJlTbmA9 ? 來源:STM32單片機 ? 作者:STM32單片機 ? 2023-11-06 17:06 ? 次閱讀

1. 引言

客戶反應(yīng)STM32L4R9 同QSPI Flash 通訊,測出來的讀取速率為10MB/s, 和理論值相差較大。

2.問題分析

按照客戶的時鐘配置和STM32L4R9 的數(shù)據(jù)手冊中的數(shù)據(jù),OSPI 讀數(shù)速率為10MB/s肯定存在問題。同時我們也可以在AN4760 應(yīng)用手冊中看到如下說明:

wKgZomUDwSqAGFUpAAGskzl0l7c028.png

wKgaomUDwSyAN1EQAABWuoxR0EQ125.png

在客戶系統(tǒng)中,IO0~IO3的4線通訊模式下信號波形如下圖,可以看出每經(jīng)過8 個CLK周期就有很長一段時間的延時。如果提高CPU的主頻,這個延時會縮短,但客戶測到最短的延時也有200ns,并且一直存在:

wKgaomUDwS2Adm2SAABXCNk4Jx0454.png

3.問題解決

從客戶測試波形上看,由于是4條數(shù)據(jù)線,因此8個clock正好是4bytes,也就是32bits數(shù)據(jù)。懷疑STM32L4R9 QSPI在DMA通訊中,讀到一個word(32bits)數(shù)據(jù)后需要在內(nèi)部做一定的數(shù)據(jù)處理,造成時間延遲。

分析代碼發(fā)現(xiàn),DMA設(shè)置的是byte傳輸模式,如下面代碼:

#define BUFFERSIZE (COUNTOF(aTxBuffer) - 1)

hdma.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;

hdma.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;

STM32L4R9是Cortex-M4 內(nèi)核,系統(tǒng)總線是32bits的,懷疑是在32bit總線上傳輸byte數(shù)據(jù)會降低效率,造成延遲,于是修改代碼如下:

示例代碼在下面路徑,需要使用附件中的main.c文件替換掉下面文件中的main.c:

…STM32Cube_FW_L4_VxxProjects32L4R9IDISCOVERYExamplesOSPIOSPI_NOR_ReadWrite_DMAEWARM

另外程序中做如下改動:

#define BUFFERSIZE 1024 // (COUNTOF(aTxBuffer) - 1)

hdma.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;

hdma.Init.MemDataAlignment = DMA_PDATAALIGN_WORD;

配置時請留意OSPIHandle.Init.FifoThreshold = 4; //也需要4的倍數(shù)。

修改代碼后進行測試,代碼讀 4096bytes的圖像(1026 words),發(fā)現(xiàn)每個word數(shù)據(jù)中間的延遲已經(jīng)沒有了。之前速度提不上去的問題是DMA byte設(shè)置引起,因為STM32L4R9是32bits系統(tǒng),使用8bits傳輸會降低效率,需要改為DMA 32bits配置就OK了。圖形數(shù)據(jù)傳輸?shù)目傋止?jié)數(shù)也要設(shè)置為4的倍數(shù),不足的需要補齊。

wKgZomUDwS-AF7RpAAFVkeH39SQ736.png

wKgaomUDwTmAeBiCAAe4kOuKORY077.png

DMA改為word設(shè)置后數(shù)據(jù)傳輸時沒有延遲

4. 小結(jié)

對32位系統(tǒng)來說,使用byte的數(shù)據(jù)傳輸在一些情況下會降低效率,建議對32bits系統(tǒng)使用32bits的數(shù)據(jù)傳輸方式。

來源:STM32單片機

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1614

    瀏覽量

    147655
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10804

    瀏覽量

    210846
  • 通訊
    +關(guān)注

    關(guān)注

    9

    文章

    890

    瀏覽量

    34810
  • 總線
    +關(guān)注

    關(guān)注

    10

    文章

    2859

    瀏覽量

    87912
收藏 人收藏

    評論

    相關(guān)推薦

    STM32L4R9驅(qū)動480*800的LCD屏幕,結(jié)果屏幕刷新看起來是逐行進行,刷新速度較慢,是否正常?

    請問一下,用STM32L4R9驅(qū)動480*800的LCD屏幕(采用一個數(shù)據(jù)通道),結(jié)果屏幕刷新看起來是逐行進行,刷新速度較慢,是否正常,如果有問題可能會是哪里?例程和資料都可以看出整屏同時刷新才對。謝謝
    發(fā)表于 03-22 07:04

    使用STM32L4R9單片機開發(fā)板,DfuSeDemo無法檢測到設(shè)備的原因?

    使用STM32L4R9單片機開發(fā)板,官方例程STM32Cube_FW_L4_V1.16.0Projects32L4R9IDISCOVERYApplicationsUSB_DeviceDFU_Standalone 實現(xiàn)USB的IAP,下載完DFU程序后,DfuSeDemo無
    發(fā)表于 04-09 07:59

    STM32L4R9如何節(jié)省空間和成本

    STM32L4R9:利用 HyperBus 擴展微型物聯(lián)網(wǎng)和可穿戴式設(shè)計中的存儲器以節(jié)省空間和成本
    發(fā)表于 12-31 07:42

    STM32L4R9復(fù)位標(biāo)志始終為0為什么會這樣

    細(xì)節(jié):單片機:STM32L4R9ZGJ6集成開發(fā)環(huán)境:STM32CubeIDE v1.6.1開發(fā)工具包:STM32Cube_FW_L4_V1.14.0電路板:定制印刷電路板我看到非常奇怪的行為,其中
    發(fā)表于 12-02 06:56

    探索板上停止模式下的STM32L4R9功耗數(shù)據(jù)與電氣特性不匹配怎么處理?

    您好,我們目前正在與我的團隊一起研究 DISCOVERY 板上 STM32L4R9 MCU 的低功耗特性。 我們正在測量 JP1 上的電流消耗,在引腳 3 和 2 之間插入一個外部電流表。我們想在
    發(fā)表于 12-05 06:45

    請問如何在STM32L4R9上實現(xiàn)CANOpen協(xié)議?

    我正在使用 STWIN SensorTile 無線工業(yè)節(jié)點開發(fā)板,它有一個微型超低功耗 ARM Cortex-M4 MCU,頻率為 120 MHz,帶有 FPU,2048 KB 閃存 (STM32L4R9)。我需要與使用 CANopen 的設(shè)備連接,是否可以使用開源庫在該
    發(fā)表于 12-09 07:43

    STM32L4R9 LQFP100可以支持多路復(fù)用hyperbus ram/flash設(shè)備嗎?

    你好根據(jù)數(shù)據(jù)表,STM32L4R9 LQFP100 設(shè)備應(yīng)該能夠支持多路復(fù)用 hyperbus ram/flash 設(shè)備。(例如cypress S71KSS12SCO)但是在 STM32
    發(fā)表于 01-03 07:04

    如何將SPI與STM32L4R9探索板一起使用?

    不幸的是,STM32L4R9 Disco 板上沒有為 SPI 提供示例。我可以從用戶手冊中得知,我需要將電路板上的四通道 SPDT 開關(guān)設(shè)置為 SPI 配置。如果我理解用戶手冊中的表20,我需要
    發(fā)表于 01-11 08:17

    STM32L4R9芯片的圖形加速器DMA2D實例使用

    摘要:本文首先介紹STM32L4R9芯片的圖形特性及相關(guān)的硬件模塊,以及圖形顯示時各個模塊的功能劃分。尤其是針對DMA2D模塊,詳細(xì)描述主要特性和支持的顏色模式,以及不同顏色模式之間像素的轉(zhuǎn)換。然后
    發(fā)表于 02-07 14:27

    基于STM32L4R9I-DISCO的低功耗系統(tǒng)設(shè)計

    本動手實驗的目的是學(xué)會自己構(gòu)建工程,實現(xiàn)STM32L4R9不同的低功耗模式和理解如何進入、退出的觸發(fā)機制,并且對比分析實測功耗和理論推導(dǎo)功耗。? 實驗1 :STM32L4R9低功耗模式和特性? 任務(wù)
    發(fā)表于 09-07 07:08

    利用QuadSPI外擴串行NOR Flash的實現(xiàn)

    利用QuadSPI外擴串行NOR Flash的實現(xiàn)(嵌入式開發(fā)軟件學(xué)習(xí))-STM32提供了靈活多樣的外擴存儲器訪問實現(xiàn)。本文中,介紹如何利用QSPI (QuadSPI) 外擴串行NOR
    發(fā)表于 07-30 11:02 ?16次下載
    利用<b class='flag-5'>QuadSPI</b>外擴串行NOR <b class='flag-5'>Flash</b>的實現(xiàn)

    AN4943_STM32L496_L4A6_L4R_L4S上LCD顯示刷新

    AN4943_STM32L496_L4A6_L4R_L4S上LCD顯示刷新
    發(fā)表于 11-21 17:06 ?0次下載
    AN4943_<b class='flag-5'>STM32L496_L4A6_L4R_L4</b>S上LCD顯示刷新

    UM2271_板載STM32L4R9AI微控制器的探索板

    UM2271_板載STM32L4R9AI微控制器的探索板
    發(fā)表于 11-22 08:22 ?0次下載
    UM2271_板載<b class='flag-5'>STM32L4R9</b>AI微控制器的探索板

    STM32L4R9I-DISCO的低功耗系統(tǒng)設(shè)計實驗

    電子發(fā)燒友網(wǎng)站提供《STM32L4R9I-DISCO的低功耗系統(tǒng)設(shè)計實驗.pdf》資料免費下載
    發(fā)表于 08-01 10:18 ?0次下載
    <b class='flag-5'>STM32L4R9</b>I-DISCO的低功耗系統(tǒng)設(shè)計實驗

    應(yīng)用筆記 | STM32L4R9QuadSPI Flash 通訊速率不理想

    關(guān)鍵字:Octo-SPI, Quad Serial Flash 目錄預(yù)覽 1 引言 2 問題分析 3 問題解決 4 小結(jié) 1. 引言 客戶反應(yīng)STM32L4R9 同QSPI Flash
    的頭像 發(fā)表于 08-04 08:05 ?1293次閱讀
    應(yīng)用筆記 | <b class='flag-5'>STM32L4R9</b> 的<b class='flag-5'>QuadSPI</b> <b class='flag-5'>Flash</b> <b class='flag-5'>通訊</b><b class='flag-5'>速率</b><b class='flag-5'>不理想</b>