请选择 进入手机版 | 继续访问电脑版

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

STM32L4使用QSPI驱动spiFLASH(W25Q64)

[复制链接]
STMCU小助手 发布时间:2022-8-27 14:50
一、什么是QSPI
7 e2 c/ }! R6 o! s) H$ IQSPI 即Quad SPI,是一种专用的通讯接口,连接单、双或四(条数据线)SPI FLASH 存储器。
6 U- v8 m& V9 W( I4 _* w9 Z! N简单的来说,QSPI就是为了驱动SPI_FLASH所设计的专用的通信协议,他和标准的SPI协议有很多相似的地方,但是我认为将它看作一种单独的通信协议更好理解。
9 d- I2 `; \0 p% x8 QQSPI可以工作在单数据线、双数据线或四条数据线通信方式下。* C) F9 ^$ r: \9 m& D$ ]
而BearPi开发板的W25Q64即硬件连接为双数据线通信方式。8 s9 Q3 g1 l& l4 K" O: Z
20200111094348504.png
! x& f3 c. L$ h7 T0 u3 E( n. m! t9 {
(这里应该为原理图标识有误,W25Q64应当为NorFLASH)3 X) J" u$ x7 J9 C' q$ \

  _$ m! [$ w* Q- o$ \: ~: K; H二、CubeMX的配置$ d2 y1 E' R& m$ Z& |+ w5 Q- K
在之前新建工程的基础上添加使用SPI功能(新建工程见STM32使用LL库建立工程)
0 [+ l$ {1 q0 G3 h" s$ \4 r- {将QSPI选择为单/双线模式. y5 B0 k/ K0 x' t
8 G' U- J, A) A. o
20200111095008972.png , c. l- ^4 L* G* r0 X3 S
: U4 X0 Y  V- }2 A8 ]+ W
然后查看硬件连接表,发现与默认引脚不同,需要手动修改引脚
" @. a, C7 F' S1 D& J2 [# z# U% S# T  x' X! f8 W0 M
20200111095313165.png 7 N$ R( _5 B" t# A  `( Y8 Q, W

4 ?/ m+ S0 I8 ~  m 20200111095641400.png 5 [/ Q; B% b0 I& \. f/ N/ y

6 q% a: S. G. j然后对QSPI进行初始化配置
" M. \/ |9 M7 U) l& J6 L8 Q/ D首先是时钟分频设置,W25Q64在标准模式下支持80M bit/s速度,快速模式下支持160M bit/s速度,高速模式下支持320M bit/s速度。
7 v6 X+ W, M# Z1 K) q/ P所以我们可以将分频值设置为0,则MCU输出的QSPI频率就为80/(0+1)=40MHz。5 ~( p* }# x" J: R' `
( q: C$ r- x& f
20200111102807884.png
& S' r$ f4 B  s- B* x8 b+ X4 ]& k  t, M4 M4 u4 L
然后我神奇的发现QSPI没有LL库的支持,只有HAL库,然后我废了一天的功夫把stm32l4xx_hal_qspi库里的一些必要的函数提取出来,写了一个stm32l4xx_my_qspi的库函数,最后移植正点原子的w25qxx文件,经过测试成功。* Q7 K* ?9 _4 m' U2 c& n" W! V

! J1 e/ y+ ^  I) ]; W- c 20200112001416607.png * p2 Z% p8 L: `$ F0 i* O0 h
* H; o, |- L. e3 F2 i
————————————————
) E4 r! G* _2 a+ w* G* c9 ^  h转载:Willliam_william
8 A3 X. ]/ ~, \) N+ F4 S( Y) |1 y& D7 R; n+ w
! f8 o+ |( h' L5 V' _
收藏 评论0 发布时间:2022-8-27 14:50

举报

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