打印
[应用相关]

STM32F407之TF卡HAL库的使用

[复制链接]
2109|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
磨砂|  楼主 | 2018-11-13 11:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、初始化SD卡


需要定义两个类型句柄,SD卡句柄SD_InitTypeDef类型和SD卡信息句柄HAL_SD_CardInfoTypeDef类型,然后初始化SD卡句柄参数,其中首先必须初始化SD卡数据宽度1Bit,然后初始化完其他参数后,通过HAL_SD_Init()函数吃实话,这里有两个参数,分别为上面的两个参数,会将SD卡信息储存在HAL_SD_CardInfoTypeDef类型中,然后注意,需要重新使能SD卡数据宽度,HAL_SD_WideBusOperation_Config(),两个参数,一个句柄,一个宽度。同其他初始化一样,调用HAL_SD_Init时会调用回调函数,回调函数中,需要使能SD和GPIO的时钟,然后初始化GPIO复用。这里需要提一下,F4上的SDIO和F7上的SDMMC两个接口,经过网上查询,并没有一个确切的说法,大概的说法是这两个接口是包含关系,F7上既有SDMMC也有SDIO接口。其实两个用法是一样的。



沙发
磨砂|  楼主 | 2018-11-13 11:51 | 只看该作者
二、SD卡读写
读写SD卡需要几点说明,1、读写块大小必须是512字节的,在HAL_SD_ReadBlocks函数说明中注释,block size必须是512字节大小。2、读写SD卡的时候必须要关闭所有中断,本人是学习正点原子的开发板的例程,他们中例程关闭和打开中断是在sys文件中的,INTX_DISABEL和INTX_ENABLE。3、读写地址定义可以是普通地址,也可以是扇区地址,这要看你自己的读写程序了。4、字节对齐问题,读写SD卡需要地址4字节对齐,因此在读写缓冲区buf中药先判断是不是地址对齐,(u32)buf%4,若不对齐,需要先将数据写到对齐的缓冲区内,定义一个__align(4) u8 SD_BUF[512]的数组中,然后再将数据从SD_BUF中写到buf中。折旧完成了SD卡数据的基本读写操作了,当然,如果要操作文件,还要移植FATFS文件系统。
注:SD卡读写函数中,读地址的设置,是设置扇区地址还是普通的读写地址,因为在FATFS文件系统中,要配置disk_read函数,该函数的参数是扇区地址,因此为了和FATFS参数一直,因此读写SD卡函数地址最好设置为扇区地址。

使用特权

评论回复
板凳
heimaojingzhang| | 2018-11-13 13:05 | 只看该作者
这个和sd卡是不是一样的呢

使用特权

评论回复
地板
磨砂|  楼主 | 2018-11-15 14:50 | 只看该作者
我也不是很清楚

使用特权

评论回复
5
jiekou001| | 2018-11-15 18:55 | 只看该作者
TF卡和SD卡就是卡套不同。

使用特权

评论回复
6
jiekou001| | 2018-11-15 18:56 | 只看该作者
我拆解过一个卡套,发现里面没有电路。说明SD和TF接口是一样的,就是大小不同而已

使用特权

评论回复
7
磨砂|  楼主 | 2018-11-19 15:19 | 只看该作者
jiekou001 发表于 2018-11-15 18:56
我拆解过一个卡套,发现里面没有电路。说明SD和TF接口是一样的,就是大小不同而已 ...

好的  感谢热心回复呀

使用特权

评论回复
8
dongnanxibei| | 2018-11-19 15:51 | 只看该作者
现在用TF卡的项目还上很多的。

使用特权

评论回复
9
磨砂|  楼主 | 2018-11-21 09:29 | 只看该作者
dongnanxibei 发表于 2018-11-19 15:51
现在用TF卡的项目还上很多的。

您好 我的眼界比较浅 您能介绍一下吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

85

主题

3886

帖子

2

粉丝