你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F407ZGT6的SD卡通过DMA控制时,无法从外部SRAM取数据

[复制链接]
冰华闇 提问时间:2025-8-8 11:24 / 已解决
cubeMX固件库版本STM32Cube FW_F4V1.26.2

STM32F4上跑了FreeRtos,Fatfs,USB_Device_Mass Storage这几个中间件
由于使用了FreeRtos,SD卡强制为DMA控制
芯片需要对SD卡中的文件进行读写修改,文件大小不确定,所以FSMC接了1M的外表SRAM,使用FreeRtos-heap4管理这部分内存.
一开始在挂载文件系统时报告磁盘错误,排查后发现是MX生成的DMA的中断服务函数中没有调用BSP的回调函数,添加后报没有找到文件系统错误,调用fatfs的格式化函数,返回无异常,但再次挂载后仍提示未找到文件系统
直接读取SD卡内容,发现确实文件系统的配置没有被写入,尝试直接写入SD数据,数据来源为内部RAM,写入后读取,返回的数据是写入的内容,把数据来源定位到外部SRAM,再次写入SD卡,读取后发现SD卡的数据没有被改变,但HAL库的DMA发送函数没有回报异常。
目前需要让外部SRAM的数据可以直接通过DMA传输到SD卡中需要如何配置?
收藏 评论2 发布时间:2025-8-8 11:24

举报

2个回答
y369369 最优答案 回答时间:2025-8-12 10:18:09

SDIO 外设的 DMA 只能访问 AHB 总线上的“内部 SRAM1/2/3(0x2000 0000 起)”。 你通过 FSMC 挂在外部总线上的 1 M SRAM(典型地址 0x6000 0000 或 0x6800 0000 )属于 AHB 外部的存储器,SDIO DMA 无法直接访问。

冰华闇 回答时间:2025-9-3 16:12:17

y369369 发表于 2025-8-12 10:18
SDIO 外设的 DMA 只能访问 AHB 总线上的“内部 SRAM1/2/3(0x2000 0000 起)”。
你通过 FSMC 挂在外部 ...

[md]好的,我还使用在该芯片的全速USB2.0模拟了U盘,同样使用DMA对SD卡进行读取写入,在将电脑与芯片的USB2.0接口连接后(数据接口使用软件上拉,数据线长1m),电脑的资源管理器能识别到U盘设备,但读取时间很长才读取完毕可以打开,SD卡的容量为8GB(实际7.3GB),单次读取为512字节。不清楚造成这个传输速度慢的原因是否也与DMA传输有关,传输8MB文件的速度为355KB/s,但是传输过程是一卡一卡的。

芯片上运行了FREERTOS系统,系统掌管的中断优先级是5-15,SDIO中断优先级是5,SD的两个DMA中断优先级是6,USB_FS中断优先级是7

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版