振南技术干货集:znFAT 硬刚日本的 FATFS 历险记(8)

注解目录

1、znFAT 的起源

1.1 源于论坛

(那是一个论坛文化兴盛的年代。网友 DIY SDMP3 播放器激起了我的兴趣。)

1.2 硬盘 MP3 推了我一把

(“坤哥”的硬盘 MP3 播放器,让我深陷 FAT 文件系统不能自拔。)

1.3 我的导师-- 顾国昌教授

(哈军工时期的老教授,德高望重的人生导师。)

1.4 我的母校-- 哈工程

(隐藏牛校哈工程,网络名嘴张雪峰所言非虚。振南给你讲讲母校历史:哈军工、

工程学院、哈船院、哈工程。)

1.5 那场严重超时的答辩会

(20 分钟的答辩超时 1 小时,老师表示赞叹。现场承诺要把文件系统写成书。)

1.6 时隔多年的谢师会

(承诺必须兑现,5 年之后的谢师会,我擎书谢师。不要轻易作出承诺,除非你真

得能作到!)

2、高手如云 认清对手

2.1 国外 FAT 方案简介

1 )FATFS

2 )EFSL

3 )UCFS

4 )TFFS

5 )DOSFS

(列举那些主流 FAT 文件系统方案,并进行详细介绍。)

2.2 国内 FAT 方案简介

1 )ZLG/FS

2 )沁恒 FAT

(国内尚无成型开源的 FAT 文件系统方案。但是我们要支持国货。)

3、硬刚高手 挑战自己

3.1 与高手竞速

3.2 挑战自己

(这一节我写了一个月。环比各大知名方案,看看到底谁更快!最终,挑战了自我。)

4、znFAT 精彩应用大赏

4.1 振南的精彩实验

4.1.1 SD 卡 卡 WAV 音频播放器

4.1.2 SD 卡电子滚动屏

4.1.3 SD 卡 卡 MP3 播放器

4.1.4 AT89S51 离线下载器

4.1.5 数据采集导入 EXCEL

4.1.6 串口文件窃取器

4.1.7 录音笔于 (基于 VS1003B) )

4.1.8 文件无线传输实验

4.1.9 嵌入式脚本程序解释器

4.1.10 绘图板实验(基于 STM32F4 ,屏幕截图存为 BMP 图片)

4.1.11 MEMS 声音传感器“ 硅麦” 录音实验

(znFAT 的最大亮点在于各种精彩的应用,希望振南的这些实验可以让你眼前一亮。)

4.2 精彩的第三方项目应用

4.2.1 仿 仿 Metro UI 系统应用实验

4.2.2 通过 U 盘对产品进行升级

4.2.3 嵌入式网页服务器

4.2.4 STM32+LD3320 作声控音频播放器

4.2.5 BMP 图片浏览

4.2.6 VGA 显示 SD 卡中的图片(基于 FPGA) )

4.2.7 汉字电子书(基于 STM8) )

4.2.8 文本语音合成实验(TTS ,基于 NUC120) )

4.2.9 《跳跃小猫》动画播放(基于 FPGA NIOSII)

znFAT 精彩应用大赏

4.2 精彩的第三方项目应用


1.仿 Metro UI 系统应用实验

所需主要硬件;K60DN256VLL10(飞思卡尔研制的 Cortex- M4 内核的单片机芯片)K60 实验板、TFT 液晶、RTC 芯片等,SD/SDHC 卡

作者:杨熙(网友,就职于 NXP 半导体公司)

实验功能描述:此实验以 K60 实验板为硬件平台,使用CGUI+uCOS+zFAT 在 TFT液晶上实现了仿 metroUl的界面效果。可对 SD 卡中的图像与文本文件进行浏览。实验效果如图 18.48 所示。


图 18.48 仿 Metro UI 系统实验效果图

实际硬件平台如图18.49 所示。


图 18.49 GUI 实验硬件平台

2.通过 U 盘对产品进行升级

所需主要硬件:LPC1788 即相关硬件与接口(硬件平台为网友在研的产品)

作者:邵建明、刘磊

实验功能描述:插上 U 盘之后,通过 nFAT 扫描  盘中的文件,如有升级系统配置文件则升级;如没有,再扫描是否有 *.MP3,有则播放音乐。硬件平台实际效果如图 18.50 所示。


图 18.50 某产品中通过 znFAT+U 盘完成升级与音频播放

3.嵌入式网页服务器

所需主要硬件: ATMEGA128 、ENC28J60 等。

作者:陈永鹏(网友)

实验功能描述;此实验中使用 ATMEGA128 为主 CPU,ENC28J60 为以太网控制器,移植了UIP 作为其 TCP/IP 协议栈。使用SD 卡存储 HTML 网页文件,通过超文本传输协议来进行网页文件数据的传送,最终实现服务器的功能。实验硬件如图 18.51 所示。


图 18.51 嵌入式网页服务器硬件平台

4.STM32+LD3320 作声控音频播放器

所需主要硬件:STM32F103RBT6、LD3320(一种 MP3 播放及语音识别芯片)麦克风SD卡等。

作者:钱晓平(网友)

实验功能描述:首先在 LD3320 芯片中加载要别的拼音串,比如 kai deng(开灯)、guanbi xi tong(关闭系统)等,然后启动识别。人说出汉语“开灯”,LD3320 对声音进行识别并产生相应的动作,完成之后进行语音提示,即使用 nFAT 读取存储在 SD 卡中相应的 MP3 文件数据送至 LD3320 进行解码播放。实验硬件如图 18.52 所示。


图 18.52 声控音频播放器实验硬件平台

5.BMP 图片浏览

所需主要硬件:PIC18F66K22(编译器为 MCC18)、SD 卡、TFT 液晶等。

作者:未知

实验功能描述:此实验中使用 nFAT 依次读取 SD 卡中所有的 BMP 文件(24 位 BMP)解析参数,读取其像素数据送到 TFT 液晶显示。实验平台与效果如图 18.53~18.54 所示。


图 18.53 PIC18F66K22 作 BMP 图片显示实验硬件平台


图 18.54 PIC18F66K22 作 BMP 图片显示实验效果

6.VGA 显示 SD 卡中的图片(基于 FPGA )*

这几天搞定了 SD 卡之后,又接着看文件系统。说实话想短时间内把整个 FAT32 文件系统都搞定,而且很稳定很健壮,是不太容易的。有现成的 nFAT 可以移植振南兄可是花了不少心思在这上面。我这里没有直接移植他的文件系统,而是参考 nFAT 自己写了个很简单的只能读取文件的“所谓文件系统”。因为此实验只涉及图片文件的读取,所以我只做了读取的部分,完全与 FAT32 兼容。

网上能搜到的关于数码相框的方案,大多是基于液晶屏显示的,我手里没有现成的液晶屏,VGA 倒是有两个。大家选择液晶屏而不选 VGA 的原因,我后来才知道:因为 VGA 显示需要的显存比较大,一般至少 2 MB,这么大的显存是需要银子的。DE2 上是有 2 MB的SRAM 的,而 DEO 上除了 SDRAM 和 FLASH之外什么都没有。这板子资源少。没有办法只能把图片的尺寸减小到能放在片内 RAM 里才行。DEO 用的是 EP3C16F484C6 的 FPGA(属Altera Cyclonell系列),片上只有 56 个 M9KRAM,56 这个数字很鸡,于 32 和64之间,所以我就建立了一个32 KB 的双口 RAM。由 CPU 读取 SD 卡的内容,写入 RAM,然后VGA 以50 MHz的时钟读取并显示,VGA 分辨率为 800X600@72 Hz。

先找个测试用的图片,不要太大,大约在 160X120 左右。然后用Image2Led 转化成.bin格式,宽度为 97,高度为 150(这个奇怪的图像尺寸是为了将就可怜的 32 KB 显存)如图 18.55 所示。

然后将由 Image2Lcd 生成的.bin 文件复制到 SD 卡中随后就可以开始实验了。

实验硬件平台与实际效果如图 18.56 和 18.57 所示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/198244.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

day66

今日回顾内容 web框架 django 路由控制 视图层 web框架 一、什么是web框架 Web框架(Web framework)是一种开发框架,用来支持动态网站、网络应用和网络服务的开发。这大多数的web框架提供了一套开发和部署网站的方式,也为web行…

osgFX扩展库-异性光照、贴图、卡通特效(1)

本章将简单介绍 osgFX扩展库及osgSim 扩展库。osgFX库用得比较多,osgSim库不常用,因此,这里只对这个库作简单的说明。 osgFX扩展库 osgFX是一个OpenSceneGraph 的附加库,是一个用于实现一致、完备、可重用的特殊效果的构架工具,其…

figma 基础使用——准备阶段

1. 注册账号 2. figma有客户端也有网页端,使用注意同步字体 之后点击下载window installeer 字体 3. 安装 Figma汉化包 通过figma.cool 网站,下载离线的汉化包 之后通过谷歌的扩展程序添加

Charles下载安装及配置之Mac

因工作需要用到抓包工具,但Fiddler不能在mac上使用,所以找到了Charles,Charles其实是一款代理服务器,通过过将自己设置成系统(电脑或者浏览器)的网络访问代理服务器,然后截取请求和请求结果达到…

WordPress自动采集伪原创发布工具

在当今数字化时代,随着信息爆炸式增长,网站内容的更新速度飞快。对于拥有WordPress网站的用户而言,如何轻松而又快速地批量采集伪原创内容成为一项具有挑战性的任务。本文将专心分享一些方法和技巧,帮助WordPress用户实现批量采集…

SpringBoot整合EasyExcel实现复杂Excel表格的导入导出功能

文章目录 🎉SpringBoot整合EasyExcel实现复杂Excel表格的导入&导出功能 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页:IT陈寒的博客🎈该系列文章专栏:架构设计📜其他专栏:Java学习路线 Jav…

uniapp使用vue3和ts开发小程序获取用户城市定位

这个组件的功能:可以重新定位获取到用户的具体位置,这个是通过getLocation这个api和高德地图的api获取到的,getLocation这个api需要在微信公众平台后台>开发管理> 接口管理里面申请才能使用的,不然无法使用哦,这…

Python自动化办公:PDF文件的加密与解密

在本篇文章中,我们将介绍如何使用PyPDF2库对PDF文件进行加密和解密操作。 包括如何给PDF文件添加密码,以及如何从受密码保护的PDF文件中删除密码。 注:删除密码的操作,前提是需要知道密码哦 1. 安装PyPDF2库 首先,…

STM32之模数转换器ADC

目录 1、ADC介绍 1.什么是ADC? ADC的全称是Analog-to-Digital Converter,指模拟/数字转换器 2.ADC的性能指标 3.ADC特性 12位分辨率 4.ADC通道 5.ADC转换顺序 6.ADC触发方式 7.ADC转化时间 8.ADC转化模式 9.模拟看门狗 实验:使用ADC读…

如何集成一个TypeScript开发环境?

首先要安装个node.js。Node.js (nodejs.org) 然后我们随便建一个文件夹,并且打开它运行到终端 然后再运行命令: npm install typescript -g 成功后 尝试使用 tsc -v 查看版本 接下来再使用命令: tsc --init 我们在.ts文件中尝试输出一些…

Docker智驾开发环境搭建

文章目录 背景1. 什么是容器?2. 什么是Docker?2.1 Docker架构3. 为什么要使用Docker?3.1 Docker容器虚拟化的好处3.2 Docker在开发和运维中的优势4. Docker容器与传统虚拟化的区别4.1 区别4.2 Docker的优势5. Docker的核心概念6. Docker在嵌入式开发中的应用7. docker实践参…

python炒股自动化(1),量化交易接口区别

要实现股票量化程序化自动化,就需要券商提供的API接口,重点是个人账户小散户可以申请开通,上手要简单,接口要足够全面,功能完善,首先,第一步就是要找对渠道和方法,这里我们不讨论量化…

Fuzz进阶教学——人工智能在模糊测试中的应用

【参考文献】白海波.人工智能技术在模糊测试中的应用[J].数字技术与应用,2023,41(08):16-18.DOI:10.19695/j.cnki.cn12-1369.2023.08.05. 目录 摘要 一、模糊测试简介 1、原理 2、工作流程 3、分类 4、应用领域 二、人工智能在模糊测试中的应用 1、人工智能技术 2、人…

AIGC系列之:GroundingDNIO原理解读及在Stable Diffusion中使用

目录 1.前言 2.方法概括 3.算法介绍 3.1图像-文本特征提取与增强 3.2基于文本引导的目标检测 3.3跨模态解码器 3.4文本prompt特征提取 4.应用场景 4.1结合生成模型完成目标区域生成 4.2结合stable diffusion完成图像编辑 4.3结合分割模型完成任意图像分割 1.前言 …

前馈式神经网络与反馈式神经网络的区别,联系,各自的应用范围和场景!!!

文章目录 前言一、前馈式神经网络是什么?二、前馈式神经网络包括:三、反馈式神经网络是什么?四、反馈式神经网络包括:总结 前言 前馈式神经网络和反馈式神经网络是两种主要的神经网络架构,它们在网络结构和应用场景上…

Python接口自动化测试 ---Allure报告使用详解

这一节主要是记录allure的内容以及用法,怎么让他生成一个完整的想要的报告。 allure生成的报告和其他五花八门的报告对比了一下,它的可读性是最好、最直观的。这不仅仅是我想要的效果,也是很多小伙伴想要的结果,毕竟这是给领导看…

使用Prometheus监控Synology(群辉)

1、简介 在现代的IT环境中,对于服务器和网络设备的监控是至关重要的。Synology(群辉)作为一种流行的网络存储解决方案,为用户提供了高性能和可靠的存储服务。然而,了解Synology设备的运行状况和性能指标对于确保其正常…

有权图的最短路径算法

目录 单源最短路径问题 Dijkstra算法 原理 ​ 获得最短路径长度的Dijkstra代码实现 时间复杂度 算法优化 优先队列优化后的代码实现 时间复杂度 可以具体获得最短路径的Dijkstra代码实现 Bellman-Ford算法 原理 代码实现 Floyed算法 原理 代码实现 单源最短路…

TLS、对称/非对称加密、CA认证

1. SSL与TLS SSL/TLS是一种密码通信框架,他是世界上使用最广泛的密码通信方法。SSL/TLS综合运用了密码学中的对称密码,消息认证码,公钥密码,数字签名,伪随机数生成器等,可以说是密码学中的集大成者。 TLS…

flask web开发学习之初识flask(一)

一、概念 flask是一个使用python编写的轻量级web框架,作者为Armin Ronacher(中文名:阿尔敏罗纳彻),它广泛被应用于web开发和API。flask提供了简洁而灵活地方式来构建web应用,它不会强加太多约束&#xff0…