一、什么是QSPI QSPI 即Quad SPI,是一种专用的通讯接口,连接单、双或四(条数据线)SPI FLASH 存储器。 简单的来说,QSPI就是为了驱动SPI_FLASH所设计的专用的通信协议,他和标准的SPI协议有很多相似的地方,但是我认为将它看作一种单独的通信协议更好理解。 QSPI可以工作在单数据线、双数据线或四条数据线通信方式下。* C) F9 ^$ r: \9 m& D$ ] 而BearPi开发板的W25Q64即硬件连接为双数据线通信方式。8 s9 Q3 g1 l& l4 K" O: Z 0 u3 E( n. m! t9 { (这里应该为原理图标识有误,W25Q64应当为NorFLASH)3 X) J" u$ x7 J9 C' q$ \ 二、CubeMX的配置$ d2 y1 E' R& m$ Z& |+ w5 Q- K 在之前新建工程的基础上添加使用SPI功能(新建工程见STM32使用LL库建立工程) 将QSPI选择为单/双线模式. y5 B0 k/ K0 x' t 8 G' U- J, A) A. o : U4 X0 Y V- }2 A8 ]+ W 然后查看硬件连接表,发现与默认引脚不同,需要手动修改引脚 & J2 [# z# U% S# T x' X! f8 W0 M 然后对QSPI进行初始化配置 首先是时钟分频设置,W25Q64在标准模式下支持80M bit/s速度,快速模式下支持160M bit/s速度,高速模式下支持320M bit/s速度。 所以我们可以将分频值设置为0,则MCU输出的QSPI频率就为80/(0+1)=40MHz。5 ~( p* }# x" J: R' ` ( q: C$ r- x& f 8 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 * H; o, |- L. e3 F2 i ———————————————— 转载:Willliam_william ) |1 y& D7 R; n+ w ! f8 o+ |( h' L5 V' _ |
基于STM32L4R9 的QuadSPI Flash 通讯速率不理想经验分享
STM32L4超低功耗功能概述
基于STM32L431RC Standby和RTC中断唤醒经验分享
基于STM32L431的睡眠模式经验分享
STM32L4R9 的 QuadSPI Flash 通讯速率不理想
STM32L4、STM32L4+和STM32G4系列 微控制器上的专利代码读取保护
STM32L433在STOP模式USART不能工作的解决办法
【实测教程】基于STM32L4系列的实测教程分享合集
STM32L4系列MCU的五种振荡器和使用说明
【实测教程】STM32CubeMX-STM32L4之研究串口通信(printf)