完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在实验野火开发部STM32H743时,配置了QSPI驱动W25Q256JV,初始化成功,但后续都失败了,如图1 我的配置过程如下, 1、使用了CubMX,如下图 2、CubMX生成了代码 3、Kconfig配置如下图 5、测试代码如下 /* * Copyright (c) 2006-2022, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2018-11-27 zylx first version * 2022-03-16 Miaowulue add dfs mount */ #include #include #include #include #include #include #include #ifdef BSP_USING_QSPI_FLASH #include "spi_flash.h" #include "spi_flash_sfud.h" 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; } void w25qxx_write_enable(struct rt_qspi_device *device) { /* 0x06 write enable */ char instruction = 0x06; rt_qspi_send(device, &instruction, 1); } 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}; /* 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_qspi_send(device, &instruction, 1); rt_kprintf("flash already enter qspi mode\n"); rt_thread_mdelay(10); } } static int rt_hw_qspi_flash_with_sfud_init(void) { struct rt_qspi_device *qspi_dev_w25q; stm32_qspi_bus_attach_device("qspi1", "qspi10", RT_NULL, 4, w25qxx_enter_qspi_mode, RT_NULL); qspi_dev_w25q = (struct rt_qspi_device *)rt_device_find("qspi10"); if (qspi_dev_w25q == RT_NULL) { LOG_E("qspi_dev_w25q rt_device_find failed...\n"); return -EINVAL; } else if(qspi_dev_w25q != RT_NULL) { LOG_D("qspi_dev_w25q rt_device_find OK...\n"); rt_thread_mdelay(1); } /* init W25Q256 */ if (RT_NULL == rt_sfud_flash_probe("W25Q256", "qspi10")) { return -RT_ERROR; } return RT_EOK; } INIT_DEVICE_EXPORT(rt_hw_qspi_flash_with_sfud_init); static int mnt_qspi_flash_init(void) { if (dfs_mount("W25Q256", "/", "elm", 0, 0) == RT_EOK) { rt_kprintf("Mount spi flash successfully!\n"); return RT_EOK; } else { rt_kprintf("Mount spi flash fail!\n"); return -RT_ERROR; } } INIT_APP_EXPORT(mnt_qspi_flash_init); #endif/* BSP_USING_QSPI_FLASH */ 6、编译没有问题,下载运行后就是如图的结果了 主要提示,QSPI recv data failed 不知道哪里出错了,请大神给看看!!! |
|
相关推荐
1个回答
|
|
从您提供的信息来看,您已经成功初始化了STM32H743的QSPI驱动W25Q256JV,但后续操作失败了。为了解决这个问题,我们可以按照以下步骤进行排查:
1. 检查硬件连接:确保W25Q256JV与STM32H743之间的硬件连接正确。检查QSPI引脚是否正确连接,以及W25Q256JV的电源和地线是否连接良好。 2. 检查初始化代码:确保CubMX生成的初始化代码正确无误。您可以在初始化代码中添加调试信息,以便在调试过程中查看QSPI的初始化状态。 3. 检查Kconfig配置:确保Kconfig配置正确。您提供的Kconfig配置图没有显示,因此无法判断配置是否正确。请确保QSPI相关的配置项已正确设置。 4. 检查测试代码:检查您的测试代码是否正确。您提供的测试代码片段没有显示,因此无法判断代码是否正确。请确保您在测试代码中正确使用了QSPI接口函数,并且遵循了W25Q256JV的数据手册。 5. 检查W25Q256JV的时序要求:确保您的QSPI时序设置满足W25Q256JV的数据手册要求。例如,时钟频率、读写时序等。 6. 检查电源:确保W25Q256JV的电源电压和电流满足其数据手册要求。 7. 使用示波器:如果可能的话,使用示波器检查QSPI总线上的信号波形,以确定是否存在信号完整性问题。 8. 检查其他外围设备:确保没有其他外围设备干扰QSPI总线。 9. 更新软件:确保您的STM32H743固件库和工具链是最新的,以避免因软件问题导致的失败。 通过以上步骤,您应该能够找到导致后续操作失败的原因,并采取相应的解决措施。如果问题仍然存在,请提供更详细的信息,以便进一步分析。 |
|
|
|
只有小组成员才能发言,加入小组>>
152个成员聚集在这个小组
加入小组【Vision Board创客营连载体验】基于RA8D1-Vision Board的自动路径规划小车
862 浏览 0 评论
【Vision Board创客营连载体验】基于Vision Board的垃圾分类
1181 浏览 0 评论
【Vision Board创客营连载体验】使用 Vision Board 做一个 UVC Camera
842 浏览 0 评论
【Vision Board创客营连载体验】TinyMaix进行手写数字识别
1147 浏览 0 评论
【Vision Board创客营连载体验】RA8D1-Vision Board使用7寸屏设置为RGB666大端模式模式成功显示摄像头图案
1136 浏览 0 评论
STM32F407ZGT6 spi flash片选引脚无法被拉低的原因?怎么解决?
1185浏览 2评论
移植RT-THREAD在stm32开发板上,使用rt_kprintf不能正常打印的原因是什么?怎么解决?
506浏览 2评论
stm32f103zet用rtthread studio生成带finsh的项目程序,串口输入help没有反应是为什么?
511浏览 2评论
rtthread studio已经成功编写了外部flash下载算法,程序也能下载进去但是不能进行调试怎么办?
430浏览 2评论
rt-thread 4.1.1的pin的实际引脚编号和内核引脚编号的对应关系在哪个文件里面能找到?
428浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 11:40 , Processed in 0.524712 second(s), Total 51, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号