CubeMX配置SPI-Flash(W25Q256)
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)相关推荐
- 让ambarella s2l 支持32M SPI Flash(W25Q256)
前言: 最近在做ambarella s2l系列项目时,由于flash容量不够,需要将16M的spi nor flash(W25Q128)增大到32M spi nor flash (W25Q2 ...
- 在RT-Thread STM32F407平台下配置SPI flash为U盘
记录下SPI Flash U盘实现过程中踩过的坑,与您分享. 前提条件是,需要先将SPI Flash 配置到elm fal文件系统,并挂载成功.如下图 然后开始配置USB 1,在CubeMX,选择SU ...
- stm32 cubemx usb spi flash w25q128 u盘调试笔记
真的太简单了,十分钟就搞定 参考文章 我卡住了几天,最后发现delay函数的问题,去掉就好了.(评论大佬解释了这一现象) 步骤如下 使用cube mx 生成基本代码 调试spi flash 调试usb ...
- STM32 SPI介绍及CubeMX配置
目录 一.SPI简介 二.SPI协议 物理层: 协议层: 1.SPI的基本通讯过程 2.通信模式 三.STM32中的SPI SPI框图: 1.通信引脚 2.时钟控制逻辑 3.数据控制逻辑 4.整体控制 ...
- (实测可用)STM32CubeMX教程-STM32L431RCT6开发板研究串口通信(SPI flash)
一.开发板平台简介: 1.开发板资源简介 (1)开发板主芯片型号:STM32L431RCT6 (2)开发板主芯片封装:LQFP-64_10x10x05P (3)开发板主芯片内核:ARM® Cortex ...
- SPI flash配置
配置表中预先配好了一些,我们用到什么SPI就需要添加相应的spi配置参数 spi flash name jedec_id ext_id block_size chip_size clk chip se ...
- FPGA配置 - 基于SPI FLASH的FPGA多重配置(Xilinx)
原文地址:http://www.elecfans.com/emb/fpga/20140124334884_2.html IPROG指令的作用是对FPGA芯片进行复位操作,该复位操作对FPGA内部的应用 ...
- 国产spi flash 配置xilinx xc7k325t
在项目中使用了xilinx的7系FPGA芯片xc7k325t-2ffg900,配置模式采用主串方式,开发环境采用ise14.7,故在原理设计阶段,spi flash芯片选用了华邦电子华邦电子的W25Q ...
- stm32f407单片机rt thread 片外spi flash OTA升级配置示例
参考地址https://www.rt-thread.org/document/site/application-note/system/rtboot/an0028-rtboot/ 第一步,生成Boot ...
- FPGA的spi flash配置-配置模式理解
FPGA的spi flash配置-配置模式理解 起因 现在在做的FPGA工程是基于以前的工程,其中flash配置啊什么的都没有进行过修改,之前是采用的spi x1的模式,现在新的数字版改为了spi x ...
最新文章
- AI一分钟|锤子发布TNT系统和Pro 2S;美团点评将在9月20日左右正式登陆港交所
- 文件字符流 编码判断
- mysql中depart_mysql 学习笔记
- typedef,结构体,共用体,联合体
- lua检测表中是否有某个值_Lua检测数组(tabble)中是否包含某个值
- swagger2使用步骤
- 【Go学习笔记】数组
- Android技巧:ListView去掉橙黄底色
- 前阿里P10员工赵海平加入字节跳动,职级或为4+
- [OHOS ERROR] FileNotFoundError: [Errno 2] No such file or directory: ‘python‘
- 区块链+人工智能+大数据等技术能否让我们构建三体文明
- (读论文)启体书法字的矢量化-曹芳
- ev6 ev8 ev4a加密视频破解翻录教程
- RS 触发器防抖动原理
- Flex移动皮肤-第一部分:增强的皮肤功能基础
- 全新2022强大的趣味心理测试小程序源码,趣味测试引流裂变神器,流量主激励广告实现管道收益
- 最大化期望算法(EM)详解
- 按键清零是0xff吗c语言,msp40_c语言.docx
- 微信小程序|使用小程序制作一个马赛克处理工具
- sql查询语句--wher后不能放聚集函数的解决办法
热门文章
- 为什么程序员下班后只关显示器却从不关电脑?
- e531网卡驱动linux,联想e531网卡驱动下载-联想e531笔记本无线网卡驱动v6.30.223.201 官方版 - 极光下载站...
- dll文件编辑器(Resource Hacker)下载
- VSTO安装卸载方法
- C语言实现直接插入与直接选择排序,详细
- DOS命令窗口基本操作
- Win10操作系统下,如何打开DOS窗口(图文教程)
- java+mysql 基于ssm205网上购物超市系统#毕业设计
- [java]房屋出租系统
- python微信机器人