stm32 CubeMx 怎么实现SD卡sd nand FATFS读写测试
本实验仅用于记录和分享技术经验若涉及侵权请联系我删除。
stm32 CubeMx 实现SD卡/sd nand FATFS读写测试。
材料:stm32F407ZGT6开发板、雷龙公司的SD_NAND 测试板(CSNP1GCR01-AOW)。(一开始是使用 Nandflash的操作起来不太方便而且 stm32cubemx自带的 fatfs还没有磨损平衡算法,很是难受。)
CSNP1GCR01-AOW的优势:
不用写驱动程序自带坏块管理的NAND Flash(贴片式TF卡),尺寸小巧,简单易用,兼容性强,稳定可靠,固件可定制,LGA-8封装,标准SDIO接口,兼容SPI/SD接口,兼容各大MCU平台,可替代普通TF卡/SD卡,尺寸6x8mm毫米,内置SLC晶圆擦写寿命10万次,通过1万次随机掉电测试耐高低温,支持工业级温度-40°~+85°,机贴手贴都非常方便,速度级别Class10(读取速度23.5MB/S写入速度12.3MB/S)标准的SD 2.0协议使得用户可以直接移植标准驱动代码,省去了驱动代码编程环节。支持TF卡启动的SOC都可以用SD NAND,提供STM32参考例程及原厂技术支持,主流容量:128MB/512MB/4GB/8GB,比TF卡稳定,比eMMC便宜,样品免费试用(可到官网找客服小姐姐领取样品哦)。雷龙官网
话不多说开始正文:
stm32cubeMX 版本:6.6.1
MDK5 版本5.35
开始配置STM32
1、 配置时钟:
系统时钟树配置(我这里直接拉满,实际使用根据功耗要求作相应的调整)
2、 配置调试接口
注意DEBUG这个一定要配置,如果是默认的那下载一次程序之后第二次就下载不进去了.
3、配置SDIO:
(我这里还是用了DMA 减少mcu的资源开销)
配置完成之后随便选一个IO口作为SD_NAND的插入检测引脚(没有检测脚的也选上不然在生成代码的时候会有警告,看着很不舒服,我这里选的是 PE4 引脚)
4、配置SDIO的DMA
5、添加文件系统
6、配置堆栈大小(稍微调大一点,不然在读写大一点的数据的时候可能会出错)
7、生成代码
8、生成代码后在 bsp_driver_sd.c这个文件中将这三行代码注释(这是检测SD卡是否接入的引脚 如果不注释在挂载sdnand的时候会提示 not_ready)
9、在main.c中 添加测试代码
*//* USER CODE END Header *//* Includes ------------------------------------------------------------------*/#include "main.h"#include "dma.h"#include "fatfs.h"#include "sdio.h"#include "gpio.h"/* Private includes ----------------------------------------------------------*//* USER CODE BEGIN Includes *//* USER CODE END Includes *//* Private typedef -----------------------------------------------------------*//* USER CODE BEGIN PTD */FATFS fs; /* FatFs 文件系统对象 */FIL file; /* 文件对象 */FRESULT f_res; /* 文件操作结果 */UINT fnum; /* 文件成功读写数量 */BYTE ReadBuffer[1024] = {0}; /* 读缓冲区 */BYTE WriteBuffer[] = /* 写缓冲区 */"This is STM32 working with FatFs\r\n";/* USER CODE END PTD *//* Private define ------------------------------------------------------------*//* USER CODE BEGIN PD *//* USER CODE END PD *//* Private macro -------------------------------------------------------------*//* USER CODE BEGIN PM *//* USER CODE END PM *//* Private variables ---------------------------------------------------------*//* USER CODE BEGIN PV *///HAL_SD_CardInfoTypeDef SDCardInfo;//HAL_SD_CardCIDTypeDef SDCard_CID;/* USER CODE END PV *//* Private function prototypes -----------------------------------------------*/void SystemClock_Config(void);/* USER CODE BEGIN PFP *//* USER CODE END PFP *//* Private user code ---------------------------------------------------------*//* USER CODE BEGIN 0 *//* USER CODE END 0 *//*** @brief The application entry point.* @retval int*/int main(void){/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_DMA_Init();MX_SDIO_SD_Init();MX_FATFS_Init();/* USER CODE BEGIN 2 */f_res = f_mount(&SDFatFS, "0:/",1);HAL_Delay(100);if(f_res == FR_NO_FILESYSTEM){f_res = f_mkfs("0:/",FM_FAT|FM_SFD,0,&ReadBuffer,sizeof(ReadBuffer));//格式化SDNANDHAL_Delay(100);if(f_res == FR_OK){f_res = f_mount(NULL,"0:/",1);//取消挂载f_res = f_mount(&SDFatFS, "0:/",1);//重新挂载}}HAL_Delay(100);//写测试--------------------------------------------------------------------f_res = f_open(&SDFile,"helloWorld.txt",FA_CREATE_ALWAYS|FA_WRITE);HAL_Delay(100);f_res = f_write(&SDFile,WriteBuffer,sizeof(WriteBuffer),&fnum);HAL_Delay(100);f_res = f_close(&SDFile);//读测试--------------------------------------------------------------------f_res = f_open(&SDFile,"helloWorld.txt",FA_OPEN_EXISTING | FA_READ);HAL_Delay(100);if(f_res == FR_OK){f_res = f_read(&SDFile,ReadBuffer,sizeof(ReadBuffer),&fnum);}HAL_Delay(100);f_res = f_close(&SDFile);HAL_Delay(100);/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */}/* USER CODE END PTD */
配置没问题的程序运行后则可以将 sdnand测试板 插入到读卡器中,读卡器再接到电脑上则就会出现:
打开文件则会出现
至此大功告成!!!!!
需要注意的是最新版的fatfs 文件系统中
FRESULT f_mkfs (const TCHAR* path, /* Logical drive number */BYTE opt, /* Format option */DWORD au, /* Size of allocation unit [byte] */void* work, /* Pointer to working buffer */UINT len /* Size of working buffer */)
f_mkfs 这个函数有五个参数,老版本的只有三个参数
所以在格式化的时候得这么来操作
f_res = f_mkfs("0:/",FM_FAT|FM_SFD,0,&ReadBuffer,sizeof(ReadBuffer));
NO 70:最近研究,早饭前后锻炼身体对健康的影响大不相同
适用对象 : 高一尖子生,高二中等生、高三学生;想参加大学四、六级等级考试的同学。
效果说明 : 依据本人近十年的实验数据,严格按照要求熟读100篇英语无障碍阅读成绩可提高约5分,200篇约10分,300篇约15分,400篇约20-25分,500篇约25-30分。从教30多年的老九老师悄悄地告诉您:高中/大学英语无障碍阅读是迅速扩大英语词汇量提升英语阅读水平十分十分十分有效的手段,我个人近几年年年教毕业班,屡试屡验!
使用方法 (以家长/教师为例): ①先要求孩子做好阅读笔记(让孩子借助“全文汉语翻译”及“疑似生词加注”摘录整理在学习过程中遇到的难句和生词)。换言之,孩子除了记在笔记上的难句和生词,阅读材料中的其它句子和单词都应该能完全理解。②检查孩子对记在笔记上的难句的理解和生词的记忆(没有条件的只抽查生词,尤其是绿色斜体部分的单词,注意只要求孩子根据英语写汉语)。
编辑声明: 高中/大学无障碍阅读系列材料来自市面或网络上公开的全国各地高考原文、名地名校模考佳文、《英语周报》、大学各类等级考试中(低、中难度)原文。所有文章均由张九明本人参照《网易有道词典》编译而成。翻译时采用“英式汉化”翻译(虽然从汉语的角度看这样的翻译很不规范)便于学员您对原文的快速理解。
NO 70:最近研究,早饭前后锻炼身体对健康的影响大不相同
1 For those who can stomach it, working out before breakfast may be more beneficial for health than eating first, according to a study of meal timing and physical activity.
有一项关于“进餐时间和体育活动(锻炼效果间的关系)”的研究表明:对能忍受饥饿的人来说,早餐前锻炼身体比早餐后锻炼身体更有益于健康。
stomach胃-食欲-欲望n/消化-忍受v,beneficial有利的/有益的
2 Athletes and scientists have long known that meal timing affects performance . However, far less has been known about how meal timing and exercise might affect general health.
科学家和运动员早就知道:进餐时间的早晚会影响体育成绩。然而,对于进餐时间和运动如何影响普通一般人的健康,人们所知甚少。
time安排...的时间/测定或记录...的时间/为...选择时机v,performance表现/表演n,general一般/综合/普遍的a
3 To find out, recently British scientists conducted a study. They first found 10 overweight and inactive but otherwise healthy young men, whose lifestyles are, for better and worse, representative of those of most of us.
为了找到答案,最近英国科学家进行了一项研究。他们首先找到10名超重、不爱运动但身体健康的年轻男性。他们的生活方式(无论好坏)多多少少代表了我们大多数人的生活方式。
conduct组织/实施/指挥(音乐)v,overweight超重的/肥胖的a,inactive不活跃的a,otherwise要不然/不同/在其他方面ad,lifestyle生活方式n,representative代表n
They tested the men's fitness and resting metabolic (新陈代谢的) rates and took samples (样品) of their blood and fat tissue .
他们事先测试了这些男子的健康状况和休息状态下新陈代谢的频率,并对血液和脂肪组织进行样本采集。
fitness健康n,fat脂肪n/胖的a,tissue组织n
4 Then, on two separate morning visits to the scientists' lab, each man walked for an hour at an average speed that, in theory should allow his body to rely mainly on fat for fuel .
然后叫他们在两个不同的早上到科学家实验室各来一次。要求每一个人以一般速度步行一小时。理论上,这样的速度应该能消耗他们身体上的脂肪(不管吃不吃早饭步行,步行时身体主要以脂肪作为燃料)。
separate各自分开的a/分开v,average平均普通的a,mainly主要地ad,fuel燃料n/助燃v
Before one of these workouts , the men skipped breakfast, meaning that they exercise d on a completely empty stomach after a long overnight fast (禁食). On the other occasion , they ate a rich morning meal about two hours before they started walking.
其中的一次锻炼前他们不吃早餐,这就意味着他们完全空着肚子锻炼(在经过了一夜长时间的禁食之后)。另外一次锻炼前他们先吃了一顿丰盛的早餐(在开始走两小时的路前)。
workout锻炼n,exercise锻炼n/v,overnight一夜之间ad/一夜的a,occasion场合/机会n
5 Just before and an hour after each workout, the scientists took additional samples of the men's blood and fat tissue .
在每一次(恰逢)锻炼前,和锻炼(一小时)后,科学家们都采集了这些人的血液和脂肪组织的额外的样本。
additional额外的a,sample样本n,tissue组织n
6 Then they compared the samples. There were considerable differences. Most obviously , the men displayed lower blood sugar levels at the start of their workouts when they had skipped breakfast than when they had eaten.
研究人员然后比较了这些样本,发现有相当大的差异。最明显的是,这些人在锻炼开始时,不吃早餐的血糖水平更低(与吃早餐的情形比起来)。
considerable担当多的a,obviously明显ad,display展示v,sugar糖n
As a result, they burned more fat during walks on an empty stomach than when they had eaten first. On the other hand, they burned slightly more calories (卡路里), on average, during the workout after breakfast than after fasting.
所以,空腹时锻炼会燃烧更多的脂肪(相对于吃早饭后锻炼而言)。另一方面平均而言,吃早饭后锻炼会消耗更多的热量卡(相对于不吃早餐锻炼而言)。
slightly轻微ad
7 But it was the effects deep within the fat cells that may have been the most significant , the researchers found. Multiple genes behaved differently, depending on whether someone had eaten or not before walking.
但研究人员发现,研究锻炼对脂肪细胞的深层影响可能是最重要的。锻炼中许多基因的表现的不同都取决于你锻炼前是否吃过东西。
cell细胞n,significant重要的a,multiple许多多样的,gene基因
Many of these genes produce proteins (蛋白质) that can improve blood sugar regulation and insulin (胰岛素) levels throughout the body and so are associated with improved metabolic health.
许多这些基因会产生蛋白质,能改善整个人体内血糖的调节和胰岛素的含量,所以与人体新陈代谢的改善有很大关系(与改善过的新陈代谢健康有关联)。
produce生产/导致v,regulation管理/规范n,associate与人交往/将…和…联系起来v,improved改良的/改进过的
These genes were much more active when the men had fasted before exercise than when they had breakfasted.
不吃早饭的运动时,这些基因会活跃得多(比吃早餐后运动)。
8 The implication of these results is that to gain the greatest health benefits from exercise, it may be wise to skip eating first.
这些结果表明,要想从运动中获得最大的健康益处,最好先不吃东西。
implication含义/暗示/牵连/可能的结果/影响
相关问答
单词释义.“tall、short、thin、 fat 、young、old、big、smal...[最佳回答]tall高的short短的,矮的thin瘦的,薄的fat胖的young年轻的old老的,年老的big大的small小的nice好的kind善良的active积极的quiet安静...
fat 是什么意思?fat的意思是:n.(人体摄入的动植物)脂肪;脂肪;肥肉;(烹调用的)动植物油。adj.肥胖的;肥的;厚的;宽大的;大量的;值钱的。vi.养肥;在…中加入脂肪长肥。例句:1.P...
fat 的汉语是什么谢谢你_作业帮[最佳回答]fat英[fæt]美[fæt]adj.肥的;胖的;油腻的;丰满的n.脂肪;肥肉;(食用的)动植物油;(人体摄入的动植物)脂肪vt.养肥;在…中加入脂肪[例句]But...
胖的英文怎么拼[回答]胖的英文:fat;stout;plump。fat的释义:n.(人体摄入的动植物)脂肪;脂肪;肥肉;(烹调用的)动植物油adj.肥胖的;肥的;厚的;宽大的;大量的;值钱的vi.养...
Fat 什么意思?fat的意思是:n.(人体摄入的动植物)脂肪;脂肪;肥肉;(烹调用的)动植物油。adj.肥胖的;肥的;厚的;宽大的;大量的;值钱的。vi.养肥;在…中加入脂肪长肥。例句:1.P...
Fat 反义词?反义词slim英[slɪm]美[slɪm]释义adj.苗条的,纤细的;单薄的;(物)狭长的;(衣服)修长的,紧身的;(数量或数字)微小的;(公司或其他...反义词sl....
Fat 的反义词?反义词thin英[θɪn]美[θɪn]释义adj.薄的,细的;(人或身体部分)瘦的;(毛发)稀疏的;(液体)稀的,不粘稠的;能见度高的;(空气)稀薄的...反义词th.....
葱油用英语怎么发音 - 懂得onionoil.中文发音:啊你儿哦儿希望我的回答能帮到你,别忘采纳哦!scallion/ˈskæl.i.ən/fat[fæt]scallionoil
contain后加动词什么形式?contain的意思vt.包含,容纳;克制,遏制;牵制;包括或由…构成contain的用法用作动词(v.)用作及物动词S+~+n./pron.Ricecontainsprotein...
fat 和am发音一样吗?fat和am发音不一样。fat英[fæt]美[fæt]n.(人体摄入的动植物)脂肪;脂肪;肥肉;(烹调用的)动植物油;adj肥胖的;肥的;厚的;宽大的;大量的;值钱的;vi.养肥;...