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

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

3天内不再提示

STM32L4R9的QuadSPI Flash通讯速率不理想

jf_pJlTbmA9 来源:STM32单片机 作者:STM32单片机 2023-11-06 17:06 次阅读

1. 引言

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

2.问题分析

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

wKgZomUDwSqAGFUpAAGskzl0l7c028.png

wKgaomUDwSyAN1EQAABWuoxR0EQ125.png

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

wKgaomUDwS2Adm2SAABXCNk4Jx0454.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的倍数,不足的需要补齐。

wKgZomUDwS-AF7RpAAFVkeH39SQ736.png

wKgaomUDwTmAeBiCAAe4kOuKORY077.png

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

4. 小结

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

来源:STM32单片机

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

    关注

    10

    文章

    1619

    浏览量

    147709
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10816

    浏览量

    211008
  • 通讯
    +关注

    关注

    9

    文章

    891

    浏览量

    34825
  • 总线
    +关注

    关注

    10

    文章

    2863

    浏览量

    87965
收藏 人收藏

    评论

    相关推荐

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

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

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

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

    STM32L4R9如何节省空间和成本

    STM32L4R9:利用 HyperBus 扩展微型物联网和可穿戴式设计中的存储器以节省空间和成本
    发表于 12-31 07:42

    STM32L4R9复位标志始终为0为什么会这样

    细节:单片机:STM32L4R9ZGJ6集成开发环境:STM32CubeIDE v1.6.1开发工具包:STM32Cube_FW_L4_V1.14.0电路板:定制印刷电路板我看到非常奇怪的行为,其中
    发表于 12-02 06:56

    探索板上停止模式下的STM32L4R9功耗数据与电气特性不匹配怎么处理?

    您好,我们目前正在与我的团队一起研究 DISCOVERY 板上 STM32L4R9 MCU 的低功耗特性。 我们正在测量 JP1 上的电流消耗,在引脚 3 和 2 之间插入一个外部电流表。我们想在
    发表于 12-05 06:45

    请问如何在STM32L4R9上实现CANOpen协议?

    我正在使用 STWIN SensorTile 无线工业节点开发板,它有一个微型超低功耗 ARM Cortex-M4 MCU,频率为 120 MHz,带有 FPU,2048 KB 闪存 (STM32L4R9)。我需要与使用 CANopen 的设备连接,是否可以使用开源库在该
    发表于 12-09 07:43

    STM32L4R9 LQFP100可以支持多路复用hyperbus ram/flash设备吗?

    你好根据数据表,STM32L4R9 LQFP100 设备应该能够支持多路复用 hyperbus ram/flash 设备。(例如cypress S71KSS12SCO)但是在 STM32
    发表于 01-03 07:04

    如何将SPI与STM32L4R9探索板一起使用?

    不幸的是,STM32L4R9 Disco 板上没有为 SPI 提供示例。我可以从用户手册中得知,我需要将电路板上的四通道 SPDT 开关设置为 SPI 配置。如果我理解用户手册中的表20,我需要
    发表于 01-11 08:17

    STM32L4R9芯片的图形加速器DMA2D实例使用

    摘要:本文首先介绍STM32L4R9芯片的图形特性及相关的硬件模块,以及图形显示时各个模块的功能划分。尤其是针对DMA2D模块,详细描述主要特性和支持的颜色模式,以及不同颜色模式之间像素的转换。然后
    发表于 02-07 14:27

    基于STM32L4R9I-DISCO的低功耗系统设计

    本动手实验的目的是学会自己构建工程,实现STM32L4R9不同的低功耗模式和理解如何进入、退出的触发机制,并且对比分析实测功耗和理论推导功耗。• 实验1 :STM32L4R9低功耗模式和特性• 任务
    发表于 09-07 07:08

    利用QuadSPI外扩串行NOR Flash的实现

    利用QuadSPI外扩串行NOR Flash的实现(嵌入式开发软件学习)-STM32提供了灵活多样的外扩存储器访问实现。本文中,介绍如何利用QSPI (QuadSPI) 外扩串行NOR
    发表于 07-30 11:02 16次下载
    利用<b class='flag-5'>QuadSPI</b>外扩串行NOR <b class='flag-5'>Flash</b>的实现

    AN4943_STM32L496_L4A6_L4R_L4S上LCD显示刷新

    AN4943_STM32L496_L4A6_L4R_L4S上LCD显示刷新
    发表于 11-21 17:06 0次下载
    AN4943_<b class='flag-5'>STM32L496_L4A6_L4R_L4</b>S上LCD显示刷新

    UM2248_板载STM32L4R9AI微控制器的评估板

    UM2248_板载STM32L4R9AI微控制器的评估板
    发表于 11-22 08:22 0次下载
    UM2248_板载<b class='flag-5'>STM32L4R9</b>AI微控制器的评估板

    STM32L4R9I-DISCO的低功耗系统设计实验

    电子发烧友网站提供《STM32L4R9I-DISCO的低功耗系统设计实验.pdf》资料免费下载
    发表于 08-01 10:18 0次下载
    <b class='flag-5'>STM32L4R9</b>I-DISCO的低功耗系统设计实验

    应用笔记 | STM32L4R9QuadSPI Flash 通讯速率不理想

    关键字:Octo-SPI, Quad Serial Flash 目录预览 1 引言 2 问题分析 3 问题解决 4 小结 1. 引言 客户反应STM32L4R9 同QSPI Flash
    的头像 发表于 08-04 08:05 1305次阅读
    应用笔记 | <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>