Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
QSPI
25系列FLASH
挂载W25Q256JV外部QSPI接口Flash失败!
发布于 2022-02-17 12:50:19 浏览:2704
订阅该版
CPU是STM32H743iit6,外挂QSPI类型Flash,型号是W25Q256JV,使用正点原子或者ART-Pi的驱动,挂载不上W25,其中SPI驱动正常,QSPI驱动正常,后来不用RT的库,只操作HAL的库来读W25Q的ID,还是失败,但是用keil编译,裸机跑驱动,是正常的,可以读取ID。 先看一下RT挂载的时候的信息: ```C \ | / - RT - Thread Operating System / | \ 4.0.5 build Feb 15 2022 16:54:24 2006 - 2021 Copyright by rt-thread team [D/drv.qspi] qspi init success! [E/drv.qspi] QSPI recv data failed(1)! [I/SFUD] Error: Read flash device JEDEC ID error. [I/SFUD] Error: norflash1 flash device is initialize fail. [E/SFUD] ERROR: SPI flash probe failed by SPI device qspi10. ``` 然后list_device显示: ```C device type ref count -------- -------------------- ---------- qspi10 SPI Device 0 usbh USB Host Bus 0 rtc RTC 0 i2c2 I2C Bus 0 qspi1 SPI Bus 0 uart1 Character Device 2 pin Miscellaneous Device 0 msh /> ``` 说明qspi的初始化是成功的,但是挂载w25失败。 ```c uint32_t QSPI_FLASH_ReadDeviceID(void) { QSPI_CommandTypeDef s_command; uint32_t Temp = 0; uint8_t pData[3] = {0}; /*##-2-读取设备ID测试 ###########################################*/ /* 读取制造/设备 ID */ s_command.InstructionMode = QSPI_INSTRUCTION_1_LINE; s_command.Instruction = 0x94; s_command.AddressMode = QSPI_ADDRESS_1_LINE; s_command.AddressSize = QSPI_ADDRESS_24_BITS; s_command.Address = 0x000000; s_command.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE; s_command.DataMode = QSPI_DATA_4_LINES; s_command.DummyCycles = 0; s_command.NbData = 2; s_command.DdrMode = QSPI_DDR_MODE_DISABLE; s_command.DdrHoldHalfCycle = QSPI_DDR_HHC_ANALOG_DELAY; s_command.SIOOMode = QSPI_SIOO_INST_EVERY_CMD; if (HAL_QSPI_Command(&hqspi, &s_command, HAL_QPSI_TIMEOUT_DEFAULT_VALUE) != HAL_OK) { printf("something wrong ....\r\n"); } if (HAL_QSPI_Receive(&hqspi, pData, HAL_QPSI_TIMEOUT_DEFAULT_VALUE) != HAL_OK) { printf("something wrong ....\r\n"); } Temp = pData[1] |( pData[0]<<8 ) ; printf("qspi read ID = 0x%x\r\n", Temp); return Temp; } ``` 上面的代码,裸跑的时候,读取ID和JEDEC ID包括Unique ID都是正确的,但是 同样的代码,在RT中使用,通过MSH方式执行,读取ID都是失败。 通过单步调试,发现都是在发送或者接收数据的时候失败的,具体到写寄存器的时候,写其他寄存器都正常,都可以写进去, 但是在写`QUADSPI->AR = address`地址寄存器,触发传输的是,监控发现外设寄存器内容都变成0了,然后`st-link`就掉了,不知道是不是这个原因! 恳请指教!
查看更多
3
个回答
默认排序
按发布时间排序
CharlesX
2022-02-17
Make science fiction science
看一下stm32h7xx_hal_msp.c里面有没有加入HAL_QSPI_MspInit和HAL_QSPI_MspDeInit,这两个函数在HAL库里是弱定义所以编译不会报错,如果没加是不可能成功操作QSPI的。
Juggernaut
2022-02-20
①②③
FLASH一直感觉有问题
gameboy22
2022-02-21
这家伙很懒,什么也没写!
已经解决了,主要的原因是前面的时钟初始化有问题,CubeMX自动生成的stm32h7xxx系列的代码的时候,时钟初始化程序是2个函数`void SystemClock_Config(void)`和`void PeriphCommonClock_Config(void)`函数,原来只有前面的函数,我是第一次使用系统,所以按照网上或者所有的移植参考,都是说把**`SystemClock_Confi()`**函数拷贝到**`drv_clk.c`**就行了,所以我后面的就没有仔细看,后来把**`PeriphCommonClock_Config()`**函数里面的内容拷贝到**`SystemClock_Confi()`**函数里面就好了,这样时钟初始化就全了,主要还是自己的疏忽,非常感谢上面几位朋友的回复! 万分感谢!
撰写答案
登录
注册新账号
关注者
0
被浏览
2.7k
关于作者
gameboy22
这家伙很懒,什么也没写!
提问
1
回答
1
被采纳
0
关注TA
发私信
相关问题
1
w25q128 flash 怎么在电脑和开发板上切换挂载
2
使用littlefs出现Corrupted dir pair at 1 0
3
使用SPI W25Q64读写出问题
4
W25QXX挂载elm文件系统的分区小于512KB时你们成功了吗
5
安卓手机不能识别挂载w25q flash
6
[无法申请内存]STM32F103RBT6+DFS+FATFS+W25Q16
7
RT-thread 两种方式读取到W25Q16的ID,高低位是反过来的
8
w25qxx虚拟USB大容量存储类接口是在哪实现的
9
spi w25x16初始化失败。 什么原因?
10
stm32外接QSPI-Flash运行程序,还能用FAL进行分区,读,写操作吗?
推荐文章
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
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部