这几天一直在捣鼓stm32h7b0 ospi外挂psram做映射读写,
群友“ART-Pi代言人”的测试平台是stm32h730,他反复测试了psram映射,在映射写的时候会进入硬件错误,
这几天我们两人交流了一下发现是stm32h7系列的几款单片机的ospi外的的一个bug导致的
(es0478-stm32h7a3xig-stm32h7b0xb-and-stm32h7b3xi-device-errata-stmicroelectronics.pdf)
(see errata 2.7.8 “Memory-mapped write error response when DQS output is disabled”)
,原文的意思是即使器件没有DQS引脚,在间接和映射写时也要开启DQS,而在间接和映射读时也要关闭DQS。
后续他的平台可以运行了。
我的stm32h7b0必须配置mpu关闭涉及cache的功能,总结如下:

对于psram映射的地址空间,mpu中TEX、C、B、S配置组合对应表中的Other attributes一列必须是空的,
不然会导致大量写入psram的数值存在错误。
下一步打算把程序存储在spi flash中,由mcu内部flash中的boot将spi flash中的程序拷贝到psram中运行,
剩余多余的psram存储空间就可以作为堆栈使用(不能配置cache,速度上会比较慢,希望后续的stm32型号能解决)。
目前已经实现boot从spi flash拷贝程序到psram并跳转到psram运行的工作。在keil下调试也可以了(已实现spi flash的下载算法)。不过要注意boot和app的时钟配置要合理,或者干脆一样的配置,避免不必要的错误。keil下代码重新编译过后再调试,需要手动点下载烧录,而不是调试的自动更新固件。
-
STM32
+关注
关注
2305文章
11122浏览量
371197 -
SPI
+关注
关注
17文章
1866浏览量
99855 -
PSRAM
+关注
关注
1文章
46浏览量
14237 -
stm32h7
+关注
关注
0文章
37浏览量
1753
发布评论请先 登录
STM32H7B0通过QSPI地址映射外部flash开始使用正常,出现QSPI功能异常是什么原因导致的?
STM32H7b0设置Boot0引脚选项字节为0x1FF0,发送CAN帧后依旧无回复怎么解决?
stm32H7B0 的spi_dma传输怎么能传输更长的字节?
STM32H7B0和STM32H730系统自带Bootloader的起始地址是什么?
请问STM32H730 OSPI在内存映射模式下单次读写长度是多少?
STM32H7B0 + QSPI W25Q128JV无法读取ID怎么解决?
如何使用STM32H7A3/7B3和STM32H7B0微控制器内存和外围设备
STM32H7A3/7B3和STM32H7B0微控制器参考手册
如何使用USB3300的STM32H7B0上的ULPI?
AN5450_STM32H7A3/7B3 系列和 STM32H7B0 Value 系列智能电源管理 STM32Cube 扩展包
AN5307_STM32H7A3/7B3系列和STM32H7B0超值系列微控制器硬件开发入门
RM0455_STM32H7A3/7B3 和 STM32H7B0 超值系列基于 Arm® 的高级32位 MCU
STM32H7A3/7B3和STM32H7B0超值系列先进的基于臂®的32位MCU
ES0478_STM32H7A3xI/G和STM32H7B0xB和STM32H7B3xI单片机的局限性

关于stm32h7b0的ospi外设挂载psram做映射读写的实践
评论