CubeMX配置SPI-Flash(W25Q256)

W25Q256(256Mb)将32M(字节byte)的容量分为512个块(block),每个块大小为64K字节,每个块又分为16个扇区(sector),每个扇区4K字节。最小擦除单位为一个扇区,也就是4K字节。

首先应该配置SPI,但是这里有个大坑.

按照标准的SPI协议,当SPI被配置为主机模式后,通过SPI对从设备进行操作时,其NSS应该自动置低,从而选中(使能)从设备;一旦不对从设备进行操作,NSS立刻置为高。

但是,我在实际调试过程中发现:STM32 SPI NSS无法自动实现跳变。 一旦SPI初始化完成并使能SPI,NSS立刻置低,然后保持不变。

这个问题一直无法解决,直到我在ST官方论坛上看到国外有些技术人员也在讨论这个问题,他们得出的结论是:STM32 SPI NSS无法自动跳变。

ST官方技术人员也证实:STM32 SPI NSS是不会自动置位和复位的。按照官方说法,ST已经将其列入了改进计划。

对于这个问题,可以采用下面的方法解决:

在SPI初始化时,采用NSS soft模式,然后使能NSS输出功能。从而将NSS当做GPIO使用,通过软件set和reset来实现NSS的置位和复位。

具体在CubeMX中应将FLASH的NSS当成GPIO Output配置而不是SPI NSS.配置如图所示:

因为需要在flash中存入浮点数,所以需要类型转换,这里使用union联合体实现:

union test
{float union_float;uint8_t union_int8[4];
};

测试代码:

union test Test_write,Test_read;
Test_write.union_float=1.23;//读flash的id
BSP_W25Q256_Read_ID(id);
printf("ID = 0x%02X%02X\r\n", id[0], id[1]);//测试flash的擦读写
BSP_W25Q256_Erase_Block(0);
BSP_W25Q256_Write(Test_write.union_int8, 0, sizeof(Test_write.union_int8));
BSP_W25Q256_Read(Test_read.union_int8, 0, sizeof(Test_read.union_int8));
printf("Ready to write:  float: %f, trans to uint8: 0x%x 0x%x 0x%x 0x%x\r\n", Test_write.union_float, Test_write.union_int8[0],Test_write.union_int8[1], Test_write.union_int8[2],Test_write.union_int8[3]);
printf("Read from Flash: uint8: 0x%x 0x%x 0x%x 0x%x, trans to float: %f\r\n", Test_read.union_int8[0],Test_read.union_int8[1],Test_read.union_int8[2],Test_read.union_int8[3],Test_read.union_float);

参考:

关于STM32 SPI NSS的讨论 https://blog.csdn.net/chseangs/article/details/4520733

SPI problem with hardware NSS management https://community.st.com/s/question/0D50X00009XkbvdSAB/spi-problem-with-hardware-nss-management

STM32CbueMX之W25Q256 https://blog.csdn.net/sudaroot/article/details/93158309

CubeMX配置SPI-Flash(W25Q256)相关推荐

  1. 让ambarella s2l 支持32M SPI Flash(W25Q256)

    前言:      最近在做ambarella s2l系列项目时,由于flash容量不够,需要将16M的spi nor flash(W25Q128)增大到32M spi nor flash (W25Q2 ...

  2. 在RT-Thread STM32F407平台下配置SPI flash为U盘

    记录下SPI Flash U盘实现过程中踩过的坑,与您分享. 前提条件是,需要先将SPI Flash 配置到elm fal文件系统,并挂载成功.如下图 然后开始配置USB 1,在CubeMX,选择SU ...

  3. stm32 cubemx usb spi flash w25q128 u盘调试笔记

    真的太简单了,十分钟就搞定 参考文章 我卡住了几天,最后发现delay函数的问题,去掉就好了.(评论大佬解释了这一现象) 步骤如下 使用cube mx 生成基本代码 调试spi flash 调试usb ...

  4. STM32 SPI介绍及CubeMX配置

    目录 一.SPI简介 二.SPI协议 物理层: 协议层: 1.SPI的基本通讯过程 2.通信模式 三.STM32中的SPI SPI框图: 1.通信引脚 2.时钟控制逻辑 3.数据控制逻辑 4.整体控制 ...

  5. (实测可用)STM32CubeMX教程-STM32L431RCT6开发板研究串口通信(SPI flash)

    一.开发板平台简介: 1.开发板资源简介 (1)开发板主芯片型号:STM32L431RCT6 (2)开发板主芯片封装:LQFP-64_10x10x05P (3)开发板主芯片内核:ARM® Cortex ...

  6. SPI flash配置

    配置表中预先配好了一些,我们用到什么SPI就需要添加相应的spi配置参数 spi flash name jedec_id ext_id block_size chip_size clk chip se ...

  7. FPGA配置 - 基于SPI FLASH的FPGA多重配置(Xilinx)

    原文地址:http://www.elecfans.com/emb/fpga/20140124334884_2.html IPROG指令的作用是对FPGA芯片进行复位操作,该复位操作对FPGA内部的应用 ...

  8. 国产spi flash 配置xilinx xc7k325t

    在项目中使用了xilinx的7系FPGA芯片xc7k325t-2ffg900,配置模式采用主串方式,开发环境采用ise14.7,故在原理设计阶段,spi flash芯片选用了华邦电子华邦电子的W25Q ...

  9. stm32f407单片机rt thread 片外spi flash OTA升级配置示例

    参考地址https://www.rt-thread.org/document/site/application-note/system/rtboot/an0028-rtboot/ 第一步,生成Boot ...

  10. FPGA的spi flash配置-配置模式理解

    FPGA的spi flash配置-配置模式理解 起因 现在在做的FPGA工程是基于以前的工程,其中flash配置啊什么的都没有进行过修改,之前是采用的spi x1的模式,现在新的数字版改为了spi x ...

最新文章

  1. AI一分钟|锤子发布TNT系统和Pro 2S;美团点评将在9月20日左右正式登陆港交所
  2. 文件字符流 编码判断
  3. mysql中depart_mysql 学习笔记
  4. typedef,结构体,共用体,联合体
  5. lua检测表中是否有某个值_Lua检测数组(tabble)中是否包含某个值
  6. swagger2使用步骤
  7. 【Go学习笔记】数组
  8. Android技巧:ListView去掉橙黄底色
  9. 前阿里P10员工赵海平加入字节跳动,职级或为4+
  10. [OHOS ERROR] FileNotFoundError: [Errno 2] No such file or directory: ‘python‘
  11. 区块链+人工智能+大数据等技术能否让我们构建三体文明
  12. (读论文)启体书法字的矢量化-曹芳
  13. ev6 ev8 ev4a加密视频破解翻录教程
  14. RS 触发器防抖动原理
  15. Flex移动皮肤-第一部分:增强的皮肤功能基础
  16. 全新2022强大的趣味心理测试小程序源码,趣味测试引流裂变神器,流量主激励广告实现管道收益
  17. 最大化期望算法(EM)详解
  18. 按键清零是0xff吗c语言,msp40_c语言.docx
  19. 微信小程序|使用小程序制作一个马赛克处理工具
  20. sql查询语句--wher后不能放聚集函数的解决办法

热门文章

  1. 为什么程序员下班后只关显示器却从不关电脑?
  2. e531网卡驱动linux,联想e531网卡驱动下载-联想e531笔记本无线网卡驱动v6.30.223.201 官方版 - 极光下载站...
  3. dll文件编辑器(Resource Hacker)下载
  4. VSTO安装卸载方法
  5. C语言实现直接插入与直接选择排序,详细
  6. DOS命令窗口基本操作
  7. Win10操作系统下,如何打开DOS窗口(图文教程)
  8. java+mysql 基于ssm205网上购物超市系统#毕业设计
  9. [java]房屋出租系统
  10. python微信机器人