历史上的今天
今天是:2024年10月08日(星期二)
2018年10月08日 | STM32F407之TF卡HAL库的使用
2018-10-08 来源:eefocus
一、初始化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接口。其实两个用法是一样的。
二、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卡函数地址最好设置为扇区地址。
史海拾趣
|
将RVDS中的工程移植到RealView MDK说明文档 请点击链接:http://arm.embedinfo.com/BBS/dispbbs.asp?boardid=3&Id=219… 查看全部问答> |
|
首次发帖---国内最详细的linux基础教程(不过是第一版)---网域时代的教程 确实详细,只是版本有点老,贡献一下,供参考。 点击此处下载 或粘帖:http://download.eeworld.net/source/2251570… 查看全部问答> |
|
2410 内部 1 ram起始地址被映射到哪里?容量有多大? 2 rom起始地址被映射到哪里?容量有多大? 2410 启动方式: 3 2410外启动时,第一条指令时在哪里执行的? & ...… 查看全部问答> |
|
大家好! 我们要开发一个sim卡的读卡器 gsm协议中提到了dialling number的概念,但是并没有明确提出通讯录是如何存储的, 请教大家dialling number和通讯录之间是什么关系?是不是通过读取dialling number就 可以读取通讯录了? 谢谢! … 查看全部问答> |
|
基于DS18B20和四位LED的温度自动控制系统 1:采用DS18B20采集温度,精度在0.1度。 2:采用89S52芯片。 3:采用四位共阳LED数码显示,亮度高。 4:可以设定控制温度,达到设定值继电器A工作,低于设定值继电器A断开。 5:超温报警,超过设定温 ...… 查看全部问答> |




