基于STM32F429,Cubemx的SDHC卡的基本Fatfs文件移植
本博文要求各位初步了解Fatfs文件系统
友情提示Fatfs官网:http://elm-chan.org/fsw/ff/00index_e.html
1.开发软件
keil5,Cube5.21
2.实验目的
往SDHC卡上移植Fatfs文件
SDHC:
SDHC是"Secure Digital High Capacity“的缩写,即“高容量SD存储卡”。2006年5月SD协会发布了SD 2.0的系统规范,并在其中规定SDHC是符合该规范、SDHC存储卡容量为“4GB-32GB”。
3.Cube配置
(1)在Cube上点开芯片功能的SDIO,因为我用的是4GB的SDHC卡,所以用SD 4 bits,用默认配置即可与SD卡通信
红框内为SDIO协议引用的引脚
PC8 ------> SDIO_D0
PC9 ------> SDIO_D1
PC10 ------> SDIO_D2
PC11 ------> SDIO_D3
PC12 ------> SDIO_CK
PD2 ------> SDIO_CMD
(2)再点开下面的FATFS,即向工程里添加fatfs移植文件,然后再勾选SD Card,底层的disiko接口默认添加SD卡读写程序
(3)配置时钟完成后,就可生成工程
4.工程讲解
(1)下面的文件是Cube帮你移植的Fatfs文件,但不用修改里面的程序
(2)下面的两个C文件,一个是SD的diskio接口层,Cube已往里面调用了HAL库的SD卡读写函数,可以不修改,另一个是上层的fatfs文件功能函数,可根据需要添加函数,也可以不用修改。
(3)虽然Cube使用了MX_SDIO_SD_Init();进行了SD卡的初始化,但还要用下面的初始化进行初始化才能使用SD卡,它们在stm32f4xx_hal_sd.c里
HAL_SD_Init(&hsd);HAL_SD_InitCard(&hsd);
5.程序测试
(1)使用FATFS_GetAttachedDriversNbr()判断SD卡是否挂载上驱动
i=FATFS_GetAttachedDriversNbr();
printf("已挂载的驱动:%d",i);
(2)调用ff.c的文件功能函数,如果返回FR_OK(0)则成功
/* USER CODE BEGIN Application */void SD_Fatfs_Test(void){printf("文件挂载\n" );retSD=f_mount(&SDFatFS, "0:/",0); if(retSD==FR_OK){printf("MOUNT OK\n");printf("FAILED0: %d\n",retSD);}elseprintf("FAILED2: %d\n",retSD);printf("文件打开\n" );retSD=f_open(&SDFile, "0:hellow.txt", FA_CREATE_ALWAYS | FA_WRITE | FA_READ ); if(retSD==FR_OK){printf("OPEN OK\n");}elseprintf("FAILED3: %d\n",retSD);printf("文件关闭\n" );retSD=f_close(&SDFile);if(retSD==FR_OK){printf("closk OK\n");}elseprintf("FAILED5: %d\n",retSD);}
(3)HAL_SD_ReadBlocks()和HAL_SD_WriteBlocks()可以往SD卡读写数据
(4)用以下的HAKL库函数可读取SD卡的信息,有兴趣可以去弄
HAL_SD_CardStateTypeDef HAL_SD_GetCardState(SD_HandleTypeDef *hsd);
HAL_StatusTypeDef HAL_SD_GetCardCID(SD_HandleTypeDef *hsd, HAL_SD_CardCIDTypeDef *pCID);
HAL_StatusTypeDef HAL_SD_GetCardCSD(SD_HandleTypeDef *hsd, HAL_SD_CardCSDTypeDef *pCSD);
HAL_StatusTypeDef HAL_SD_GetCardStatus(SD_HandleTypeDef *hsd, HAL_SD_CardStatusTypeDef *pStatus);
HAL_StatusTypeDef HAL_SD_GetCardInfo(SD_HandleTypeDef *hsd, HAL_SD_CardInfoTypeDef *pCardInfo);
6.Fatfs使用小经验
(1)使用FATFS,FIL等类型的变量时,可能要先申请内存空间,才能使用。具体是怎样请先学习STM32的内存管理。
(2)使用f_mount,f_close等文件功能函数出错时,请看其返回函数为何值,更容易调试。
typedef enum {FR_OK = 0, /* (0) Succeeded */FR_DISK_ERR, /* (1) A hard error occurred in the low level disk I/O layer */FR_INT_ERR, /* (2) Assertion failed */FR_NOT_READY, /* (3) The physical drive cannot work */FR_NO_FILE, /* (4) Could not find the file */FR_NO_PATH, /* (5) Could not find the path */FR_INVALID_NAME, /* (6) The path name format is invalid */FR_DENIED, /* (7) Access denied due to prohibited access or directory full */FR_EXIST, /* (8) Access denied due to prohibited access */FR_INVALID_OBJECT, /* (9) The file/directory object is invalid */FR_WRITE_PROTECTED, /* (10) The physical drive is write protected */FR_INVALID_DRIVE, /* (11) The logical drive number is invalid */FR_NOT_ENABLED, /* (12) The volume has no work area */FR_NO_FILESYSTEM, /* (13) There is no valid FAT volume */FR_MKFS_ABORTED, /* (14) The f_mkfs() aborted due to any problem */FR_TIMEOUT, /* (15) Could not get a grant to access the volume within defined period */FR_LOCKED, /* (16) The operation is rejected according to the file sharing policy */FR_NOT_ENOUGH_CORE, /* (17) LFN working buffer could not be allocated */FR_TOO_MANY_OPEN_FILES, /* (18) Number of open files > _FS_LOCK */FR_INVALID_PARAMETER /* (19) Given parameter is invalid */ } FRESULT;
(3)要先加载文件卷,才能用文件功能函数。
(4)程序出错一般是底层接口函数没写好。
粗糙之作,有不合之处请多多指教。
转载于:https://www.cnblogs.com/feiniaoliangtiangao/p/11023636.html
基于STM32F429,Cubemx的SDHC卡的基本Fatfs文件移植相关推荐
- 物联网控制卡学习资料第465篇:基于STM32F429多路RS232 物联网控制卡
基于STM32F429多路RS232 物联网控制卡 一.板卡概述 板卡基于STM32F429核心板进行扩展,包括多路RS232,百兆网络,RS232 可以扩展多路 声避障模块.G ...
- CE下基于Zylonite硬件平台的SD卡驱动开发
摘要:本文结合实际项目(一款以WINCE为操作系统内核的GSM/PHS双模智能手机)对嵌入式系统Windows CE5.0的底层驱动(SD卡)的架构进行了分析和研究,以MARVELL公司提供的基于IN ...
- 基于STM32F103完成对SD卡的数据读取(fat文件模式)
文章目录 实验内容 一.SD卡协议 (一).SD卡简介 (二).SD 卡物理结构 (三).SD卡总线 二.基于STM32F103完成对SD卡的数据读取 (一).创建工程 (二).修改代码 (三).串口 ...
- [原创][连载].基于SOPC的简易数码相框 - Nios II SBTE部分(软件部分) - 从SD卡内读取图片文件,然后显示在TFT-LCD上...
实在很抱歉,时间紧张,我只讲怎样从SD卡内读取bin文件(二进制文件),然后现在TFT-LCD上. 准备工具 1. Image2Lcd.zip 操作步骤 步骤1 寻找或制作240x320的图片 简单起 ...
- python信用评分卡_基于Python的信用评分卡模型分析(二)
上一篇文章基于Python的信用评分卡模型分析(一)已经介绍了信用评分卡模型的数据预处理.探索性数据分析.变量分箱和变量选择等.接下来我们将继续讨论信用评分卡的模型实现和分析,信用评分的方法和自动评分 ...
- 基于Python的信用评分卡模型-give me some credit数据集,AUC 0.93 KS 0.71
信用风险计量模型可以包括跟个人信用评级,企业信用评级和国家信用评级.人信用评级有一系列评级模型组成,常见是A卡(申请评分卡).B卡(行为模型).C卡(催收模型)和F卡(反欺诈模型). 今天我们展示的是 ...
- 基于PCI接口的数据采集卡!(第一次做的板卡)
[板 名] 基于PCI接口的数据采集卡 [板大 小] *X* 比标准PCI卡长点 [板层 数] 8 [输入接口] 100PIN外输入以及子板接口(AD子板) [输出接口] ...
- 用计算机获取机读卡是通过什么实现的,一种基于图像识别技术的答题卡及考试系统的制作方法...
本发明涉及智能考试系统. 背景技术: 传统答题卡具有如下缺陷: 1.答题卡定位需要右侧和底端的黑点来实现定位整张答题卡的行和列: 2.需要专用答题卡识别机(专有硬件)来识别答案: 3.需要用特种铅笔( ...
- 基于STM32采用CS创世 SD NAND(贴片SD卡)完成FATFS文件系统移植与测试
一.前言 在STM32项目开发中,经常会用到存储芯片存储数据. 比如:关机时保存机器运行过程中的状态数据,上电再从存储芯片里读取数据恢复:在存储芯片里也会存放很多资源文件.比如,开机音乐,界面上的菜单 ...
- 基于CH568芯片加密SD卡方案
基于CH568芯片加密SD卡方案 简介 基于CH568芯片加密SD卡方案采用CH568芯片实现,CH568芯片内置USB2.0高速接口.SD卡接口以及SM4加密算法.可通过按键或指纹模块等进行密码的输 ...
最新文章
- MongoDB(4.0)分片——大数据的处理之道
- C++(五)——运算符重载
- linux中查找某一个字符串,Linux系统下,在文件中查找某个字符串
- 发布 项目_第十八期科创基金项目发布会圆满结束
- 基于live555的视频直播 DM368IPNC RTSP分析
- python 控件叠加_如何将图像应用于控件背景(叠加)
- 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 10丨换座位【难度中等】
- c#之Stringbuilder、String、Append
- 任何人都可以胜任全栈开发?
- AutoCAD 版本历史 版本代号
- windows server 2008 R2 SP1多国语言包官方下载
- 大芒果 mysql 断开_大芒果3.3.5进入显示 与服务器断开连接
- adf4351 锁相环相关硬件设计
- Excel如何使用DATE函数
- 12.2总结(纵使结局不如意,放弃实属下下签。)
- netscreenfortinet
- FPGA Altera Remote Update笔记
- Trinity安装全过程并解决部分报错
- 葡萄牙晋级世界杯决赛
- 新走遍美国第一遍总结