IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 使用STM32Cube对SD卡进行分区 -> 正文阅读

[嵌入式]使用STM32Cube对SD卡进行分区

? ? ? ? 我的第二篇文章,继续拿SD卡来作妖,这次搞一下SD卡的分区实验。

? ? ? ? 首先讲一下SD卡分区的原理,可以先看一下这篇文章:MBR分区表详解

? ? ? ? SD卡MBR的位置和硬盘也差不多,就位于第一扇区。MBR的组成我这里就不详说了,感兴趣的可以自己去研究研究。MBR占用了446字节,剩下的66字节由PTE(分区表4*16,MBR模式只能划分4个分区)和分区的结束标志(0x55AA)组成。实际上我们需要做的就是,通过修改这64字节的PTE来实现SD卡的分区。

? ? ? ? 下图为ff.c中对于分区表结构的定义,其实就和上面提到的文章里说的一样的啦。

?原理知道了,那就开始动手了!

我的Cube版本为6.2.1,芯片为STM32H743IIKx,软件包版本为1.9.0

首先是SD卡的配置


然后配置一下FATFS?


别忘了修改一下Stack的大小 (我只要使用FATFS就会把栈改的大一些)


好了,现在就可以生成代码了,我们要做的就是在fatfs.c中?添加以下代码

分区的关键函数就是f_fdisk,由于我只使用了一个物理磁盘,所以该函数的第一个参数直接传递了一个0,当然也可以通过以下代码来获取物理磁盘号(在ff.c的f_mkfs函数中)。

第二个参数用来传递分区的容量分配信息,?我所使用的是256G的SDXC,这里把它分成了64G(0x07726000*512B)和192G (0x1657200*512B)。

第三个参数传递工作缓存地址,注意缓存大小不要小于_MAX_SS。

剩下就是编译烧录,等程序运行到主循环之后,把SD卡拿出来插上电脑,就可以看到分区完成啦


?最后我把调试过程中的一些坑也分享一下

1、cube6.2.1生成的SD初始化函数中,需要手动添加HAL_SD_Init()

2、我一开始分区设置为128G+128G,在使用f_mkfs对第二分区进行格式化时,出现了错误,debug后发现在以下位置出现问题

?????????这段代码意思是分区的起始地址不允许超过分区容量的一半,通俗说就是多分区时,前面的分区不允许超过总容量的三分之一(大概范围),不然就不许你初始化(大概是嵌入式FATFS的限制吧)。其实使用f_fdisk后,就已经完成了SD的分区了,到此为止是没有上面所说的那个分区容量大小的限制的。不过为了能够更好地看到效果,我直接在分区之后对两个分区进行了格式化,所以就改成了64+192的组合。


? ? ? ? 以上实验是我阅读FATFS源码后进行编写调试的,可能会存在一些问题,如发现不对的地方,欢迎指正!我定万分感激!

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-07-29 11:48:50  更:2021-07-29 11:49:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 10:39:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计