你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于STM32L4R9 的QuadSPI Flash 通讯速率不理想经验分享

[复制链接]
STMCU小助手 发布时间:2023-8-18 13:12
1. 引言
客户反应STM32L4R9 同QSPI Flash 通讯,测出来的读取速率为10MB/s, 和理论值相差较大。
2. 问题分析

$ I! C2 ~3 N5 v6 \6 {
按照客户的时钟配置和STM32L4R9 的数据手册中的数据,OSPI 读数速率为10MB/s肯定存在问题。同时我们也可以在AN4760 应用手册中看到如下说明:
微信图片_20230818131008.png
- X! L4 R$ F5 {1 }/ c' z. e4 l
微信图片_20230818131009_2.png

* W  F( R/ R5 ?- _  `  _4 c; z0 X
在客户系统中,IO0~IO3的4线通讯模式下信号波形如下图,可以看出每经过8 个CLK周期就有很长一段时间的延时。如果提高CPU的主频,这个延时会缩短,但客户测到最短的延时也有200ns,并且一直存在:
( D; u$ I. e; q0 [9 \! h! S% u
微信图片_20230818131009_1.png

& G2 p5 E4 c* M, S- w9 z7 q
3. 问题解决
4 J2 `0 R4 U2 b% J4 O. N; a' B" b
从客户测试波形上看,由于是4条数据线,因此8个clock正好是4bytes,也就是32bits数据。怀疑STM32L4R9 QSPI在DMA通讯中,读到一个word(32bits)数据后需要在内部做一定的数据处理,造成时间延迟。
6 m" g3 c, O% R- z1 F
分析代码发现,DMA设置的是byte传输模式,如下面代码:
#define BUFFERSIZE (COUNTOF(aTxBuffer) - 1)
hdma.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
hdma.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
' P- I* ?5 h& P, M8 [
STM32L4R9是Cortex-M4 内核,系统总线是32bits的,怀疑是在32bit总线上传输byte数据会降低效率,造成延迟,于是修改代码如下:
示例代码在下面路径,需要使用附件中的main.c文件替换掉下面文件中的main.c:
…\STM32Cube_FW_L4_Vxx\Projects\32L4R9IDISCOVERY\Examples\OSPI\OSPI_NOR_ReadWrite_DMA\EWARM
另外程序中做如下改动:
#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的倍数,不足的需要补齐。
微信图片_20230818131009.png
微信图片_20230818131010.png
DMA改为word设置后数据传输时没有延迟
4. 小结

  Q, w# n9 m$ \0 k) o; G
对32位系统来说,使用byte的数据传输在一些情况下会降低效率,建议对32bits系统使用32bits的数据传输方式。转载自: STM32单片机如有侵权请联系删除
& |" }6 V# c5 p) @4 ~  I  w  C  y) U

) D* K+ L8 V+ u  p) H

# G  t" s: b5 i0 r0 Y

9 b! O# D3 m9 `2 H# V% T' }
收藏 评论0 发布时间:2023-8-18 13:12

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版