完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM32CubeIDE 1.8.0
STM32F746-Disco 我正在学习 QuadSPI 并使用 C 在裸机中完成所有工作,它让我了解了硬件。 QSPI 闪存 IC,mouser,带数据表 问题的简短摘要:从 QuadSPI Flash 间接读取,数据线上没有通信,Fifo 阈值标志始终设置。 我以前从未使用过QuadSPI,所以我阅读了STM32F746的参考手册,似乎或多或少清楚了,至少我准备尝试一下,它通常是这样工作的。 我使用在 STM32CubeIDE 中打开的 TouchGFX 生成的代码来获取 QuadSPI 的一些参数,并且在运行 TouchGFX 程序时我还使用了一个断点来检查我的 QuadSPI 寄存器是否具有相同或相似的值,以及是否没有重要的遗漏(因为 TouchGFX以不同方式使用 QuadSPI 闪存,其中之一,不是在间接模式下)。我确保我的 GPIO 配置相同,一切都已计时,等等。 所以,这是我设置这些东西的方法:
接下来,我在 QuadSPI 的单行上设置指令和数据,同时关闭地址、交替字节和虚拟周期。然后我设置间接读取模式,根据闪存 IC 的数据表设置我希望接收 20 个字节的闪存 ID,然后清除 QSPI 标志。接下来我加载指令本身——读取 ID 的命令——引入通信配置寄存器的指令位。根据参考手册,这应该会立即触发通信。接下来我的代码只是等到达到 fifo 阈值 - 4 个字节 - 到达,这样我就可以从数据寄存器中以 uint32_t 的形式一次读取它们。我现在不关心接下来的字节会发生什么,我不处理它们,当我看到我收到任何东西时我会担心它。
如果我在循环中放置一个断点,以便程序在每次调用 qspi_read_id() 之前暂停。在第一次调用 read_id 之前,QuadSPI->SR 状态寄存器中的唯一标志是 Fifo 阈值标志。如果我继续该程序,1 秒后我会在再次调用 read_id 之前暂停,并且我已经有标志“忙”、“传输完成”和相同的“fifo 阈值”。 D0 线绝对固定在 0v,示波器永远不会触发。片选在第一次调用 read_id 后变得疯狂,即使 MCU 在断点处暂停也不会停止: 我显然配置错误了一些东西,但我没有主意。我阅读了一些关于这个主题的材料,也会继续研究,但我希望有人能指出我正确的方向。 |
|
相关推荐
1个回答
|
|
我仍然不知道,我做错了什么,显然是某处配置错误,但我设法解决了。我跳过了时钟启用和 GPIO 配置,我确信它们是正确的,并且我只在初始化部分复制了一对代码,毕竟我只需要看到第一个传输就知道它在工作。我必须修改该代码以适合我的闪存 IC。这是我的有效代码(我确定了定期交流的范围):
|
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2711 浏览 1 评论
3235 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1807 浏览 1 评论
3643 浏览 6 评论
6030 浏览 21 评论
1332浏览 4评论
206浏览 3评论
194浏览 3评论
对H747I-DISCO写程序时将CN2的st-link复用为usart1,再次烧录时无法检测到stlink怎么解决?
348浏览 2评论
STM32G474RE芯片只是串口发个数据就发烫严重是怎么回事?
440浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 20:33 , Processed in 1.104301 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号