打印

振南的znFAT(振南长期原创研究,51实现SD卡FAT32文件系统)

[复制链接]
16942|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
znmcu|  楼主 | 2009-10-21 00:59 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 znmcu 于 2009-10-21 02:19 编辑

在EDNCHINA那边已经开了小组 http://group.**/2158 ,已经开放了很多源码与实验
znFAT的主要研究内容是 在51单片机上实现SD卡等存储设备上的FAT32文件系统。

此项研究振南从1年前开始,直至今日。希望对 对存储设备与单片机上的FAT32文件系统感兴趣的同志有所帮助



起初研究FAT32的原因在于项目需求,后来发现FAT32这个东西可研究的东西还是很多的,掌握了它的核心思想与技术,可以使单片机上的实验或单片机能干的事情,上一个层次。

代码(在1年的时间,znFAT更新了无数次代码版本号,现在最新到5.03)
这里提供znFAT5.03全部原代码及keil工程,程序已经加入详细注释,欢迎关注振南的znFAT--单片机上的FAT32文件系统
下载链接:http://www.znmcu.cn/znfatsd.rar

Keil代码工程截图:


znFAT5.03中实现了众多的文件操作功能,如下:


上面的代码实现的功能是使用超级终端通过串口向单片机发送命令,就像DOS一样,比如dir \*.mp3,这样单片机就会从串口返回SD卡的根目录下的所有的MP3文件。具体操作情况下面 图:

相关帖子

沙发
znmcu|  楼主 | 2009-10-21 01:24 | 只看该作者
znFAT是单片机进行在存储设备上实现文件操作的基石,使用它,我们可以直接读取SD卡等存储设备上的文件,或在其上创建文件,写入数据等等。
围绕znFAT和众多存储设备,振南在应用层(也就是在文件系统和存储设备的基础上加入其它功能模块,作了一些综合性的实验)也作了很多实验,大家可以关心一下:
(当然所以实验均基于硬件平台,这就是振南一直在作的代号为“天狼星”的开发板)

读SD卡上的TXT文件,显示在TFT液晶上(HZK16汉字库文件存在SD卡上)
演示视频:
http://v.youku.com/v_show/id_XMTEzNDk2MjIw.html

读U盘上的MP3文件,将数据送到VS1003解码器播放(读U盘使用的是CH375,实现CH375读写U盘扇区后,将此驱动接口与znFAT进行融合,从而实现对U盘文件的操作,VS1003部分,在天狼星板上的专门的功能模块)
http://v.youku.com/v_show/id_XMTE5MzA1Mzky.html

读SD卡上的MP3文件进行播放
http://v.youku.com/v_show/id_XMTEzMjU2NTY0.html

读SD卡上的BMP文件显示在TFT液晶上
http://v.youku.com/v_show/id_XMTE4NzAwMTYw.html

这就是天狼星板上的各个功能模块,再加上振南的znFAT,所作的一些实验。
功能模块,如VS1003 MP3解码模块、TFT模块等等,在硬件是一个个独立的模块,在程序上也是.c.h形式的程序模块,当然znFAT也是这种形式(znFAT.h znFAT.c),使得可以在很短时间内构建出一个功能较为复杂的实验工程,同时工程结构也是非常清晰的。

稍候会将上面这些实验的源代码和工程发布上来,供大家研究参考!

使用特权

评论回复
板凳
znmcu|  楼主 | 2009-10-21 10:42 | 只看该作者
上传源代码(SD卡MP3播放器实验)

实验描述:
   此程序用于在振南的天狼星精华板 上实现枚举播放。通过嵌入的
   znFAT(振南原创的FAT32文件系统解决方案)实现对MP3文件的枚举
   及读取,读取的数据直接送到VS1003 音频解码器,从而实现对根
   目录下的所有MP3文件的依次播放。(在实验前请先确保SD卡为FAT32
   文件系统,并向SD卡的根目录中拷入了至少一个MP3文件)

运行效果:
   此程序进行于STC的12系列单片机,晶振为22M对低于128kbps的MP3
   文件支持的很好,播放非常流畅,对于较高采样率的MP3文件,如192kbps、  
  320kbps,则较为吃力,51单片机的速度毕竟有限。实测在运行于40M的情况
   播放160kbps的MP3是很流畅的。基本就是这种性能水平。

实验分析:
   此程序中均采用IO模拟SPI的方法,因此SPI的速度达不到太高。对于SD卡的驱动
   是使用SPI模式,速度是比较慢的,而且中间再加入一层文件系统(znFAT),它介于
   底层扇区读写与上层的文件操作之间,这部分会占用单片机的运行时间。最后对VS1003的驱动也是串行的,SPI,同样也是IO模拟的,所以整体性能就是现在的水平。

实验意义:
   此实验中SD卡扇区驱动与VS1003的驱动代码量均较少,主要的核心仍是znFAT,它将前级的SD卡与后面的VS1003 MP3解码连接在了一起。能够对znFAT打开文件、读取数据等功能进行较为严格的测试(包括性能上、正确性上)

代码工程预览截图:


源代码下载:
http://www.znmcu.cn/code/sdmp3/sdmp3.rar

使用特权

评论回复
地板
winloop| | 2009-10-21 10:53 | 只看该作者
基于51的平台,有点儿过时了。。。
现在ARM的售价几乎都比51低了。

使用特权

评论回复
5
不爱说话| | 2009-10-21 11:11 | 只看该作者
太好了,我做的板子用的就是STC12。
可以移植ZN的代码试验试验

使用特权

评论回复
6
znmcu|  楼主 | 2009-10-21 11:19 | 只看该作者
STC 51的现在推广的力度还是很大的,在它上面作,主要是因为用起来方便,同时使用的人群也大
我用的STC12系列单片机 STC12C5A60S2 价格是7块钱,还算便宜了吧。
当然放在ARM上会发挥代码更大的性能优势。
作为研究,其实很多还是把实验目标放在51上的,最通用,也最方便
大家觉得呢

使用特权

评论回复
7
xwj| | 2009-10-21 14:33 | 只看该作者
大致看了下,不错!

可惜没有做长文件名

使用特权

评论回复
8
xwj| | 2009-10-21 14:34 | 只看该作者
至于平台,其实移植到别的IC上思相当简单的事,
不能因此贬低它哦~

使用特权

评论回复
9
znmcu|  楼主 | 2009-10-21 14:44 | 只看该作者
嗯,本身我是不太精通DSP、STM32、AVR这些,不过我把代码送给了一些网友,他们已经移植到这些芯片上去了,是没有问题的

使用特权

评论回复
10
coreduo| | 2009-10-21 16:44 | 只看该作者
长文件名,中文文件名是关键.
小内存芯片很难搞定unicode

使用特权

评论回复
11
znmcu|  楼主 | 2009-10-21 16:55 | 只看该作者
关于长名实现上是没有问题的,基本就是把一个文件目录项前面的所有长名项都拼起来,最后导出一个UNICODE码序列。UNICODE带来的困扰主要在于显示等方面

使用特权

评论回复
12
不爱说话| | 2009-10-21 20:49 | 只看该作者
我和LZ的想法不谋而合了。
我也是对51比较熟,想学习一些知识(包括以太网,USB,SD/MMC,MP3等)于是就做了一块多功能的STC51。基本功能都调通了,现在播放MP3还有些问题,正好可以移植LZ的程序实验。

使用特权

评论回复
13
znmcu|  楼主 | 2009-10-21 22:28 | 只看该作者
本帖最后由 znmcu 于 2009-10-21 22:37 编辑

现在znFAT,单片机实现SD上的FAT32文件系统 的研究已经告一段落,现在在准备出一本这方面的书
讲讲SD卡、FAT32文件系统以及应用方面的内容,也已经联系了出版社。
最大的一个问题就是,这方面的书现在市面上还是非常少的,从而对这方面技术的需求与以后书的受欢迎程度、发行销量造成疑问。
想问一下,关于SD卡等存储设备,以及FAT32文件系统,关心这方面的人有多少?有多少想了解这些东西,真正需要用到这些东西!
写稿子的过程我希望还是抱着一种“莫问前程,但行善事”的心理。不管它以后受欢迎程序有多少,都一定要把自己研究的东西写出来。

使用特权

评论回复
14
lxyppc| | 2009-10-21 22:36 | 只看该作者
“末问前程,但作善事”

使用特权

评论回复
15
不爱说话| | 2009-10-22 08:28 | 只看该作者
楼主的想法我能理解,毕竟刚开始学MCU,ARM的人主要关注的还是IO,AD,PWM,UART,SPI,中断等基础的应用。根据这样的需求市面上这类书也很多。
一般是MCU玩到一定程度后才会考虑文件系统,网络,USB,SD/MMC卡等应用,但是到这个程度的人数量就不多了,这方面的书就更少了。
希望LZ出这本书。

使用特权

评论回复
16
思考| | 2009-10-22 08:32 | 只看该作者
主题很好.

使用特权

评论回复
17
znmcu|  楼主 | 2009-10-22 10:25 | 只看该作者
实验:
SD卡BMP显示在TFT

实验描述:
此程序将读取SD卡的根目录下的test1.bmp、test2.bmp、
test3.bmp3文件(132X132的24位BMP,预先作好图像方
向处理)显示在TFT液晶上。

实验分析:
SD卡上的文件读取通过znFAT来实现,将24位的
BMP文件的像素数据转换为RGB565的16位数值写
入TFT液晶中。由于采用IO模拟SPI同时文件读取缓
冲区较小,因此显示速度较慢。

代码工程截图:


代码下载:
http://www.znmcu.cn/code/sdtft/sdbmptft.rar

使用特权

评论回复
18
znmcu|  楼主 | 2009-10-22 17:41 | 只看该作者
上传《振南的znFAT--单片机上的FAT32文件系统》初稿前言
http://www.znmcu.cn/znsznfat/qy.pdf

使用特权

评论回复
19
feng423| | 2009-12-10 09:15 | 只看该作者
下载不下来

使用特权

评论回复
20
huangqi412| | 2009-12-10 09:20 | 只看该作者
bucuo

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4474

主题

5195

帖子

33

粉丝