• 搭建STM32F407的SPI-Flash(基于STM32CubeMX)


    网上有不少例子,都对,但对我来说碰到几个坑,避免以后再犯错,mark下。

    目标:通过SPI接口,对Nor Flash进行读写

    开发板上Nor Flash 是W25Q128, 128Mbit,也就是16MB样子

    CubeMx端配置,配置要分两个:

    1. 一个SPI本身的(需要配置三个复用GPIO口)
    2. 还要单独配置一个CS口(也是GPIO,起到片选作用)

    切记,要根据原理图来配置,千万不用使用默认

    切记,要根据原理图来配置,千万不用使用默认

    切记,要根据原理图来配置,千万不用使用默认

    先来看下原理图:

    由原理图得出结论:

    SPI FLASH 是挂载在SPI1上面,这个要记住的

    通过搜索:知道对应关系

    FLASH_CSPB14片选,要记住,代码里要自己改
    SPI1_SCKPB3时钟
    SPI1_MISOPB4发送
    SPI1_MOSIPB5输入

    CubeMX端配置:

    Connectivity - 选择SPI1,然后选择 Full-Duplex Master

    此时,SPI1会默认关联三个IO口,好像是PA5~7,注意:默认跟原理图是不一致的!

    这里还要手动再配一下,这个地方搞了好久,一开始没有注意到!!以为默认都是对的!!

    找到PB3,然后选择SPI1_SCK。依次类推,把PB4、PB5都设置下!!!

    片选那边IO,到还好,在GPIO里面配置。

    接下去就是代码部分:

    网上有不少驱动程序,可以去下载,大部分都可以用。实际上大部分SPI的操作,包括读写都是:

    1. 片选信号拉低
    2. 发送指令
    3. 操作写(顺便读)
    4. 片选信号拉高

    所有操作都是以上套路,知道就好,网上down个驱动,就可以操作了。需要改动的地方就是

    #define _W25QXX_CS_GPIO               GPIOB
    #define _W25QXX_CS_PIN                GPIO_PIN_14

    片选信号的IO信息要改成你自己的,其他好像不用怎么改

    还有奇葩:

    要想写入数据,必须先擦除(已擦除可以写入)

    驱动与demo下载:

    https://download.csdn.net/download/winafa/88309825

  • 相关阅读:
    Recommended Azure Monitors
    【OpenCV 图像处理 Python版】图像处理的基本操作
    人口增长(c++题解)
    NoSQL之Redis配置与优化
    ISCSI:后端卷以LVM 的方式配置 ISCSI 目标启动器
    【无标题】Java中的Optional
    Android入门第19天-Android里的RatingBar的使用
    SESSION详解
    【Axure视频教程】旋转角度函数
    ubuntu20.04 编译内核源码5.15.58
  • 原文地址:https://blog.csdn.net/winafa/article/details/132722824