基于STM32F767通过cube配置:QSPI接口读写64M PSRAM+flash参考资料...

2020-02-29 10:44发布

基于STM32F767通过cube配置:QSPI接口读写64M PSRAM+flash参考资料/原理图/代码/教程等资料分享

核心板:NUCLEO-F767ZI
Flash:NM25Q64EB(64M)
PSRAM:IPS6404L(64M SO-8封装QSPI接口)
配置文件请使用stm32cubemx打开
程序请使用keil5 MDK打开

1.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
mmuuss586
1楼-- · 2020-03-02 02:49
了解了上面的信息后,我们开始来配置读取ID的函数。上一个标题我们介绍了QSPI的3个函数,包括配置函数,接收函数,发送函数。这里我们就用到了前两个,先配置,再接收传回的2字节地址。

函数中的if…else…可选择在QPI模式下(4线)发送,或者SPI模式下(单线)发送。以QPI模式为例,往QSPI_Send_CMD(…,…,…,…,…,…,…)中填入参数,下图的函数共有7个参数.
第一个参数是指令码0x90;(看Table9)
第二个参数是指令发送的地址0;
第三个参数是dummycycles:0;(看Table9)
第四个参数是指令模式:选择4线;
第五个参数是地址模式:选择4线;
第六个参数是地址长度:选择24bits;(看Table9)
第七个参数是数据模式:选择4线。
mmuuss586
2楼-- · 2020-03-02 03:42
 精彩回答 2  元偷偷看……
mmuuss586
3楼-- · 2020-03-02 08:10
0x38指令:
从Table8可知,该指令的功能是使能QPI,该指令对比0x90,他只能在SPI模式下使用,且无返还的数据。同样0xFF,是失能QPI的指令,只能在QPI模式下使用,所以我们配置如下:
mmuuss586
4楼-- · 2020-03-02 09:33
在Qspi_Enable的函数中,涉及到了NM25Q64EB的状态寄存器。NM25Q64共有3个状态寄存器,决定QPI是否使能(QE)的寄存器是第二个(status register2),位从下表中查得是第3位,我们先将状态寄存器3得到值(stareg2)读出来,再和00000100(0x04)做一个与运算,如果该位不为1,则往该位写入1,即1<<2左移运算得到00000100,再和状态寄存器原始状态stareg2做一个或运算。
mmuuss586
5楼-- · 2020-03-02 11:43
图片3.png
其他指令跟以上两个指令的配置方式类似,查询指令表,将不同功能的指令码和模式作为参数写进QSPI_Send_CMD()即可。其他事项:Ⅰ、dummycycles一般情况下都是0,只有在各种Read操作的时候需要用到,可以理解为,在接收到指令后延时一小段时间,再读取返回值。从如下时序图就可以直观看出。
mmuuss586
6楼-- · 2020-03-02 13:27
Ⅱ、在状态寄存器1的第一位是busy的标志位,可以通过检测该位,知道各种操作是否完成,检测完成再进行下一个指令的操作。

一周热门 更多>