Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
QSPI
SFUD
SFUD操作w25q256,无法正常读写,但是若用裸机对W25Q256执行一次写入后就能正常操作了,这个是什么原因呢?
发布于 2025-03-28 16:14:53 浏览:230
订阅该版
SFUD操作w25q256,无法正常读写,但是若用裸机对W25Q256执行一次写入后就能正常操作了,这个是什么原因呢?使用的是QSPI操作 这个是上电后的记录图片  执行sf操作读写的记录 
查看更多
2
个回答
默认排序
按发布时间排序
winfeng
认证专家
2025-03-29
这家伙很懒,什么也没写!
QSPI接口初始化要在FAL初始化之前 次序:QSPI-->FAL--->EasyFlash
yangbo18416
2025-07-22
这家伙很懒,什么也没写!
问题原因在于使用QSPI时需要设置进入QSPI模式, ```c stm32_qspi_bus_attach_device("qspi1", FLASH_DEVICE_NAME, GET_PIN(G,6), 4, w25qxx_enter_qspi_mode, RT_NULL); ``` 写好相关函数后,需要修改qspi_core.c的216函底层接口函数,具体参考一下连接 [https://club.rt-thread.org/ask/question/2e1814eca0fbe9e1.html](https://club.rt-thread.org/ask/question/2e1814eca0fbe9e1.html) 进入QSPI模式代码参考如下 ```c #include "fal_cfg.h" #include "spi_flash_sfud.h" #include "drv_qspi.h" #include "easyflash.h" #include "ulog_easyflash.h" #include "fal.h" #define FLASH_DEVICE_NAME "norflash" rt_spi_flash_device_t sf_flash_device; static char w25qxx_read_status_register2(struct rt_qspi_device *device) { /* 0x35 read status register2 */ char instruction = 0x35, status; rt_qspi_send_then_recv(device, &instruction, 1, &status, 1); return status; } static void w25qxx_write_enable(struct rt_qspi_device *device) { /* 0x06 write enable */ char instruction = 0x06; rt_qspi_send(device, &instruction, 1); } static void w25qxx_enter_qspi_mode(struct rt_qspi_device *device) { char status = 0; /* 0x38 enter qspi mode */ char instruction = 0x38; char write_status2_buf[2] = {0}; char cmd_write[8] = {0}; /* 0x31 write status register2 */ write_status2_buf[0] = 0x31; status = w25qxx_read_status_register2(device); if (!(status & 0x02)) { status |= 1 << 1; w25qxx_write_enable(device); write_status2_buf[1] = status; rt_qspi_send(device, &write_status2_buf, 2); rt_kprintf("flash already enter qspi mode\n"); rt_thread_mdelay(10); } } int spi_flash_init(void) { stm32_qspi_bus_attach_device("qspi1", FLASH_DEVICE_NAME, GET_PIN(G,6), 4, w25qxx_enter_qspi_mode, RT_NULL); /* init W25Q256 */ // spi_flash_dev_name 需要用配置文件内的,spi_dev_name实际是SPI挂在参数 sf_flash_device = rt_sfud_flash_probe(FAL_USING_NOR_FLASH_DEV_NAME, FLASH_DEVICE_NAME); if(sf_flash_device != RT_NULL) { rt_kprintf("rt sfud flash success\n"); return 0; } else { rt_kprintf("rt sfud flash error\n"); return -1; } } ```
撰写答案
登录
注册新账号
关注者
0
被浏览
230
关于作者
yangbo18416
这家伙很懒,什么也没写!
提问
5
回答
7
被采纳
1
关注TA
发私信
相关问题
1
【分享】如何使用 SFUD 库来操作 SPI Flash 设备
2
SFUD怎么使用
3
请教大家一下关于 SFUD 的的问题
4
移植sfud
5
使用SFUD操作FLASH
6
env使用easyflash不是3.2.4版本,而且没有type插件?
7
新增了W25X32设备成功,无法格式化
8
easyflash随着数据存储量增加,耗费时间加长
9
关于SFDP的问题
10
spi nand flash 能使用SFUD驱动吗
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
6
五分钟玩转RT-Thread新社区
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【RSOC25】Day5 课程笔记:软件包相关知识
2
RT-Thread 夏令营 第五天笔记
3
【RSOC25】Day5 课程笔记:软件包和网络组件
4
【RSOC25】Day4 课程笔记:I/O设备和驱动框架
5
【RSOC25】Day3 课程笔记:线程间同步和通信
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
Bootloader
AT
Hardfault
CAN总线
ART-Pi
FinSH
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
FAL
RTC
rt-smart
cubemx
I2C_IIC
UART
WIZnet_W5500
BSP
ESP8266
PWM
ota在线升级
packages_软件包
flash
freemodbus
GD32
潘多拉开发板_Pandora
编译报错
ADC
keil_MDK
flashDB
rt_mq_消息队列_msg_queue
ulog
socket
MicroPython
msh
中断
Debug
SFUD
at_device
SDIO总线
本月问答贡献
Ryan_CW
2
个答案
3
次被采纳
D1sguIse_
6
个答案
2
次被采纳
用户名由3_15位
6
个答案
1
次被采纳
三世执戟
4
个答案
1
次被采纳
xiaorui
2
个答案
1
次被采纳
本月文章贡献
出出啊
1
篇文章
1
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
2
次点赞
crystal266
2
篇文章
1
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部