完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
发现用STM32H750 dma+spi读写数据时发现当spi速度大于8M时出现内存不一致的问题,我再读之前已经用SCB_CleanInvalidateDCache_by_Addr这个函数无效化内存了,速度小于8M时没有这个问题,我这个程序是运行在外挂的flash里的
|
|
相关推荐
1个回答
|
|
STM32H750 DMA + SPI 内存数据不一致的原因可能有以下几点:
1. **缓存同步问题**:当使用 DMA 进行 SPI 通信时,数据可能会被缓存。在高速 SPI 通信时,缓存同步可能不够及时,导致数据不一致。尽管您已经使用了 `SCB_CleanInvalidateDCache_by_Addr` 函数,但在高速传输时,缓存同步可能仍然存在问题。 2. **SPI 时钟配置**:当 SPI 速度大于 8M 时,可能需要重新检查 SPI 时钟配置,确保时钟设置正确。错误的时钟配置可能导致数据传输错误。 3. **SPI 模式设置**:检查 SPI 模式设置,确保数据传输的方向和极性设置正确。错误的 SPI 模式设置可能导致数据不一致。 4. **DMA 配置**:检查 DMA 配置,确保数据传输的方向、大小和地址设置正确。错误的 DMA 配置可能导致数据不一致。 5. **外部 Flash 性能**:由于您的程序运行在外挂的 Flash 里,需要检查 Flash 的性能是否满足高速 SPI 通信的要求。如果 Flash 性能不足,可能导致数据不一致。 6. **硬件连接问题**:检查 SPI 和 DMA 相关的硬件连接,确保连接正确且没有损坏。硬件连接问题可能导致数据传输错误。 为了解决这个问题,您可以尝试以下步骤: 1. **降低 SPI 速度**:尝试降低 SPI 速度,看看问题是否仍然存在。如果问题消失,那么可能是缓存同步问题。 2. **优化缓存同步**:在高速 SPI 通信时,尝试使用更频繁的缓存同步操作,例如在每次数据传输后立即执行 `SCB_CleanInvalidateDCache_by_Addr` 函数。 3. **重新检查 SPI 和 DMA 配置**:确保 SPI 和 DMA 的配置正确,包括时钟设置、模式设置和硬件连接。 4. **测试不同的 Flash 性能**:如果可能,尝试使用性能更高的 Flash,看看问题是否仍然存在。 5. **使用软件 SPI**:如果硬件 SPI 仍然存在问题,可以尝试使用软件 SPI 作为替代方案。 通过以上步骤,您应该能够找到导致内存数据不一致的原因,并采取相应的措施解决问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1627 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1550 浏览 1 评论
984 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
688 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1601 浏览 2 评论
1867浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
650浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
518浏览 3评论
536浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
506浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 13:17 , Processed in 0.835559 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号