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

STM32L4R9 的 QuadSPI Flash 通讯速率不理想

[复制链接]
STMCU小助手 发布时间:2023-2-14 16:21
1. 引言 客户反应 STM32L4R9 同 QSPI Flash 通讯,测出来的读取速率为 10MB/s, 和理论值相差较大。3 D* Q$ m7 _2 B3 F: m2 r

- o  ~; e% j5 ?9 C' \4 U 2. 问题分析" |1 x( R; E( {5 p. k, L# H2 k  i
按照客户的时钟配置和 STM32L4R9 的数据手册中的数据,OSPI 读数速率为 10MB/s 肯定存在问题。同时我们也可以在 AN4760 应用手册中看到如下说明:
9 x9 S8 S& i* C8 g- _( B
, h- m& w+ F6 F* Z/ ~7 R9 @

* z8 q( y; G/ A. g# v, S J_E26%$$[6_`$UJTB0`FR]N.png
1 E* z% {7 U2 k  r) u- U+ U, v0 H- v* |
J]4QWL0QKJ@A@L41Z8FGU~1.png
8 s$ }7 z$ X  j; u4 n3 m% Y$ g7 S2 C2 o$ C' V! |0 s, s

0 ?% y$ d- J& U. Q* H" @3 b2 U在客户系统中,IO0~IO3 的 4 线通讯模式下信号波形如下图,可以看出每经过 8 个CLK 周期就有很长一段时间的延时。如果提高 CPU 的主频,这个延时会缩短,但客户测到最短的延时也有 200ns,并且一直存在:
2 m$ Y- W: T  A# L7 F' c6 P) M' h7 f+ I2 U

' Q: {5 T1 ~2 `, y IR2~ST4W26[VL]]A9Z~HW`0.png $ t) w2 F& t& a8 T( S' w% `

1 q2 c4 C, A0 c/ M: t/ }/ n

+ R3 |  ?1 u1 { 3. 问题解
) I- @! A" t3 G: I4 {- ]3 J. [% q
# C+ y* v' s3 l
从客户测试波形上看,由于是 4 条数据线,因此 8 个 clock 正好是 4bytes,也就是32bits 数据。怀疑 STM32L4R9 QSPI 在 DMA 通讯中,读到一个 word(32bits)数据后需要在内部做一定的数据处理,造成时间延迟。
& I0 s, Y( P! k: X分析代码发现,DMA 设置的是 byte 传输模式,如下面代码:
0 m' ]9 K/ \9 a9 \3 q6 x# Q#define BUFFERSIZE (COUNTOF(aTxBuffer) - 1)
/ A6 N# v  F( r1 U# L$ H5 B* _hdma.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
/ }3 \' I2 Q/ R hdma.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; 0 _2 O6 A- {( V) {- E  y1 `

) ^: T1 v0 d; A9 L5 j4 P) i STM32L4R9 是 Cortex-M4 内核,系统总线是 32bits 的,怀疑是在 32bit 总线上传输byte 数据会降低效率,造成延迟,于是修改代码如下:
- h; u; ?0 N. d$ W) V0 B示例代码在下面路径,需要使用附件中的 main.c 文件替换掉下面文件中的 main.c:
$ `, g+ Y& E" y) O3 G7 t\STM32Cube_FW_L4_Vxx\Projects\32L4R9IDISCOVERY\Examples\OSPI\OSPI_NOR_ReadWrite_DMA\EWARM 4 V2 s7 q  o- s& O' q
另外程序中做如下改动:! T) X* z; n: D) S; H% q
#define BUFFERSIZE 1024 // (COUNTOF(aTxBuffer) - 1)
) J* `" F, U& q' p9 C2 ahdma.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD; hdma.Init.MemDataAlignment = DMA_PDATAALIGN_WORD; 配置时请留意 OSPIHandle.Init.FifoThreshold = 4;
  u  a. m, @# G2 W& j+ A, ^3 Z$ p //也需要 4 的倍数。修改代码后进行测试,代码读 4096bytes 的图像(1026 words),发现每个 word 数据中间的延迟已经没有了。之前速度提不上去的问题是 DMA byte 设置引起,因为STM32L4R9 是 32bits 系统,使用 8bits 传输会降低效率,需要改为 DMA 32bits 配置就OK 了。图形数据传输的总字节数也要设置为 4 的倍数,不足的需要补: [6 \( K& b7 r. J8 s7 t

+ r. R* f0 ?. ?; L: A8 ^) n: t/ J )DU)7O7MH_JF}1GIKF8M8G4.png + I; H5 v- L; \- c. q% D
5 u6 M" C+ x* j" L% @: n( \
完整版请查看:附件 LAT1180_QSPI flash 速率过慢问题_v1.0.pdf (428.75 KB, 下载次数: 1)
收藏 评论0 发布时间:2023-2-14 16:21

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版