打印
[应用相关]

stm32 QUADSPI外设总结

[复制链接]
1085|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
stm32F746Discovery 带有一块四线16MByte的spi Flash。stm32F7带有四线spi的外设。

问题一:使用MDK烧写官网的demo的时候,gui图标显示异常。

原因:gui的图标数据是保存的spi flash里的,官方的默认配置,不会烧写spi flash,使用STM32官方烧写工具ST-LINK Utility直接烧写hex,就不会有问题。那么就引出下一个问题。


使用特权

评论回复
沙发
keaibukelian|  楼主 | 2021-7-3 11:44 | 只看该作者
问题二:如何配置MDK,实现在烧写片内flash的同时,也会烧写片外spi flash。

首先,需要添加spi flash的下载算法,什么试试spi flash下载算法?下载算法是一段读写存储介质的接口,存储介质可以是内部的flash,ram,外部的flash。仿真器会把下载算法拷贝到stm32内部的ram中运行。然后,仿真器通过下载算法提供的接口,读写存储介质。stmF7disco板上带的spi flash型号是N25Q128A,由于MDK的软件中带有该芯片的下载算法,所以不需要自己去实现,直接添加即可

     



使用特权

评论回复
板凳
keaibukelian|  楼主 | 2021-7-3 11:44 | 只看该作者

添加完之后,点击下载按钮,会提示错误,原因是由于算法占用的内存空间不够了,需要更改内存空间大小,再次下载就没有问题了。


使用特权

评论回复
地板
keaibukelian|  楼主 | 2021-7-3 11:45 | 只看该作者
问题三:如何在程序中使用spi flash

stm32的spi flash接口有三种使用模式

1、间接模式,所有的读写都是通过访问寄存器方式

2、轮询方式

3、内存映射方式,和访问单片机内部存储类似,适合只读flash

这里只介绍第三种方式。

第一步:修改分散加载文件

LR_IROM1 0x08000000 0x00100000  {    ; load region size_region
  ER_IROM1 0x08000000 0x00100000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x20000000 0x00050000  {  ; RW data
   .ANY (+RW +ZI)
  }
}

LR_QSPI 0x90000000 0x10000000  {
    ER_QSPI 0x90000000 0x10000000 {
    *.o (ExtFlashSection)         
  }
}

第二步:

__attribute__((section(".ExtQSPIFlashSection")))

设置内存属性,之后就可以在spi flash里面定义只读数据了。


使用特权

评论回复
5
香水城| | 2021-7-6 16:50 | 只看该作者
谢谢分享!

使用特权

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

本版积分规则

63

主题

4095

帖子

5

粉丝