基于STM32F767通过cube配置:QSPI接口读写64M PSRAM+flash参考资料/原理图/代码/教程等资料分享 + I' z3 x2 |5 l I1 K' [# d/ ~2 W核心板:NUCLEO-F767ZI Flash:NM25Q64EB(64M) * b* @ x) w1 C- T( D, Y$ @PSRAM:IPS6404L(64M SO-8封装QSPI接口) # n$ |" f5 W5 F3 z+ v配置文件请使用stm32cubemx打开 + h8 E/ p5 M* T程序请使用keil5 MDK打开 7 \3 m6 A+ C* S* \9 a3 X4 R' a( K' b' v & s) s. M3 M2 F) z9 v1 Y |
IPS6404L读å.rar
下载17.52 MB, 下载次数: 322
IPUS 64Mbit SQPI PSRAM.pdf
下载1.67 MB, 下载次数: 71
NM25Q64EB.pdf
下载3.98 MB, 下载次数: 17
NM25Q64EB读å.rar
下载15.41 MB, 下载次数: 74
SPI FLASH RAM.pdf
下载266.62 KB, 下载次数: 25
éè»ç§æå¼æºäº§åä»ç»(8-14).pdf
下载1.56 MB, 下载次数: 35
åºäºSTM32F7éè¿cube软件é ç½®ï¼è¯»åQSPIæ¥å£64M flashå64M PSRAMåèæç¨.pdf.pdf
下载1.65 MB, 下载次数: 79
基于STM32F746G-Discover的扩展电路板
【合集】STM32F7教程、资料大集合
F769 Discovery实现播放U盘音乐的播放器
STM32 VS Code Extension (在Ubuntu上开发STM32,ST官方vscode插件使用指南)
STM32F765@216MHz跑NES模拟器【代码】【视频】
基于STM32F7实现ADC软件触发+轮询采集
基于STM32F7进行ADC采集解决更新问题
基于STM32F7使用定时器经验分享
实现基于STM32F7中周期采集
基于STM32F7中实现采集和中断
频率配置:对于NM25Q64EB来说,最高频率可达104MHz,分频系数选择3,则QSPI的频率为216/(3+1)=54MHZ,经测试,这个频率是比较合适的;+ I+ ?7 I+ }. P. A3 }
FIFO的阈值设置:4字节;" u3 I. q- C* X/ o. c0 P' f. B
Flash size配置:NM25Q64EB为8Mbyte,2^23=8M,所以取权值23-1=22;
Chip select high time:即片选的高电平时间,按照芯片的数据手册,tSHSL要求大于20ns,对于我们的时钟54MHZ来说,1/54MHZ=18.5ns,所以我们要配置2个cycle,就能满足要求,此处配置为4 cycles。即18.5ns*4=74ns>20ns;* E7 D4 T0 Q8 W8 A! J
Dual flash 配置:是否采用双闪存模式,我们只使用BANK1的接口,此处配置为DISABLE.
整体的配置如下图的QUSDSPI CONFIGURATION.
对flash的操作过程,就是利用QSPI接口,往NM25Q64EB发送不同的指令码,来实现不同的功能。基础的功能包括:进入QPI,退出QPI,读取ID,擦除,读,写等。
接下来,我们举几个有特征的指令进行说明。
1 k- Z9 ~2 c% Y
0x90指令:在数据手册中,我们可以看到0x90是读取Device ID(REMS)的指令,从electronic identification中可知发送0x90后,会返还2byte的ID,包括1byte manufacturer ID和1byte device ID。从Table9中来看,第一列说明了指令的功能,第三四列说明了该指令对应的模式(QPI or SPI),从5-7行可以看到0x90的地址长度(addresssize)为3byte,即24bit。Dummycycle为0 。这些信息都会在配置函数中使用到。
0 d, n: @. e8 D: i6 d8 I0 j2 _4 _6 b
函数中的if…else…可选择在QPI模式下(4线)发送,或者SPI模式下(单线)发送。以QPI模式为例,往QSPI_Send_CMD(…,…,…,…,…,…,…)中填入参数,下图的函数共有7个参数.
第一个参数是指令码0x90;(看Table9)" ^+ J2 ?, n! c8 J
第二个参数是指令发送的地址0;
第三个参数是dummycycles:0;(看Table9)/ a; t2 g& _- K! Z2 ?
第四个参数是指令模式:选择4线;4 t9 ]; x1 r3 K
第五个参数是地址模式:选择4线;
第六个参数是地址长度:选择24bits;(看Table9)7 S5 V0 R# T7 M: \& O7 s
第七个参数是数据模式:选择4线。
' q7 }7 y/ V4 _+ f/ F/ R7 ]
: E0 u- e! t6 p
6 {1 V1 W5 u/ \" Y7 L2 `: D& [1 G
3 U/ M5 V+ Y2 @ V
# V) x( b+ o! b1 G( x) \
# } |/ y1 t7 r
核心板:NUCLEO-F767ZI7 K, f7 Q$ g) b# W
Flash:NM25Q64EB(64M)6 R2 m$ R8 Y3 Z8 R3 I1 w+ V* E
PSRAM:IPS6404L(64M)" L% L" t4 V* {1 ^' `& u) H
配置文件请使用stm32cubemx打开. Y0 l3 g, T" b" T) h7 h/ n
程序请使用keil5 MDK打开
在完成了QSPI基础配置后,我们还需要加入QSPI的3个函数, NM25Q64EB的读取的一系列函数。. {7 X0 s5 r' ?3 R3 ^; C' _
(1)对于发送指令,我们要关注的是它的指令码(instruction),发送地址(address),指令的模式(instructionmode),空指令周期数(dummycycles),地址的长度(addresssize),数据模式(datamode)等。
以下是QSPI的3个函数,对指令配置的函数,QSPI发送,QSPI接收。函数的参数和以上提到的一致。