0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

应用笔记 | STM32L4R9 的QuadSPI Flash 通讯速率不理想

STM32单片机 来源:未知 2023-08-04 08:05 次阅读

关键字:Octo-SPI, Quad Serial Flash

目录预览

1 引言2 问题分析3 问题解决

4 小结

1. 引言

客户反应STM32L4R9 同QSPI Flash 通讯,测出来的读取速率为10MB/s, 和理论值相差较大。

2.问题分析

按照客户的时钟配置和STM32L4R9 的数据手册中的数据,OSPI 读数速率为10MB/s肯定存在问题。同时我们也可以在AN4760 应用手册中看到如下说明:

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

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

在客户系统中,IO0~IO3的4线通讯模式下信号波形如下图,可以看出每经过8 个CLK周期就有很长一段时间的延时。如果提高CPU的主频,这个延时会缩短,但客户测到最短的延时也有200ns,并且一直存在:

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

3.问题解决

从客户测试波形上看,由于是4条数据线,因此8个clock正好是4bytes,也就是32bits数据。怀疑STM32L4R9 QSPI在DMA通讯中,读到一个word(32bits)数据后需要在内部做一定的数据处理,造成时间延迟。

分析代码发现,DMA设置的是byte传输模式,如下面代码:

#define BUFFERSIZE (COUNTOF(aTxBuffer) - 1)

hdma.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;

hdma.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;

STM32L4R9是Cortex-M4 内核,系统总线是32bits的,怀疑是在32bit总线上传输byte数据会降低效率,造成延迟,于是修改代码如下:

示例代码在下面路径,需要使用附件中的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的倍数。

修改代码后进行测试,代码读 4096bytes的图像(1026 words),发现每个word数据中间的延迟已经没有了。之前速度提不上去的问题是DMA byte设置引起,因为STM32L4R9是32bits系统,使用8bits传输会降低效率,需要改为DMA 32bits配置就OK了。图形数据传输的总字节数也要设置为4的倍数,不足的需要补齐。

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

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

DMA改为word设置后数据传输时没有延迟

4. 小结

对32位系统来说,使用byte的数据传输在一些情况下会降低效率,建议对32bits系统使用32bits的数据传输方式。

完整内容请点击“阅读原文”下载原文档。

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

长按扫码关注公众号

更多资讯,尽在STM32

点击“阅读原文”,可下载原文档


原文标题:应用笔记 | STM32L4R9 的QuadSPI Flash 通讯速率不理想

文章出处:【微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6037

    文章

    44558

    浏览量

    635195
  • STM32
    +关注

    关注

    2270

    文章

    10900

    浏览量

    355957

原文标题:应用笔记 | STM32L4R9 的QuadSPI Flash 通讯速率不理想

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于Pytorch训练并部署ONNX模型在TDA4用笔记

    电子发烧友网站提供《基于Pytorch训练并部署ONNX模型在TDA4用笔记.pdf》资料免费下载
    发表于 09-11 09:24 0次下载
    基于Pytorch训练并部署ONNX模型在TDA<b class='flag-5'>4</b>应<b class='flag-5'>用笔记</b>

    芯海通用 MCU应用笔记 :在 IAR 及 MDK 开发环境下使用 printf 函数重定向移植差异指南

    对 printf 函数支持的差异。并在本应用笔记结尾处给出可以一键移植到 Keil、IAR8.x、IAR9.x 版本下的通用重定向代码。 Keil 和 IAR 都是常用的开发工具 IDE,在实际项目开发
    发表于 05-16 11:56

    芯海应用笔记:通用 MCU 基于 IAR 芯片包 IAR9 开发指南

    帮助指导用户针对芯海通用 MCU 基于 IAR 环境进行快速建立应用工程,快速开发,并针对常见错误问题,给出解决办法。*附件:应用笔记:芯海通用MCU基于IAR芯片包IAR9开发指南.pdf
    发表于 05-16 11:52

    芯海应用笔记:通用 MCU Flash 读写保护和 SWD 复用指导手册.

    本应用笔记旨在帮助用户了解芯海科技通用 MCU Flash 读写保护的相关注意事项,同时针对 SWD引脚锁复用提供解决方案。本文档所涉及到的解决方案可适用于芯海通用 MCU 产品的常见相关需求。*附件:应用笔记:芯海通用MCUf
    发表于 05-16 11:44

    芯海CSU18P88应用笔记

    本应用笔记旨在为用户提供关于CSU18P88的详细信息和使用指南,帮助用户快速开发基于CSU18P88的应用。*附件:CSU18P88应用笔记V1.5.pdf
    发表于 05-16 10:24

    CSU18MX86应用笔记

    本应用笔记旨在为用户提供关于CSU18MX86的详细信息和使用指南,帮助用户快速开发基于CSU18MX86的应用。*附件:CSU18MX86应用笔记_V1.0.pdf
    发表于 05-16 10:21

    使用STM32L4R9单片机开发板,DfuSeDemo无法检测到设备的原因?

    使用STM32L4R9单片机开发板,官方例程STM32Cube_FW_L4_V1.16.0Projects32L4R9IDISCOVERYApplicationsUSB_DeviceDFU_Standalone 实现USB的IAP,下载完DFU程序后,DfuSeDemo无
    发表于 04-09 07:59

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

    STM32CubeMX配置STM32L4R9ZI的硬件SDMMC1,缺少DMA Settings配置?
    发表于 04-08 07:25

    使用STM32L4系列芯片时,调试工具JLink必须是V9或以上版本吗?

    大家好,我在使用JLink V8下载并调试STM32L4R9ZI芯片的时候发现会有警告框。参考正点原子“潘多拉STM32L475开发板教程”,教程中建议使用调试工具JLink时候,必须是V9或以
    发表于 04-08 06:17

    STM32L4R9ZGT6运行GUI_DELAY为何会清屏?

    使用STM32L4R9ZGT6,移植UCOSIII 和STMEMWIN 后,显示字符,显示图片都正常,但是一运行GUI_DELAY就清屏,是怎么回事情?gui_x_ucosiii 里的相关程序如下
    发表于 04-02 06:01

    STM32L4R5VGT6 flash超512K时,无法下载的原因?

    the File 当flash低于512K时,就能正常下载。 2、当注释掉Fatfs相关函数,发现超512K也是可以正常下载的。使用Fatfs相关函数,flash超512K就无法下载。 STM32L4R5VGT6
    发表于 03-27 07:18

    stm32L4R9ZI在低功耗的停止模式或者待机模式下,是否支持独立看门狗计数冻结?

    stm32L4R9ZI这款芯片,在低功耗的停止模式或者待机模式下,是否支持独立看门狗计数冻结?
    发表于 03-27 06:04

    STM32L4R9ZI芯片不能烧录,ST-LINK无法连接上是怎么回事?如何处理?

    STM32L4R9ZI芯片不能烧录,ST-LINK无法连接上
    发表于 03-25 08:17

    STM32L4R9驱动480*800的LCD屏幕,结果屏幕刷新看起来是逐行进行,刷新速度较慢,是否正常?

    请问一下,用STM32L4R9驱动480*800的LCD屏幕(采用一个数据通道),结果屏幕刷新看起来是逐行进行,刷新速度较慢,是否正常,如果有问题可能会是哪里?例程和资料都可以看出整屏同时刷新才对。谢谢
    发表于 03-22 07:04

    stm32l4r9i-disco ARGB图片不能正确显示怎么解决?

    stm32l4r9i-disco开发,使用板子上带的390 x 390 DSI屏显示ARGB8888图片。具体用到了 DMA2D,GFXMMU和LTDC,但是显示有问题。图片一分为二,而且是从屏幕中间开始显示。请问各位有没有什么建议?
    发表于 03-19 07:17