完善资料让更多小伙伴认识你,还能领取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。这是我的有效代码(我确定了定期交流的范围):
|
|
|
|
|
只有小组成员才能发言,加入小组>>
stm32mp157的异核通信的rpmsg_sdb的m4固件和a7驱动该如何编写?
1453 浏览 0 评论
stm32f103用freertos对一个采样率为1kHz的传感器,进行采样,数据出差
1502 浏览 0 评论
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
3649 浏览 1 评论
3842 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
2461 浏览 1 评论
STM32H7打开DCache后,出现了串口接收信息为空的现象,是哪里出了问题?
727浏览 5评论
用NANO STM32F103RBT6的开发板烧录不了是哪里出了问题?
661浏览 5评论
710浏览 5评论
外部中断触发类型为双边沿触发,进入中断回调后有什么办法判断该边沿是上升沿还是下降沿?
941浏览 5评论
STM32L071CBT6低温环境下无法正常工作是什么原因引起的?
745浏览 5评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 06:25 , Processed in 0.709503 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
354