STM32 SD卡4位总线24MHz DMA模式实战与问题解决
3星 · 超过75%的资源 需积分: 48 19 浏览量
更新于2024-09-10
5
收藏 60KB DOC 举报
本文主要介绍了在基于STM32系统中,利用SDIO接口通过4位总线以24MHz的DMA模式高效地进行SD卡(SHDC)读写操作的过程。作者发现,尽管STM32的SDIO模块理论上支持此类操作,但实际应用中存在一些问题,尤其是在使用4位总线和高速24MHz DMA时,许多教程或示例代码存在缺陷,导致SD卡初始化失败或者经常出现错误,比如未检测到起始位。
首先,SD卡的正确初始化至关重要。根据SD 2.0规范,当SD卡接入STM32系统时,需要至少发送74个时钟信号以使其进入自启动状态,然而,许多官方提供的示例代码中忽略了这个步骤,这在实际操作中造成了问题。为了解决这个问题,作者在SD_PowerON函数中添加了发送74个时钟周期的代码,确保SD卡能正确响应电源初始化。
其次,作者指出,使用4位总线进行高速DMA操作时,对于某些4GB的Class 4 SD卡(如金士顿牌),由于其性能限制,可能导致初始化失败或错误。在一些情况下,即使使用1位总线,也仅限于在低速传输或开启流控制模式下。而且,4位总线模式经常会报告起始位检测不到的问题,这表明总线配置可能不兼容。
然而,作者强调STM32的SDIO模块本身并无问题,完全有能力在正确的配置下执行高速4位总线和24MHz DMA模式下的SD卡读写。作者分享了自己的修改过的示例程序,对比了官方代码,以供其他开发者参考。这些改动包括对SDIO初始化参数的优化,如设置SDIO_ClockDiv以适应24MHz系统时钟,同时正确配置SDIO_ClockEdge,以确保数据传输的同步性。
这篇文章提供了如何在STM32环境下克服SDIO与SD卡交互中的障碍,特别是在使用高速DMA操作时,通过添加必要的初始化步骤和调整配置,使得SD卡能在4位总线和24MHz的条件下稳定工作。这对于希望进行高性能SD卡操作的STM32开发人员来说是一份宝贵的实践经验和参考资料。
2021-05-14 上传
2017-09-22 上传
2022-09-19 上传
2023-06-28 上传
2021-10-03 上传
2024-04-30 上传
118 浏览量
2022-09-24 上传
系统更新中
- 粉丝: 55
- 资源: 10
最新资源
- Cucumber-JVM模板项目快速入门教程
- ECharts打造公司组织架构可视化展示
- DC Water Alerts 数据开放平台介绍
- 图形化编程打造智能家居控制系统
- 个人网站构建:使用CSS实现风格化布局
- 使用CANBUS控制LED灯柱颜色的Matlab代码实现
- ACTCMS管理系统安装与更新教程
- 快速查看IP地址及地理位置信息的View My IP插件
- Pandas库助力数据分析与编程效率提升
- Python实现k均值聚类音乐数据可视化分析
- formdotcom打造高效网络表单解决方案
- 仿京东套餐购买列表源码DYCPackage解析
- 开源管理工具orgParty:面向PartySur的多功能应用程序
- Flutter时间跟踪应用Time_tracker入门教程
- AngularJS实现自定义滑动项目及动作指南
- 掌握C++编译时打印:compile-time-printer的使用与原理