搜索
bottom↓
回复: 58

51用znFAT读到SD卡的JPEG文件,解码显示于TFT液晶(命令行式操作)

[复制链接]

出0入0汤圆

发表于 2009-12-7 19:28:42 | 显示全部楼层 |阅读模式

(原文件名:33.GIF)

点击此处下载 ourdev_511750.rar(文件大小:293K) (原文件名:znFAT sd.rar)

振吓四方博为旨,
南极北斗自来朝。
电挚山河独标新,
子聚吾来弄天狼。
原点出发终有始,
创业何达必亲为。
无尽峰端难攀登,
限在你我掌当中。

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出1070入962汤圆

发表于 2009-12-7 21:33:36 | 显示全部楼层









呵呵

出0入0汤圆

发表于 2009-12-7 21:40:21 | 显示全部楼层
你的znfat我用过,挺好,谢谢!

出0入4汤圆

发表于 2009-12-7 21:49:01 | 显示全部楼层
呵呵,大名鼎鼎的yzn又回来了?

出0入0汤圆

发表于 2009-12-7 23:05:52 | 显示全部楼层
学习

出0入0汤圆

发表于 2009-12-7 23:07:11 | 显示全部楼层
好像还是有备而来

出0入0汤圆

发表于 2009-12-7 23:12:57 | 显示全部楼层
路过,帮顶

出0入0汤圆

发表于 2009-12-7 23:37:21 | 显示全部楼层
还有脸在这发帖。
不知道这个又是花了多少多少钱引进的新技术。

出0入0汤圆

 楼主| 发表于 2009-12-7 23:43:52 | 显示全部楼层
不我原来在这里出言不逊,上面这位说话的语气,谁听了不堵气?
我所发的一切东西,均是原创,说出上面的话,请给出证据!

出0入0汤圆

 楼主| 发表于 2009-12-7 23:47:40 | 显示全部楼层
这是研发过程,如有哪一段代码盗用别人的,请指出
与znFAT相关的书在创作出,并与北航出版社联系明天可以出版出来

           znFAT--单片机上的FAT32文件系统  之研发手记

     两年前,我开始学习DIY MP3,刚开始我只是直接把MP3文件的数据放在单片机的FLASH中,读取播放。但这样受限于单片机FLASH的容量,使得根本装不下整首的MP3数据,顶多能播放7、8秒钟。这就需要一种大容量的存储器,你可能会说:“用大容量的FLASH ROM芯片就可以了”。不错,用诸如K9F、45DB系列的FLASHROM芯片容量是够大了,但此时也许你也跟我一样碰到了一个问题,MP3文件怎么放入到FLASH芯片中?你可能会说“用烧录器就可以了!”。我要问的话,你见过商场里哪款MP3播放器是需要烧录器的?基本都是通过USB直接拷的,或者是可以扩展存储卡,如SD卡、CF卡,甚至U盘。要用USB把FLASH芯片作成U盘,可以用PDIUSBD12来实现(如果您对这个感兴趣可以看看computer00的USB),对USB有一定了解的,都会知道想把U盘作出来,还是非常复杂的。所以最简单的方法就是使用存储卡,一方面可以使用读卡器,直接在操作系统中把MP3拷入其中,另一方面单片机驱动SD卡的相关资料也比较全,便于研究。

    文件系统的引出就由此而生!!问题是这样的,将MP3文件拷入到SD卡中以后,下面我们要作的就是用单片机来读取SD卡上的数据,以便于播放,拷入的MP3文件数据在SD卡的哪里啊?到哪个扇区中去读啊?我们使用U盘或SD卡等存储设备拷贝电影啊,歌曲啊,都是最平常的事情,你想过没有,这些文件的数据存在SD卡上的什么地方吗?它为什么要存在那个地方?

    为了找到SD卡上的MP3数据,我开始研究相关内容,这些就是FAT32文件系统。研究起来以后,发现已经有很多现成的在单片机上或在ARM等芯片上用的FAT文件系统方案,比如FATFS(这个是最为著名的一个,用得也最多)等等,国内也有几个,比如沁恒的文件系统库(不过他不开源,是商业的东西)、ZLG/FS(他提供的还是应用于ARM上的,在单片机应用的少)等。我也曾经向单片机(我刚开始用的是STC89C58,后来开始用STC12C5A60S2,不过这也是今年才开始用)上去移植这些现成的方案,但移植并不顺利。最后我打算不再用任何现有方案,自己研究自己写。

    于是我开始动手写了一个最原始的方案,这个最原始的方案仅仅可以实现读取根目录下的某个文件,还非常不成熟,同时我在网上发了一篇文章《FAT32文件系统的存储机制及其在单片机上的实现》(感兴趣的话可以在网上找一下,不过这篇文章里讲的非常肤浅)。我将这个文件系统方案的雏形用于MP3播放实验,实现了读SD卡MP3文件播放的功能。与此同时,我录制了《51单片机实现FAT32文件系统》视频教程(长达500分钟),希望通过通俗全面的讲解,让广大电子爱好者对文件系统有一个初频的了解(不过,现在回想起来,录制视频教程的时候对文件系统的研究仍然还不算深刻)。因为我发现很多人虽然每天在用电脑,每天在听MP3,每天在看电子书,但从不知道有文件系统这种东西存在,从来不纳闷存在扇区中的数据在我们面前怎么就成为了一个个的文件。

    我的SD卡MP3的基本功能虽然实现了,但我又在想:“难道国内就不能有一款开源的,好用的FAT32文件系统的方案吗?”。我在前期研究的基础上,又开始进行更深入的研究。也许你可以在1个月内,甚至1个星期,把文件系统的相关技术手册通读N遍,也可能在理论上搞得很明白(当然需要较高的悟性),但这离最终的实现还相差甚远,或者说只是刚刚起步。一些国外的研究文件系统的组织都是很多人一起倾注很大精力在作的,像EFSL(比利时的开源项目)、FATFS(上面已经提到,它是从大量的wince源代码中剥离出的fat文件系统源代码,微软的代码)等。它们会给我们使用,但不会讲给我们他们是怎么实现的,更重要的一点是,它们一般用于AVR、ARM等芯片上,如果想要在51单片机上使用,不能说不能用,但因为硬件资源有限,所以用起来会有麻烦。所以,我才打算在RAM仅有1K字节的STC国产51单片机上真正作一套功能完备,方便移植的,性能较高,完全从0原创的文件系统方案。

    应用说这项工作工作量很大,主要是我不想仅仅去实现基本的功能,还希望能有功能上的创新。要实现的基本功能有:1、文件系统初始化 2、打开文件 3、读取数据 4、文件重命名 5、复制文件 6、创建文件 7、添加数据 8、创建目录 9、关闭文件  10、获取剩余容量 11、获取总容量  独特具有的功能:我称之为“多设备”(所谓的多设备功能,就是可以在运行的过程中动态的切换存储设备的驱动,说明了就是文件系统可以穿梭于多种存储设备之间,你会问这有什么用?我要说,这里所实现的每一项功能都有非常实际的应用,多设备最典型的应用就是可以在多种设备间进行文件的拷贝,如将SD卡上的某一文件拷贝到CF卡、U盘或是另一张SD卡上)

    最大的工作量并不在于写代码,而在于测试代码和改代码。就像读数据的功能,读从文件里读1000个字节,没有问题,读10000字节呢?仍然不会出错吗?又如打开文件这一功能,如果目录里有5个文件,要打开其中某个文件没有问题,那能保证目录里有10000个文件的时候,打开这个文件仍然没有问题吗?能打开根目录下的文件没有问题,打开\A\B\C\D\E\F\G\H\IJ\K\K\K\K\L\A.TXT这样的深层目录下的文件,也会没问题吗?写入文件数据时,写入1个字节没问题,写入10K的数据也照样没有问题吗?............像这种类似的情况有很多。凭我一个人的力量是不够的,我找了很多网友,给他用我的代码,并将问题反馈给我,我再加以修改。还有一个很重要的途径是通过一些公司实际的工程项目,因为他们会有专门测试的环境,比如频繁读数据、长时间的运行等等。很多问题会在此期间暴露出来。在修改代码的过程中,时常还会发现一些以前没有看到的FAT32更深层的东西。到现在为止,我的文件系统方案已经较为完备,在稳定性与正确性上得到了一定的保障。

    要着重说明的是所实现的一切功能,仅仅用了大约900字节的RAM,其中包括512字节的扇区数据缓冲。

    到后期,我的文件系统开始在网上开源,为了让大家能记住它,我给它起名为znFAT(意为振南的FAT32文件系统方案)。仅仅有znFAT代码是远远不够的,大家感兴趣还是使用znFAT来作的一些实验,比如读SD卡上的TXT文本文件,作电子书;读SD卡上的MP3文件作播放器;读SD卡上的BMP文件,作数码相框;在SD卡与CF卡之间进行文件的互拷;甚至我自己用51的串口作了一个Shell命令接口,来通超级终端敲入命令来实现相应的文件操作(这就是我在网上起名为“仿DOS”的实验)。令我欣慰的是,现在已经有人开始在用znFAT来作一些实验了,说明znFAT真正被人们用起来了。虽然还没有像FATFS等方案那样流行,但它仍然是完全MIC(Made In China)的。

    代码公布出来,并不意味着代码就很成熟,反而会暴露出一些问题。其实最典型的一个问题就是:我提供的znFAT的代码是基于51单片机的KEIL工程,但很多网友并不用51,而用像AVR、STM32、DSP、NIOSII等等。反应一些功能异常。这是对可移植性的很大考验,可移植性要求在不同的硬件条件下,在代码修改量不大的情况下,可以在其上运行,并且功能良好。所以我中途又搞了一阵子STM32(它是一种Cortex核的MCU),最终发现是不同CPU的差异而造成的,说得更具体一些是因为不同CPU的大小端问题。最终成功移植到STM32上,并将代码在网上公布出来。与此同时,一个网友用LM的控制器也跑通了znFAT,并应用于项目,运行良好。

    znFAT从开始作,到现在已有1年多,这期间研究不断深化,现在的znFAT与当初的雏形已有极大的发展。原来的视频教程与文档资料现在已经觉得比较肤浅,所以在打算录制新的视频教程,以求更多的人知道文件系统,知道它的重要。我要说,存储设备的扇区读写好实现,而建立在扇区读写基础上的文件系统的实现,才是思想真正的升华,对研发能力最大的考验。

    为了更广泛的普及文件系统的相关知识,也为了满足很多对文件系统的需求和好奇(您难道没有发现国内,乃至国外,还没有一本专门讲在嵌入式中构建和使用文件系统的书吗?),在努力撰写《振南的znFAT--单片机上的FAT32文件系统》一书。不地写书过程漫长而辛苦,努力早日出来。

出0入0汤圆

发表于 2009-12-7 23:53:01 | 显示全部楼层
我有不少QQ好友都领教过你那一套,差点都要建群讨论了。要不要我帮你召集起来?
记得论坛里有位兄弟说过:“搞技术的,首先要人品好。如果人品不好,技术再好都有个限度。”

出0入0汤圆

 楼主| 发表于 2009-12-7 23:55:42 | 显示全部楼层
我现在不想再谈别的,只想谈论技术。为人不要过于刻薄

出0入0汤圆

发表于 2009-12-8 00:00:16 | 显示全部楼层
过去的事就让它过去吧~!

出0入0汤圆

发表于 2009-12-8 00:01:51 | 显示全部楼层
OURDEV是欢迎友好的开源气氛

出0入0汤圆

 楼主| 发表于 2009-12-8 00:08:10 | 显示全部楼层
请大家只看技术和代码资料,你就当我不存在就行了

出0入0汤圆

发表于 2009-12-8 00:18:26 | 显示全部楼层
LZ都这么说了,我什么也不说了

出0入0汤圆

 楼主| 发表于 2009-12-8 00:28:04 | 显示全部楼层
如果我惹到过什么人,我说对不起,从此不想再看到有人对我进行人身攻击
只希望一起谈论技术。
研究一年的东西,需要进行推广,让更多得人知道,OURAVR是一个很好的平台,
希望能在这里进行技术交流。
绝无冒犯之意。

出0入0汤圆

发表于 2009-12-8 00:31:16 | 显示全部楼层
支持LZ精神

出0入0汤圆

发表于 2009-12-8 12:23:19 | 显示全部楼层
qqqqqq

出0入0汤圆

发表于 2009-12-17 16:14:01 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-12-22 20:21:58 | 显示全部楼层
越学越觉得自己懂得太少了

出0入0汤圆

发表于 2009-12-22 20:28:53 | 显示全部楼层
呵呵,大名鼎鼎的yzn又回来了?

:)))))

出0入0汤圆

发表于 2009-12-22 20:51:55 | 显示全部楼层
我编译后显示
Program Size: data=112.1 xdata=31628 code=52458

还外接了32Kram?

谢谢!

出0入0汤圆

发表于 2009-12-22 21:22:47 | 显示全部楼层
你的fat库是lib档吗?有什么限制?

出0入0汤圆

发表于 2009-12-22 22:48:47 | 显示全部楼层
是全部开源的,JPEG解码是需要较大的RAM的,确实外扩了RAM

在EDNCHINA那边有专门的小组,感兴趣的可以去找找。

出0入0汤圆

发表于 2009-12-22 23:22:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-12 09:19:24 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-1-12 09:29:25 | 显示全部楼层
顶LZ。

出0入0汤圆

发表于 2010-5-2 17:50:18 | 显示全部楼层
不得不顶的帖子

出0入0汤圆

发表于 2010-5-6 23:31:36 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-6 23:35:33 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-7 00:29:00 | 显示全部楼层
好东西
收藏

出0入0汤圆

发表于 2010-5-7 10:14:30 | 显示全部楼层
这贴没有理由不加酷。斑竹要讲良心。

出0入4汤圆

发表于 2010-5-7 12:38:20 | 显示全部楼层
下载了早期的版本,在用超级终端进行操作时,键盘输入的字符没办法像视频了那样显示在PC上,还有好像不支持退格。但是楼主挺厉害的 。

出0入0汤圆

发表于 2010-5-8 00:16:44 | 显示全部楼层
写的不错,楼猪技术还是不错的,看人要看优点,看己要看缺点

SD_Init();如果初始化失败,是不是就直接卡在里面出不来了,应该加个UART_Send_Str("SD卡初始化失败\n");吧

出0入0汤圆

发表于 2010-5-27 21:00:21 | 显示全部楼层
最近玩JPEG解码,然后显示到TFT LCD上。
给出的JPEG图片是24位的RGB888,但是LCD只能支持16位的RGB565.
我用网上的代码,是直接去R的高5位,G的高6位,B的高5位,但是转换后显示到TFT LCD上发现有明显的波纹,看不清图像,但是整体体现出来的颜色还是对的。
请问各位有人有比较好的方法,让失真度小一点的吗?
最好也能贴出源码。。。呵呵

出0入0汤圆

发表于 2010-10-5 09:50:06 | 显示全部楼层
if(time==TRY_TIME)   time 只有 0~255,如果是速度较快的晶振,这个范围可能不够?

我认为这个值最好能固定!!

出0入0汤圆

发表于 2010-10-11 16:37:47 | 显示全部楼层
留个记号,回头学习~

出0入0汤圆

发表于 2010-10-31 13:47:11 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-31 17:12:49 | 显示全部楼层
那么牛啊!看看!!

出0入0汤圆

发表于 2010-12-22 12:58:20 | 显示全部楼层
JPEG解码

出0入0汤圆

发表于 2010-12-22 18:02:16 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-25 20:46:37 | 显示全部楼层
收下了!!!!!!!

出0入0汤圆

发表于 2011-9-18 01:15:25 | 显示全部楼层
顶。。好东西。。。

出0入0汤圆

发表于 2011-9-18 11:16:10 | 显示全部楼层
非常感谢!!!

出0入0汤圆

发表于 2011-9-18 14:32:36 | 显示全部楼层
回复【楼主位】yzn09
-----------------------------------------------------------------------

振南电子不错啊,不知道什么时候能出新视频啊!期待中。。。。

出0入0汤圆

发表于 2011-12-12 23:38:31 | 显示全部楼层
回复【35楼】hlz512  
-----------------------------------------------------------------------

谁告诉你用去除位数的方式呢。
你要正常图像显示,用伽马参数对应表做就行了。

出0入0汤圆

发表于 2011-12-17 10:24:28 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-18 04:30:08 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-18 06:12:17 | 显示全部楼层
马甲

出0入0汤圆

发表于 2011-12-19 14:00:17 | 显示全部楼层
支持yzn

出0入0汤圆

发表于 2012-1-30 04:40:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-2 20:46:09 | 显示全部楼层
好学习

出0入0汤圆

发表于 2012-2-2 21:25:05 | 显示全部楼层
回复【7楼】qlb1234  清蓝冰
还有脸在这发帖。
不知道这个又是花了多少多少钱引进的新技术。
-----------------------------------------------------------------------

楼上,毫不客气的说,你真的太小肚鸡肠,有能耐你也发点好东西再喷,没有,就别瞎喷好不?楼主不论如何,东西做出来了,而且,打油诗做的都很有含义,有能耐你也得瑟点出来?就知道瞎喷算神马?

出0入0汤圆

发表于 2012-2-15 23:08:16 | 显示全部楼层
支持振南,我看过你的教程,很好。玩MP3时参考过你的例子。努力!

出0入0汤圆

发表于 2012-2-22 00:41:06 | 显示全部楼层
回复【7楼】qlb1234  清蓝冰
-----------------------------------------------------------------------

这个人有素质么?

你也写一套原创的东西出来看看?

出0入0汤圆

发表于 2012-6-8 15:20:52 | 显示全部楼层
顶啊,大家记住,和谐社会,我们只讨论技术。。。。

出0入4汤圆

发表于 2012-6-9 18:29:50 | 显示全部楼层
好是好,就是年代久远了,下载不了

出0入0汤圆

发表于 2012-9-25 21:25:50 | 显示全部楼层
在学习LZ的znFAT,多谢~
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-10 19:44

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表