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

STM32L4使用QSPI驱动spiFLASH(W25Q64)

[复制链接]
STMCU小助手 发布时间:2022-8-27 14:50
一、什么是QSPI
3 `7 U! V7 m2 ]6 fQSPI 即Quad SPI,是一种专用的通讯接口,连接单、双或四(条数据线)SPI FLASH 存储器。
" Y4 M3 D+ g2 L4 g0 J简单的来说,QSPI就是为了驱动SPI_FLASH所设计的专用的通信协议,他和标准的SPI协议有很多相似的地方,但是我认为将它看作一种单独的通信协议更好理解。
* M  A2 `, h) C% V. h: k$ BQSPI可以工作在单数据线、双数据线或四条数据线通信方式下。
9 w  ?* S. z" ]' z/ s而BearPi开发板的W25Q64即硬件连接为双数据线通信方式。
4 n7 ^8 M+ [- o1 E! F/ A# G 20200111094348504.png
3 y# O* W: W$ d6 Z
# m* F; F8 M! ~1 w- B0 Y(这里应该为原理图标识有误,W25Q64应当为NorFLASH)# _5 F- M' Y( A. |# V7 |/ g, a
/ Z) V; `6 l# _& B5 Y5 e
二、CubeMX的配置
5 N1 V$ Z- L; g$ b* Q1 e1 e在之前新建工程的基础上添加使用SPI功能(新建工程见STM32使用LL库建立工程)2 {3 {$ `& S7 u% \0 Z1 C
将QSPI选择为单/双线模式8 F* r! x+ p3 G3 J

! E9 v; r- ]2 B5 _  W+ R 20200111095008972.png
2 O% p$ S- b. g$ u3 z4 b# d% L& [  r  d9 v6 o" O2 {: X, C7 q
然后查看硬件连接表,发现与默认引脚不同,需要手动修改引脚- K. |3 U0 j6 J7 Y( F; X' V
  o  g% ]1 x( |& W2 m
20200111095313165.png 0 G7 v, y# B; W
+ g! p) W* G1 E( O
20200111095641400.png 3 T$ ?& q  t: n' P
! N3 E) _4 y7 h" N+ H5 d& z' ]2 [
然后对QSPI进行初始化配置# S5 j8 T2 k# y& h
首先是时钟分频设置,W25Q64在标准模式下支持80M bit/s速度,快速模式下支持160M bit/s速度,高速模式下支持320M bit/s速度。
6 r, r+ k. Z- M2 s: p所以我们可以将分频值设置为0,则MCU输出的QSPI频率就为80/(0+1)=40MHz。
8 c2 A4 [/ [( ?" s7 S; t/ m2 \
, [$ R1 {: Y7 n 20200111102807884.png ) Y6 X; j- w. }9 k  E% T4 m. n+ h

" V0 \; k7 M. \! }$ f+ K+ l然后我神奇的发现QSPI没有LL库的支持,只有HAL库,然后我废了一天的功夫把stm32l4xx_hal_qspi库里的一些必要的函数提取出来,写了一个stm32l4xx_my_qspi的库函数,最后移植正点原子的w25qxx文件,经过测试成功。: U" a; u$ m# _  L
( P  J- i0 z$ ^& r8 A
20200112001416607.png
2 |; d8 \% P9 A% H& G0 t+ P/ m
! b; M; N( e" c1 p7 a0 t5 O" l————————————————
+ Z8 Z  J. k! ]% f/ r3 _转载:Willliam_william
+ D# F3 o3 r. j, d- R2 ]1 V
# j; F* @# G- g/ a4 A2 e: c' F! M+ A. |: [4 ^
收藏 评论0 发布时间:2022-8-27 14:50

举报

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