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

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

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

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

STM32單片機(jī) ? 來(lái)源:未知 ? 2023-08-04 08:05 ? 次閱讀

關(guān)鍵字:Octo-SPI, Quad Serial Flash

目錄預(yù)覽

1 引言2 問(wèn)題分析3 問(wèn)題解決

4 小結(jié)

1. 引言

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

2.問(wèn)題分析

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

6cc038be-325a-11ee-9e74-dac502259ad0.png

6cebba8e-325a-11ee-9e74-dac502259ad0.png

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

6d11ce72-325a-11ee-9e74-dac502259ad0.png

3.問(wèn)題解決

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

分析代碼發(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ù)會(huì)降低效率,造成延遲,于是修改代碼如下:

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

…STM32Cube_FW_L4_VxxProjects32L4R9IDISCOVERYExamplesOSPIOSPI_NOR_ReadWrite_DMAEWARM

另外程序中做如下改動(dòng):

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

hdma.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;

hdma.Init.MemDataAlignment = DMA_PDATAALIGN_WORD;

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

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

6d322aa0-325a-11ee-9e74-dac502259ad0.png

6d79e958-325a-11ee-9e74-dac502259ad0.png

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

4. 小結(jié)

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

完整內(nèi)容請(qǐng)點(diǎn)擊“閱讀原文”下載原文檔。

6db75658-325a-11ee-9e74-dac502259ad0.png

長(zhǎng)按掃碼關(guān)注公眾號(hào)

更多資訊,盡在STM32

點(diǎn)擊“閱讀原文”,可下載原文檔


原文標(biāo)題:應(yīng)用筆記 | STM32L4R9 的QuadSPI Flash 通訊速率不理想

文章出處:【微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。


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

    關(guān)注

    6030

    文章

    44499

    瀏覽量

    632173
  • STM32
    +關(guān)注

    關(guān)注

    2264

    文章

    10858

    瀏覽量

    354391

原文標(biāo)題:應(yīng)用筆記 | STM32L4R9 的QuadSPI Flash 通訊速率不理想

文章出處:【微信號(hào):STM32_STM8_MCU,微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于Pytorch訓(xùn)練并部署ONNX模型在TDA4應(yīng)用筆記

    電子發(fā)燒友網(wǎng)站提供《基于Pytorch訓(xùn)練并部署ONNX模型在TDA4應(yīng)用筆記.pdf》資料免費(fèi)下載
    發(fā)表于 09-11 09:24 ?0次下載
    基于Pytorch訓(xùn)練并部署ONNX模型在TDA<b class='flag-5'>4</b>應(yīng)<b class='flag-5'>用筆記</b>

    芯海通用 MCU應(yīng)用筆記 :在 IAR 及 MDK 開(kāi)發(fā)環(huán)境下使用 printf 函數(shù)重定向移植差異指南

    對(duì) printf 函數(shù)支持的差異。并在本應(yīng)用筆記結(jié)尾處給出可以一鍵移植到 Keil、IAR8.x、IAR9.x 版本下的通用重定向代碼。 Keil 和 IAR 都是常用的開(kāi)發(fā)工具 IDE,在實(shí)際項(xiàng)目開(kāi)發(fā)
    發(fā)表于 05-16 11:56

    芯海應(yīng)用筆記:通用 MCU 基于 IAR 芯片包 IAR9 開(kāi)發(fā)指南

    幫助指導(dǎo)用戶針對(duì)芯海通用 MCU 基于 IAR 環(huán)境進(jìn)行快速建立應(yīng)用工程,快速開(kāi)發(fā),并針對(duì)常見(jiàn)錯(cuò)誤問(wèn)題,給出解決辦法。*附件:應(yīng)用筆記:芯海通用MCU基于IAR芯片包IAR9開(kāi)發(fā)指南.pdf
    發(fā)表于 05-16 11:52

    芯海應(yīng)用筆記:通用 MCU Flash 讀寫(xiě)保護(hù)和 SWD 復(fù)用指導(dǎo)手冊(cè).

    本應(yīng)用筆記旨在幫助用戶了解芯??萍纪ㄓ?MCU Flash 讀寫(xiě)保護(hù)的相關(guān)注意事項(xiàng),同時(shí)針對(duì) SWD引腳鎖復(fù)用提供解決方案。本文檔所涉及到的解決方案可適用于芯海通用 MCU 產(chǎn)品的常見(jiàn)相關(guān)需求。*附件:應(yīng)用筆記:芯海通用MCUf
    發(fā)表于 05-16 11:44

    芯海CSU18P88應(yīng)用筆記

    本應(yīng)用筆記旨在為用戶提供關(guān)于CSU18P88的詳細(xì)信息和使用指南,幫助用戶快速開(kāi)發(fā)基于CSU18P88的應(yīng)用。*附件:CSU18P88應(yīng)用筆記V1.5.pdf
    發(fā)表于 05-16 10:24

    CSU18MX86應(yīng)用筆記

    本應(yīng)用筆記旨在為用戶提供關(guān)于CSU18MX86的詳細(xì)信息和使用指南,幫助用戶快速開(kāi)發(fā)基于CSU18MX86的應(yīng)用。*附件:CSU18MX86應(yīng)用筆記_V1.0.pdf
    發(fā)表于 05-16 10:21

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

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

    STM32CubeMX配置STM32L4R9ZI的硬件SDMMC缺少DMA Settings配置是怎么回事?

    STM32CubeMX配置STM32L4R9ZI的硬件SDMMC1,缺少DMA Settings配置?
    發(fā)表于 04-08 07:25

    使用STM32L4系列芯片時(shí),調(diào)試工具JLink必須是V9或以上版本嗎?

    大家好,我在使用JLink V8下載并調(diào)試STM32L4R9ZI芯片的時(shí)候發(fā)現(xiàn)會(huì)有警告框。參考正點(diǎn)原子“潘多拉STM32L475開(kāi)發(fā)板教程”,教程中建議使用調(diào)試工具JLink時(shí)候,必須是V9或以
    發(fā)表于 04-08 06:17

    STM32L4R9ZGT6運(yùn)行GUI_DELAY為何會(huì)清屏?

    使用STM32L4R9ZGT6,移植UCOSIII 和STMEMWIN 后,顯示字符,顯示圖片都正常,但是一運(yùn)行GUI_DELAY就清屏,是怎么回事情?gui_x_ucosiii 里的相關(guān)程序如下
    發(fā)表于 04-02 06:01

    STM32L4R5VGT6 flash超512K時(shí),無(wú)法下載的原因?

    the File 當(dāng)flash低于512K時(shí),就能正常下載。 2、當(dāng)注釋掉Fatfs相關(guān)函數(shù),發(fā)現(xiàn)超512K也是可以正常下載的。使用Fatfs相關(guān)函數(shù),flash超512K就無(wú)法下載。 STM32L4R5VGT6
    發(fā)表于 03-27 07:18

    stm32L4R9ZI在低功耗的停止模式或者待機(jī)模式下,是否支持獨(dú)立看門狗計(jì)數(shù)凍結(jié)?

    stm32L4R9ZI這款芯片,在低功耗的停止模式或者待機(jī)模式下,是否支持獨(dú)立看門狗計(jì)數(shù)凍結(jié)?
    發(fā)表于 03-27 06:04

    STM32L4R9ZI芯片不能燒錄,ST-LINK無(wú)法連接上是怎么回事?如何處理?

    STM32L4R9ZI芯片不能燒錄,ST-LINK無(wú)法連接上
    發(fā)表于 03-25 08:17

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

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

    stm32l4r9i-disco ARGB圖片不能正確顯示怎么解決?

    stm32l4r9i-disco開(kāi)發(fā),使用板子上帶的390 x 390 DSI屏顯示ARGB8888圖片。具體用到了 DMA2D,GFXMMU和LTDC,但是顯示有問(wèn)題。圖片一分為二,而且是從屏幕中間開(kāi)始顯示。請(qǐng)問(wèn)各位有沒(méi)有什么建議?
    發(fā)表于 03-19 07:17