贴片SD卡移植FATFS文件系统
一、前言
手头有一块深圳雷龙提供的贴片 CS 创世 SD NAND Flash,挂载个文件系统把玩一下。首先介绍一下使用的贴片 SD 卡,以前使用的都是拔插式的 SD 卡,下面这个样子:
深圳雷龙提供的CS创世 SD NAND Flash 如下图:
二、贴片 SD 卡介绍
深圳雷龙提供的 CS 创世 SD NAND 属于 LGA-8 封装,标准 SDIO 接口,兼容SPI/SD/eMMC接口,兼容各大MCU平台,可替代普通TF卡/SD卡,尺寸6x8mm毫米,内置SLC晶圆擦写寿命10万次,通过1万次随机调电测试耐高低温,支持工业级温度-40°~+85°,机贴手贴都非常方便,速度级别Class10(读取速度23.5MB/S写入速度12.3MB/S)标准的SD2.0协议普通的SD卡可直接驱动。
贴片 SD 卡的使用很简单,管脚的连接方式和普通拔插的 SD 卡一致,所以我们设计硬件时按照普通 SD 的接线方式设计就行,以小熊派开发板为例子,单线 SDIO 硬件接线如下:
我使用小熊派开发板来挂载 FATFS 到雷龙这块 SD 卡上
三、配置 CubeMX 底层接口
首先使用 CubeMX 配置底层 SD 卡接口,选择单线模式,分频设置高一点,其他参数保持默认
配置完 SD 卡后开启 FATFS 的文件系统,选择挂载到 SD 卡,文件名选择 US ,buff 放到 STACK 上(注意调大栈空间)
配置完成后生成代码,cubemx 主要是以下两个初始化函数:
四、编写命令行测试代码
使用我之前移植的命令行框架,编写测试函数
void mount(char argc, char *argv)
{
if (argc > 1)
{
if (!strcmp("init", &argv[argv[1]]))
{
FRESULT ret = FR_INT_ERR;
ret = f_mount(&SDFatFS, SDPath, 1);
if (ret != FR_OK) {
shell_printf("mount init failed! %dr ", ret);
} else {
shell_printf("mount init succ!r ");
}
} else if (!strcmp("deinit", &argv[argv[1]])) {
FRESULT ret = FR_INT_ERR;
ret = f_mount(NULL, "", 1);
if (ret != FR_OK) {
shell_printf("mount deinit failed!r ");
} else {
shell_printf("mount deinit succ!r ");
}
}
}
else
{
shell_printf("mount need more arguments!r ");
}
};
void open(char argc, char *argv)
{
if (argc > 1)
{
FRESULT ret = FR_INT_ERR;
ret = f_open(&SDFile, &argv[argv[1]], FA_READ | FA_WRITE | FA_CREATE_NEW);
if (ret != FR_OK) {
shell_printf("open %s failed! code: %d r ", &argv[argv[1]], ret);
} else {
shell_printf("open %s succ!r ", &argv[argv[1]]);
}
}
else
{
shell_printf("mount need more arguments!r ");
}
};
void close(char argc, char *argv)
{
if (argc > 1)
{
FRESULT ret = FR_INT_ERR;
ret = f_close(&SDFile);
if (ret != FR_OK) {
shell_printf("close %s failed!r ", &argv[argv[1]]);
} else {
shell_printf("close %s succ!r ", &argv[argv[1]]);
}
}
else
{
shell_printf("mount need more arguments!r ");
}
};
void write(char argc, char *argv)
{
if (argc > 1)
{
FRESULT ret = FR_INT_ERR;
uint32_t write_num = 0;
ret = f_write(&SDFile, &argv[argv[1]], strlen(&argv[argv[1]]), &write_num);
if (ret != FR_OK) {
shell_printf("write file failed!r ");
} else {
shell_printf("write file succ!r ");
}
}
else
{
shell_printf("mount need more arguments!r ");
}
};
void read(char argc, char *argv)
{
if (argc > 1)
{
FRESULT ret = FR_INT_ERR;
uint32_t read_num = 0;
uint8_t read_buff[100];
ret = f_read(&SDFile, read_buff, 50, &read_num);
if (ret != FR_OK) {
shell_printf("read file failed! %dr ", ret);
} else {
shell_printf("read file succ!r ");
shell_printf("read dat: %s, read num %dr ", read_buff, read_num);
}
}
else
{
shell_printf("mount need more arguments!r ");
}
};
将测试函数挂到命令行中:
const static_cmd_st static_cmd[] = {
{"ls", shell_ls_cmd},
{"mount", mount},
{"open", open},
{"close", close},
{"read", read},
{"write", write},
{" ", NULL, NULL},
};
下载代码,在命令行测试挂载以及读写函数:
读的数据有些乱码,用读卡器读出来看看:
可以看到成功写入,SD 卡挂载 FATFS 成功,命令行操作文件系统功能正常
————————————————
【本文转载自CSDN,作者:Top嵌入式】
深圳市雷龙发展 专注存储行业13年,专业提供小容量存储解决方案。
七言诗春月景色明月高空照九州,风吹树影景色优。春来河水已知暖,万物生机郁葱柔。柳丝起舞初绽绿,小溪潺潺清泉流。感谢上天惠大地,万里江江披锦绣。良宵美景夜空明,春意浓浓万物生。花开芳香溢四方,溪水
后宫嫔妃太多,夜夜笙歌,这位皇帝即位29天就梦断龙床古代皇帝,都是高高在上,在老百姓的心目中都是九五至尊,吃的用的,都是特供,而且想干什么就干什么没有人可以阻拦,寿命应该比普通人更长才对,据史文记载,古代皇帝平均年龄38岁。说到皇帝
早安排早行动农户不误农时有序开展春耕生产央视网消息连日来,在广西贵港港北区广袤的田野里,村民们有序开展春耕生产,到处都是人们忙碌的身影。这两天,在港北区武乐镇吉斗村,村民们在为灯笼果喷洒农药去除杂草。灯笼果又叫姑娘果,是
空头已成惊弓之鸟,主力却在捂嘴偷笑,带血的筹码你要不要?股民朋友们现在又到了一个十字路口逃命或是抄底?看到本帖,你就无须再猜涨跌,因为老久的观点就是标准答案!如果你被空头短时间内的情绪爆发所吓坏,那你就输了,唯有认真分析过后你才会知道他
农民工首次来闽就业可享岗位补贴日前,省人社厅发改委财政厅农业农村厅乡村振兴局联合下发关于进一步支持农民工就业创业工作的实施意见,支持农民工及脱贫人口就业创业。意见明确,对今年14月首次来闽就业和省内新增就业农民
空头之死马斯克如何血洗华尔街在美国,主动驾车撞别人的可能是变态杀手,可能是恐怖分子,也可能只是一名特斯拉的空头。2019年4月,兰迪普霍蒂(RandeepHothi)驾驶着一辆白色的本田讴歌行驶在美国加州88
空头之死马斯克如何血洗华尔街在美国,主动驾车撞别人的可能是变态杀手,可能是恐怖分子,也可能只是一名特斯拉的空头。2019年4月,兰迪普霍蒂(RandeepHothi)驾驶着一辆白色的本田讴歌行驶在美国加州88
公牛会是威少买断之后的下一站?他能否不久以后和多诺万故人重逢纵观浩如烟海的NBA漫长历史,还从未有一位常规赛MVP如拉塞尔维斯布鲁克这般在其职业后期开启辗转多队的流浪之旅。如果时光可以倒流,威少再次站至同出道于斯巅峰于斯的雷霆分离的十字路口
神秘类人生物与我们有多远头条创作挑战赛天狼星(Sirius)位于大犬座,是一个双星系统,一颗蓝矮星,一颗白矮星,即星A(CanisMajorisA),是一颗蓝白色的主序星,白矮星伴星(天狼星B),是人类最
晓君雅静夫妇搭档,钱程余娅张芝华等老友齐聚这档新节目聊好物谈人生演员们常常奔走在大江南北的不同剧组,他们戏里戏外最少不了的必备品是什么?即将于2月11日2150在东方影视频道开播的全新生活服务类分享秀节目剧有好物或许能解答你的疑问。节目中,上海
苗会红花样美食,花样人生欢迎关注文学博山正月十一,有幸去二锅(哥)家做客,不仅品尝到了二锅亲手制作的花样美食,更见证了二锅二嫂不俗的花(画)样人生。二锅二嫂的小居温馨有致静雅清爽,布局简单而不失情调。落地
在国有企业中,为什么同事老是提醒我不要砸了别人饭碗?我先来举个例子一家大型的服装超市,本来超市里专门请了裁缝来修改裤子衣服,超市里各就其职,导购卖衣服裁缝改衣服裤子,可这一切都在一天裁缝感冒需要请假打点滴那天打破了平静。因为那天裁缝
事业编制这种稳定的工作香在哪?等你在私企呆几年后你就知道多香,特别是30岁以后,在私企随时可能滚蛋恰西边风,那个时候有多焦虑,上有老下有小,自己房贷车贷。本人也是在私企,民营医院,具体点还算是国企的职工医院。我
为什么有些环卫工都不愿继续做下去了?他们的工作辛苦吗?之前我做过生意的时候,曾经看到表杨过保洁员的新闻,哪时候觉得当个保洁也很伟大,为社会做供现。到了去年生意不好做了。就想自己年龄也大啦,就出门找个保洁的活干干算了。说找就找,过完春节
公司派我去非洲卢旺达工作,每天补助我100美金,我该不该去?43岁单身表叔,在卢旺达花了3万块钱娶了2个20岁的小姑娘,作为资深的单身贵族,表叔本打算孤独终老,从没想到在卢旺达遇到自己的第二春天,现在表叔左搂右抱,妥妥的人生赢家,如今的表叔
离婚后,仅存二百万,不想努力工作了,够余生花吗?200万完全可以躺平了。先留出社保钱20万,这样生病可以报销老了还有养老金。剩180万买150万银行理财,留30万在余额宝。不说银行理财收益肯定更高,我们就按180万都放余额宝的利
在合肥一个家庭的收入达到多少才算正常?达到多少才算正常,需要厘清一个概念,就是如何定义正常。是达到社会平均的收入算正常,还是达到及格线算正常。这里姑且理解为达到平均线。我们来看一组数据。今年年初的合肥市政府工作报告显示
北京在职研究生可以落户北京吗?对于这个问题,我是这么认为的,说实话现在的北京户籍政策挺严格的,在职博士落户北京特别困难,但也不是没可能的。你可以攻读北京院校的双证在职博士在北京落户,因为大部分的北京院校是允许报
恒大卖了24年房子,欠了一屁股债,钱去哪了?房地产投资很大的,都是各种贷款,利润都被利息吃掉了,据说一年上千亿利息或者资金成本。还有就是有些年份房价涨的快,企业过于乐观,加大杠杆,结果后来跌了,这种损失是很大的。就像前两年猪
天津这个城市怎么样?去过两次天津,两次感觉截然不同。第一次去天津感受到了现代化的天津,海河弯弯曲曲穿城而过,河两岸高楼林立,很壮观。天津的高楼不像北京上海那么集中,散落在海河岸边和整个城区。夜晚灯光亮
壳牌美孚和嘉实多,三大机油品牌哪个更好?我们的爱车换机油时,通常都会选择三大品牌壳牌美孚嘉实多。那么这三大品牌各自都有什么特点呢?哪一个更好呢?下面来给大家分析一下。一壳牌对于壳牌机油大家都喜欢用包装桶的颜色来区分,比如
最近股票跌的我很焦虑,有朋友能提点意见缓解一下吗?最近股票跌的题主很焦虑,说明股票跌到题主的疼点上了(题主以下简称你)。这是一次改变自我的好机会。暂时缓解一下精神上的疼痛,只是权宜之计,治标不治本。我的建议是,给你几个理念,可以根