[STM32F7]

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

[复制链接]
楼主: mmuuss586
手机看帖
扫描二维码
随时随地手机跟帖
mmuuss586|  楼主 | 2019-8-15 13:41 | 显示全部楼层
(3)到此为止,我们完成了QSPI和NM25Q64EB的全部配置,整理以下该工程的函数所属。核心文件有:
qspi.c(存放QSPI的引脚配置和QSPI时钟等配置,是由stm32cubemx生成的,另外包括3个自己写的函数:QSPI_Send_CMD、QSPI_Receive、QSPI_Transmit);
w25qxx.c(存放NM25Q64EB的一系列函数,包括读ID,读,写,擦除,QPI使能等)
实验过程中,我们在main()函数中调用NM25Q64EB的一系列函数进行测试读写功能:
Ⅰ、先读取ID是否等于0x5216;
Ⅱ、flash的大小,在读写的时候,读写的起始地址+数据大小不能超过8*1024*1024
Ⅲ、擦除
Ⅳ、写数据
Ⅴ、读出数据并打印出来

使用特权

评论回复
mmuuss586|  楼主 | 2019-8-15 13:42 | 显示全部楼层
图片2.png

图片3.png

使用特权

评论回复
mmuuss586|  楼主 | 2019-8-15 13:43 | 显示全部楼层
4、IPS6404L读写的移植。
对IPS6404L和NM25Q64EB的读写,可以对比进行学习。两者的引脚,QSPI系数配置是一致的,工作过程照样是发送指令,让IPS6404L做出不同的操作,但有一些差异。

使用特权

评论回复
mmuuss586|  楼主 | 2019-8-15 13:43 | 显示全部楼层
(1)退出QPI模式
这是IPS6404L和NM25Q64EB的第一个区别,IPS6404L要读取ID只允许在SPI的模式下,所以在读取ID之前我们要先退出QPI的模式,利用指令码0Xf5,该指令只能在QPI模式下使用,使用我们指令模式要选择4线。此处的Waitcycles和NM25Q64EB的dummycycles是同样的作用,查表该值为0.

使用特权

评论回复
mmuuss586|  楼主 | 2019-8-15 13:44 | 显示全部楼层
(2)读ID
读取ID和NM25Q64EB也有差异,读取ID的指令是0x9F,只能在SPI模式下读取,根据时序图的注释,我们可以看出,读出的地址有两个字节(16bits),我们同样经过移位操作(在QSPI_PARAM_Test()中,将读取到的第一个字节左移8位,再与第二个字节做或运算)将其通过串口打印出来,读到ID=0Xd5d说明正确。

使用特权

评论回复
mmuuss586|  楼主 | 2019-8-15 13:44 | 显示全部楼层
(3)进入QPI模式
读取完ID后进入QPI模式,指令码是0X35,只能再SPI模式下操作。除了指令码,其他配置和退出QPI模式的配置函数一致。
(4)写PSRAM数据
指令码是0x38,指令模式、数据模式、地址模式全部为4线,地址大小为24bits,赋值好后调用HAL_QSPI_Command()完成配置并调用HAL_QSPI_Transmit()发送

使用特权

评论回复
mmuuss586|  楼主 | 2019-8-15 13:44 | 显示全部楼层
(5)读PSRAM数据
指令码是0xEB,此处特别注意要配置dummy cycles为6,一般涉及到Read的函数都要查表确认。

使用特权

评论回复
mmuuss586|  楼主 | 2019-8-15 13:45 | 显示全部楼层
(6)读写数据校验
最后将写入PSRAM的数据和读取到的数据进行逐一比较,按位比较成功,说明测试成功。可以正式在main()函数中正常读写,测试得到以下结果,说明通讯正常。

使用特权

评论回复
mmuuss586|  楼主 | 2019-8-15 13:45 | 显示全部楼层
(7)其他事项:
Ⅰ、IPS6404L如果在进入QPI模式后没有退出QPI模式,尽管在函数中将进入QPI模式的函数屏蔽,照样会保持QPI模式,无法读取ID,必须在读ID前退出QPI模式。

Ⅱ、配置指令所用的宏定义放在stm32f7xx_hal_msp.h中,请对照移植。

使用特权

评论回复
mmuuss586|  楼主 | 2019-8-15 13:45 | 显示全部楼层
自己支持下;

使用特权

评论回复
xixi2017| | 2019-8-15 14:06 | 显示全部楼层
支持楼主

使用特权

评论回复
mmuuss586|  楼主 | 2019-8-16 09:17 | 显示全部楼层

谢楼上支持;

使用特权

评论回复
mmuuss586|  楼主 | 2019-8-16 09:17 | 显示全部楼层

谢大家支持

使用特权

评论回复
mmuuss586|  楼主 | 2019-8-16 09:17 | 显示全部楼层

谢大家支持

使用特权

评论回复
不爱说话| | 2019-8-16 13:12 | 显示全部楼层
STM32F7的QSPI接RAM应该只能用间接模式去读写吧。没法映射到地址空间读写吧。

使用特权

评论回复
尚格小马哥| | 2019-8-17 11:32 | 显示全部楼层
这么好的帖子好像没啥人顶贴啊,俺代表GD32发来贺电。
楼主后期也用GD32开发一下项目丫

使用特权

评论回复
优秀

使用特权

评论回复
mmuuss586|  楼主 | 2019-8-19 09:55 | 显示全部楼层
尚格小马哥 发表于 2019-8-17 11:32
这么好的帖子好像没啥人顶贴啊,俺代表GD32发来贺电。
楼主后期也用GD32开发一下项目丫[em:3 ...

嗯,谢谢;说明XX没落了

使用特权

评论回复
mmuuss586|  楼主 | 2019-8-19 09:55 | 显示全部楼层

使用特权

评论回复
mmuuss586|  楼主 | 2019-8-20 09:07 | 显示全部楼层

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则