Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
QSPI
10
正点原子潘多拉STM32L475VET6开发板使用QSPI读写W25Q128FLASH时问题
发布于 2024-02-27 16:45:16 浏览:399
订阅该版
正点原子潘多拉STM32L475VET6开发板使用QSPI读写W25Q128FLASH时,读取设备ID没有问题,读数据没有问题。但是在发送写使能命令、读取设备状态寄存器1数据、写入数据时出现问题。写使能命令写不进去是怎么回事? 1、初始化代码: ```c //qspi初始化函数 void qspi_hw_init(void) { rt_base_t qspi1_nss = rt_pin_get("PE.11"); struct rt_qspi_configuration configure_app; rt_err_t qspi_ret; qspi_ret = rt_hw_qspi_device_attach(QSPI_APP, QSPI1_APP, qspi1_nss, 1, NULL, NULL); if(0 == qspi_ret) { rt_kprintf("qspi attach success\n"); } else { rt_kprintf("qspi attach fail\n"); } qspi_device = (struct rt_qspi_device *)rt_device_find(QSPI1_APP); if(NULL == qspi_device) { rt_kprintf("qspi11 find error\n"); } else { rt_kprintf("qspi11 find success\n"); } } 2、发送写使能命令代码 ```c /** * @brief 使能写命令 * @param 无 * @param 无 * @retval 无 */ void SPI_FLASH_WriteEnable(void) { // 发送写使能指令 struct rt_qspi_message qspi_message; qspi_message.parent.send_buf = NULL; qspi_message.parent.recv_buf = NULL; qspi_message.parent.length = 0; qspi_message.parent.next = RT_NULL; qspi_message.parent.cs_take = 1; qspi_message.parent.cs_release = 1; qspi_message.instruction.content = ManufactDeviceID_CMD; //指令 qspi_message.instruction.qspi_lines = 1; //指令模式 qspi_message.address.content = 0; //地址 qspi_message.address.size = 8; //地址长度 qspi_message.address.qspi_lines = 0; //地址模式 qspi_message.dummy_cycles = 0; //空指令周期 qspi_message.qspi_data_lines = 0; //数据模式 rt_qspi_transfer_message(qspi_device,&qspi_message); } ``` 3、读状态寄存器代码 ```c //读状态寄存器1函数 uint8_t read_status_1(void) { uint8_t status = 0; // 发送读取数据指令 struct rt_qspi_message qspi_message; qspi_message.parent.send_buf = NULL; qspi_message.parent.recv_buf = &status; qspi_message.parent.length = 1; qspi_message.parent.next = RT_NULL; qspi_message.parent.cs_take = 1; qspi_message.parent.cs_release = 1; qspi_message.instruction.content = Read_Status_Register_1_CMD; //指令 qspi_message.instruction.qspi_lines = 1; //指令模式 qspi_message.address.content = 0; //地址 qspi_message.address.size = 24; //地址长度 qspi_message.address.qspi_lines = 0; //地址模式 qspi_message.dummy_cycles = 0; //空指令周期 qspi_message.qspi_data_lines = 1; //数据模式 rt_qspi_transfer_message(qspi_device,&qspi_message); return status; } ``` 4、写入数据代码 ```c /** * @brief 对 FLASH 按页写入数据,调用本函数写入数据前需要先擦除扇区 * @param pBuffer:要写入数据的指针 * @param WriteAddr:写入数据地址 * @param NumByteToWrite:写入数据长度(以字节为单位)。必须小于等于SPI_FLASH_PerWritePageSize * @retval 无 */ void SPI_FLASH_PageWrite(uint8_t *pBuffer, uint32_t WriteAddr, uint16_t NumByteToWrite) { // 使能写命令 SPI_FLASH_WriteEnable(); // 发送页写入指令 struct rt_qspi_message qspi_message; qspi_message.parent.send_buf = pBuffer; qspi_message.parent.recv_buf = NULL; qspi_message.parent.length = NumByteToWrite; qspi_message.parent.next = RT_NULL; qspi_message.parent.cs_take = 1; qspi_message.parent.cs_release = 1; qspi_message.instruction.content = Page_Program_CMD; //指令 qspi_message.instruction.qspi_lines = 1; //指令模式 qspi_message.address.content = WriteAddr; //地址 qspi_message.address.size = 24; //地址长度 qspi_message.address.qspi_lines = 1; //地址模式 qspi_message.dummy_cycles = 0; //空指令周期 qspi_message.qspi_data_lines = 1; //数据模式 rt_qspi_transfer_message(qspi_device,&qspi_message); } ``` 请问是哪里出了问题?
查看更多
踩姑娘的小蘑菇
2024-02-28
这家伙很懒,什么也没写!
确定下是w25q还是n25q的,最好先跑裸机例程试试
2
个回答
默认排序
按发布时间排序
诸葛孔亮
2024-03-19
这家伙很懒,什么也没写!
我也在调试QSPI但是一直失败,能帮我看看么?[https://club.rt-thread.org/ask/question/4dce68bff16ffecc.html](https://club.rt-thread.org/ask/question/4dce68bff16ffecc.html)
撰写答案
登录
注册新账号
关注者
1
被浏览
399
关于作者
dayuyu
这家伙很懒,什么也没写!
提问
6
回答
2
被采纳
0
关注TA
发私信
相关问题
1
stm32外接QSPI-Flash运行程序,还能用FAL进行分区,读,写操作吗?
2
使用sfud擦除w25q64部分区域失败
3
qspi flash部分sector擦除问题
4
超出ROM范围,怎么使用外部CODE FLASH
5
关于H743的bootloader的问题
6
STM32H750下载代码至QSPI FLASH后初始化失败
7
QSPI FLASH W25Q64,在进入映射模式后,如何退出?
8
使用sf bench yes 后 读qspi的flash出错
9
STM32H7使用QSPI的DMA时drv_qspi.c报错
10
w25q256jv 写使能失败,qspi模式下
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
张世争
8
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
KunYi
6
个答案
1
次被采纳
本月文章贡献
程序员阿伟
5
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部