搜索
bottom↓
楼主: bozai

mega8 mp3 player --- (原标题:VS1003上实现wma格式音乐的播放)

[复制链接]

出0入0汤圆

 楼主| 发表于 2007-4-4 17:06:48 | 显示全部楼层
用最新版本的程序试试

点击此处下载armok01149167.zip

注:路径改为根目录下的music文件夹。可以修改程序中的宏定义来修改

出0入0汤圆

发表于 2007-4-5 17:22:26 | 显示全部楼层
to bozai:

   我一直没有弄明白你的变量keylen//用于键处理的作用是什么啊??

出0入0汤圆

 楼主| 发表于 2007-4-5 17:37:32 | 显示全部楼层
是用于去抖的,由于送给VS1003的数据没有采用中断机制,而是采用查询。



我们设计键盘一般是判断-延时-再判断-等待断开。



问题出在等待断开这一处,如果按键是调节音量,那么这里必然会打断送给VS1003的数据。

所以这里用了个keylen 规定每个按键的有效时间,这样不需要等待,在同一个按键按下后的一段时间在按这个按键就会无效,当然这个时间比较短,大概0.5s,不会感觉有迟钝。但是这个时间却大于普通的按键时间。这样就不会出现误判,比如说按下调音量键这样音量不会增加过快(若无延时怎音量一般为最大和最小)而无法调节,按模式键不会影响正常播放而又真确区别。

当然这样也可以一直按着,比如说音量就会一一定间隔向上或向下移动。



当然也可采用其它方法来做,比如说用定时器来扫描按键等。

出0入0汤圆

发表于 2007-4-6 10:59:32 | 显示全部楼层
m明白了 谢谢bozai.

对了,不知道你遇到过这个的问题没有:

1.初始化VS1003的时候会出现一声爆破音;



2.今天发现 快进到下一首的时候,如果用软复位没有爆破音 但是如果用送2048个0的话,就会有爆破音,而如果不用快进,一首歌完了再播放下一首只要歌曲是完整的就没有爆破音,歌曲不完整也会出现爆破音.

出0入0汤圆

 楼主| 发表于 2007-4-6 11:31:21 | 显示全部楼层
1、这相当于上电后工作产生的声音,这种声音所有设备(随声听,其它产品开机时耳塞由于突然上电产生的声音)都有这个问题,不明显。不知你说的是不是这种声音。

对于这个问题VLSI有个应用手册教你如何最小化这种声音的,可以到他的网站上找找。

www.vlsi.fi



2、当然了,软复位只会出现声音突然中断。而如果送2048个0,那么有可能你之前送的并不是完整的一帧数据,比如说半帧,然后你把其余的补零了,那么这帧数据就是错的,你也不晓得到底组合成什么内容了,所以有可能就出现这种情况。歌曲不完整的话也是一样的。



平时听着也没注意到这种情况。

出0入0汤圆

发表于 2007-4-6 20:08:57 | 显示全部楼层
谢谢bozai。现在暂时没有读卡器。无法测试

原先的程序看上去是有对fat32的处理的呀,你有没有试到用fat32是不行的?

回头再看看你的新程序。感谢共享:)

出0入0汤圆

 楼主| 发表于 2007-4-7 09:54:27 | 显示全部楼层
支持FAT32的,我现在用的1G的卡和以前用的512的卡都是FAT32格式的



现在的程序存在的问题是:

比如说原来的卡没有MBR只有BPB,现在通过分区产生了MBR,那么这时就会有个问题,后加的MBR只对分区表那几十个字节作了修改(有的分区工具不会的),而前面还残留原来BPB的一部分数据。

我的程序是这样处理的:

先检查0扇区是否是BPB,如果是则以此初始化。如果不是则就把它当作MBR,然后根据分区表去找第一个分区的BPB。



这样的话如果出现前面的情况的话,前面有BPB数据,但其实不是的。这样就出问题了。会误把MBR当作BPB.所以目前的程序对FAT的支持就存在这一个问题。



不过大部分卡都不是这样的,除非你特地去做。如果出现这个问题可以把前面假的数据前几个字节给破坏掉就可以了。程序就是通过前几个字节来判断是否是BPB的

出0入0汤圆

发表于 2007-4-9 09:17:31 | 显示全部楼层
关于MBR和DBR我有点不明白,为什么有的卡会有MBR有的没有呢?



记得前面我的卡都是有MBR的,但是最近就没有了.



是不是读写了0扇区,然后再格式化就会没有MBR出现呢??



不懂~

出0入0汤圆

 楼主| 发表于 2007-4-9 10:17:30 | 显示全部楼层
卡又没有MBR目前完全取决于卡在出厂时的状态,卡刚买回来是预先格式化的。

有的厂商有MBR有的则没有。

如果卡的0扇区被破坏了,分区表丢失了,然后再用windows格式化,那么默认情况下就没有MBR了。而如果0扇区没被破坏,然后格式化,MBR就会被保留。

当然如果你用工具软件,支持多个分区的软件就会加上MBR。因为windows对可以动磁盘时不支持多个分区的,(按照mass storage的协议,移动硬盘不属于可以动磁盘)。而对不可移动的支持分区的。既然支持分区它就会自然的加上MBR的。

所以你在windowxp的磁盘管理器里可以对移动硬盘进行分区,而像U盘之类的就不可以了。

出0入0汤圆

发表于 2007-4-24 11:16:34 | 显示全部楼层
晕倒了。。。仿造不成功 。。VS1003B和SD 的初始化都不功。。。不知道什么原因。。借口我检查了N 次了。没错。。。难道是单片机SPI 口不行了 ?

出0入0汤圆

发表于 2007-4-25 16:10:34 | 显示全部楼层
VS1003好象很容易坏一样,阿永的三板,输出短路被烧了

出0入0汤圆

发表于 2007-4-28 11:18:01 | 显示全部楼层
请问下各位做成功的  

我把程序烧到M8后,LED2 亮了。。但我把电断了。重新开启后LED2又不亮了。。。但我把卡拔了,LED2是肯定亮的。这是怎么回事??另外我的LED3始终不亮 。。DREQ没信号 是为什么啊 ,我的VS1003B初始化成功了,LED1 没亮。

出0入0汤圆

发表于 2007-4-28 13:26:13 | 显示全部楼层
顶一下

出0入0汤圆

 楼主| 发表于 2007-4-28 16:40:40 | 显示全部楼层
VS1003危险了,我有一块是DREQ一直长亮,不管送什么数据。

我没试过在线烧写程序后的状态是什么杨的,从113楼helloyxf的现象来看,SD卡应该是正常工作了。但是VS1003没有工作,可能因为它坏了,因为不管SD卡如何,只要VS1003初始化完成后它的DREQ就应该是高电平。

有个网友的情况与你相反,dreq一直为高,导致一直送数据但没声音,一首歌的数据30s就送完了。

出0入0汤圆

发表于 2007-5-6 12:18:08 | 显示全部楼层
to bozai:

      有没有M32+VS1003的原理图啊?不胜感谢

出0入0汤圆

发表于 2007-5-6 21:14:08 | 显示全部楼层
cool ...

出0入0汤圆

 楼主| 发表于 2007-5-7 09:03:00 | 显示全部楼层
TO 116楼:

        没有M32+VS1003的原理图,只要把现在的原理图中的芯片换一下就行了,总共也没用几个IO口, 但是SPI的部分要对应好,不能随便换。

出0入0汤圆

发表于 2007-5-7 17:36:19 | 显示全部楼层
谢谢,

出0入0汤圆

发表于 2007-5-18 21:28:20 | 显示全部楼层
TO:bozai 章其波

       用JTAG下载M16的HEX不行啊---------------------------

Stk500Dll

---------------------------

The contents of the HEX file does not fit in the selected device

---------------------------

确定   

---------------------------

.

出0入10汤圆

发表于 2007-5-18 22:12:39 | 显示全部楼层
经典,收藏了,谢谢楼主

出0入0汤圆

 楼主| 发表于 2007-5-18 22:41:06 | 显示全部楼层
谢谢!

回120楼:

你要看一下那个程序到底是哪个芯片的,后来发的所有程序都是针对mega8的,不能用于m16,这个程序中有的。

出0入0汤圆

发表于 2007-5-19 17:01:25 | 显示全部楼层
谢谢楼主的热心.21楼的程序是不是M16的.还有容丝怎么设置.那程序能不能用在M32上.谢谢.

出0入0汤圆

 楼主| 发表于 2007-5-19 17:09:25 | 显示全部楼层
21楼的是m32的程序,另一个是m8的。

注意这个程序版本已经很旧了,也没有更新,所以会有bug

镕丝选内部RC,如果有晶振则也可选外部晶振。



注意,这个程序比较旧存在bug

出0入0汤圆

发表于 2007-5-19 17:25:41 | 显示全部楼层
我下载了21楼的程序.设为外部8M.用7.3728M的外部晶体.却CH375的指示灯都不亮.

出0入0汤圆

 楼主| 发表于 2007-5-19 17:30:46 | 显示全部楼层
啊!?

哪来CH375的啊,整个这个帖子里也没有CH375啊。

出0入0汤圆

发表于 2007-5-19 23:32:06 | 显示全部楼层
to bozai:



我把扔在旁边快1年的VS1003全手工焊接的开发板又拣起来玩。VS1003 SPI速度上不去啊!郁闷。。。上到了4MHZ比较稳定,到不了8M。及其不稳定。内部CLKI我已经把倍频数设置为4.5。按照理论计算:应该是: clki / 6 Mhz。可以到了9M了。所以我的WAV速度一只停留在1024Kbps。稍微高点声音变慢而且卡,可能根内部DSP解码有关系(倍频后速度还是不够解码高比特率文件)。



你有没有测试过SPI速度?

出0入0汤圆

 楼主| 发表于 2007-5-20 09:26:35 | 显示全部楼层
用过超过8M的速度,最高有10M,但是那时也不稳定

不稳定是指不能解高码率的WAV文件,我想此时的不稳定并不是VS1003不稳定,而是单片机送的数据不稳定,不知道你是不是从SD卡中读取文件,可以想想,如果从SD卡中提取WAV文件,频繁的从SD 与VS1003之间切换,spi的速度会大打折扣。

所以我想问题是出在数据传送上。



如果单片机那边有大的缓冲区用于存WAV数据,连续的给VS1003送数据就不会出现卡的现象。

我以前测试的时候也是卡在大概768KBPS的码率。

出0入0汤圆

发表于 2007-5-20 16:39:22 | 显示全部楼层
也有可能是硬件不稳定。因为是手工焊接,SPI速度太高可能有问题。我取数据从CF卡中取的。CPU是MEGA162,使用了AVR的硬件总线,时钟16MHZ,读CF卡是相当快的,我测试速度大概是2MB/S(我的CF卡比较慢),这里速度瓶颈在SPI总线上了。



以前玩STA013,这个东西的SPI可以相当快,据说可以到25Mbps。我最多也就到10M。



今天我又反复测试了下,好像不大象取数据不快。CF卡BUSY led在闪烁,也就是CPU还有空余时间干别的。SPI总线速度我调到8M(8M还是可以用的,就不稳定)还是不可以,并且播放不是数据跟不上的那种爆音,很奇怪的声音。因此我怀疑VS_DSP速度上不去导致的。



该做快PCB了,以前调试D12就吃亏了,光掉线,搞了半天检查是硬件不稳定。

出0入0汤圆

 楼主| 发表于 2007-5-20 16:47:55 | 显示全部楼层
有可能是线路问题,之前碰到个用VS1011的人,他是在面包板上搭的,老是出现初始化不成功的问题,成功率在60%。 后来经我提醒,他把晶振接线缩短就好了。

出0入0汤圆

发表于 2007-5-20 17:02:50 | 显示全部楼层
看看我的:















出0入0汤圆

发表于 2007-5-20 17:04:32 | 显示全部楼层
为了避免成了水帖,有空把代码弄上来看看。^_^,我现在不在家,呵呵!



测试结果:

MP3: 320Kbps OK!

WMA: 常用格式都支持!

WAV: 支持到1024kbps!

MIDI:只支持格式0(SMF0)


-----此内容被elefan于2007-05-20,17:06:51编辑过

出0入0汤圆

 楼主| 发表于 2007-5-20 17:15:16 | 显示全部楼层
板子不错,DIY强人啊!

VS1003这样用转接板晶振的线会比较长,不过按照你的测试结果应该没问题的。



那个CF-〉IDE转接板,我曾经在赛格看到过,但是太贵了,没买。

什么时候去买一个,我想在把我之前做过的一个USB SD卡读卡器上的D12用上,用CF做存储,再接个液晶,做个正真的mp3,那就比较爽了。

出0入0汤圆

发表于 2007-5-20 17:22:57 | 显示全部楼层
bozai过讲了,我看了妳的板,你真有耐心焊,我很佩服。



VS可以加上频谱功能,感觉VS1003比STA013好玩多了。我以前做的硬盘MP3,基本上常见MP3功能都有的,还可以支持LRC歌词同步。

出0入0汤圆

发表于 2007-5-20 17:26:40 | 显示全部楼层
我买的那CF->IDE转换板,老板看我急需,要了我38,我一咬牙,算了,不计较了,拿下走人了。不过后面觉得确实很方面,可以同时插一个MASTER卡和一个SLAVE卡。CF比SD快,所以播放高比特率文件没有问题,我当时就这样想的,所以没有使用SD卡存储。



另外VS1003支持录音,bozai可以加进去。

出0入0汤圆

 楼主| 发表于 2007-5-20 17:31:03 | 显示全部楼层
呵呵,谢谢!

是的,VS1003还有各种DSP音效,曾经在VLSI的网站上看到的。

最近在赶毕业论文,等过一阵子再去做。

到时候还请多多指教,特别是LRC方面的,还没做过,没什么经验。

出0入0汤圆

发表于 2007-5-20 17:35:26 | 显示全部楼层
可否问下:bozai在哪个学校上学?呵呵!



我的联系方式:



datazyb_007 AT 163.com

msn: datazyb AT hotmail.com



有问题一起探讨下,呵呵!

出0入0汤圆

 楼主| 发表于 2007-5-20 17:39:15 | 显示全部楼层
我在苏州大学上本科,不过还有1个多月就跟学生生涯说byebye了,呵呵。



我待会加一下你。

有空常联系。

出0入0汤圆

发表于 2007-5-20 17:53:56 | 显示全部楼层
好,常联系。

出0入0汤圆

发表于 2007-7-17 21:17:22 | 显示全部楼层
楼上的又说上传代码的,怎么这么久了,还不见代码的!!!!

出0入0汤圆

发表于 2007-7-26 14:02:14 | 显示全部楼层
上面bozai提到的SD卡有些没有MBR,这点我在工作中也遇到了,有点想不明白,如果没有MBR的话,那我如何去判断FAT的类型?是FAT16呢?还是32,据我所知,该标致应该是在MBR里头的,再有,如何去得知SD卡的容量呢?也是在MBR里头的呀?现在它都没有了,我该如何得知呢?奇怪,电脑是如何去做到这点的?

出0入0汤圆

 楼主| 发表于 2007-7-26 18:51:43 | 显示全部楼层
好久没上这个网站了,工作了,工作跟单片机没什么关系。、

所以AVR和其它的一些东西就先放下了 。

可以说暂时离开这个行业了。



【140楼】 zqljg  

   elefan 已在另开一个帖介绍他的作品,请以他的id搜索。不过敬请您回帖时保持风度

代码是别人写的,不是你写的。代码放出来,你是受益者,而他没得到任何好处。





【141楼】 siway

   不是你想的那样,MBR存放的是通用的启动代码和分区表,如果存储介质不需要参与启动,没有分区可以不要这个区的,所以有的卡是没有MBR的

   DBR才是你提到的,里面有dos的启动代码,和FAT的一些参数。

   卡的容量怎么读取,这个在我另一个帖子里有的,那个容量是卡的实际容量,而不是

FAT纪录的容量。

出0入0汤圆

发表于 2007-7-27 20:16:45 | 显示全部楼层
虽然工作比较忙,我还是在关注ouravr。



to zqljg :我另开了帖子,你去找找。你这样命令别人似乎不合适。



to siway :MBR记录了磁盘启动信息,包括分区位置,扇区数,柱面等参数,引导操作系统寻找到你要访问地分区。默认SD,CF只有一个分区,无需MBR表。当然你使用某些软件强制分区,MBR就由他们产生。



to bozai: 谢谢你,祝你身体健康,工作顺利!

出0入0汤圆

发表于 2007-7-27 21:23:46 | 显示全部楼层
最好能有用VS1003做成能显示歌词秀的代码,elefan已经做出来的啊,能否提供一下,谢!

出0入0汤圆

发表于 2007-7-30 10:04:05 | 显示全部楼层
非常感谢bozai和elefan的帮助,我现在又发现了一个问题,如果只根据DBR里的20H开头的4个字节去判断容量,对大部分卡是可以,但对一小部分卡还是不行,我试过几张32M的卡,它都是00 00 00 00,幸亏它有MBR,我在MBR里面可以读到它的容量,我现在的做法是这样的,先判断有没有MBR,有的话,容量就在MBR里取,如果没有,则容量就在DBR里头取。不知道大家有没有遇到过我现在的这种情况呢?

出0入0汤圆

发表于 2007-7-30 15:55:51 | 显示全部楼层
本贴我看了N多次了,确实很全,各位大虾能不能共享你们的SD卡规格书!我一直找不到中文的规格书,所以也SD卡的驱动也就没办法做!





谢谢大虾们!

出0入0汤圆

 楼主| 发表于 2007-7-30 18:59:28 | 显示全部楼层
【145楼】 siway:

    请仔细研读一下微软的FAT32硬件白皮书,还有一种情况是总扇区数小于0xffff,这时这个值存在另一个地方。

    但是你通过这种方法得到的容量仅是FAT文件系统提供给你,或分区表提供给你的。

如果根本就没有这些东西,卡是空空如也的毛卡怎么办。最根本的办法是读卡的物理容量。

他的值可以通过SD卡的CSD寄存器的值计算得到。



【146楼】 yzlyear 天地一号

    中文的我这没有,应该是不会有的,太长了。不过最基本的操作部分内容不多的。从代码也可以看出。

出0入0汤圆

发表于 2007-8-30 09:44:35 | 显示全部楼层
TO: bozai 章其波

    波仔你好!

    目前我参照你的程序和电路做了一个MP3,但有以下问题: SD卡初始化成功,VS1003初始化成功,FAT初始化成功,但在播放的时候,CPU一直在送数据给VS1003但就是没有声音,不知哪里有问题!

出0入0汤圆

发表于 2007-8-30 10:14:46 | 显示全部楼层
做的很好,我也想做一个MP3,可是我申请的VS1003的样片怎么还没有到啊,他们已经给我打过电话了,说是寄,都已经三天了.

出0入0汤圆

发表于 2007-8-30 16:45:44 | 显示全部楼层
SD卡,VS1003,FAT初始化都OK,并且有读出歌曲,但DREQ一直为高电平,反复跳到NEXT:的地方,但都是同一首歌,大虾们帮忙啊!

出0入0汤圆

发表于 2007-8-30 21:44:23 | 显示全部楼层
感谢波仔!

我的MP3终于成功了,原来是SD卡的问题,以前我用的是MMC卡,换了一张SD卡,MP3出声了,调了10多天的程序,原来是这个问题,真是郁闷!

在测试中我发现有几个问题

1. 播放MIDI跳到下一首的时候,要等好长的一段时间。

2. 模式转换时,LED1和LED2来回的闪,可能是键处理问题。

3. MMC卡播放时有问题。



   接下来再慢慢调试,谢谢波仔及OUVAVR提供这么好的一个平台!

   严重的感谢!

出0入0汤圆

发表于 2007-9-5 08:17:28 | 显示全部楼层
你好 我的mp3也成功了 , 但是 声音小 , 我已经把左右声道设置到了 0-255 范围中的 0 , 是最大了 ! 可是声音还是小 , 用耳机听声音小啊 , 用功放音箱听没问题 !  



这是为什么啊 ?

出0入0汤圆

 楼主| 发表于 2007-9-5 20:17:07 | 显示全部楼层
【151楼】 yzlyear 天地一号
不好意思,现在才看到。MMC是个问题,我没有MMC卡所以就没有完全测试,所以我只是表明是使用SD卡的mp3。
其它两个问题应该不会有的,你下一下最新的版本看看,这里的论坛改了。你可以到这里下载:
http://www.avrfreaks.net/index.php?module=Freaks%20Academy&func=viewItem&item_id=795&item_type=project

我用别的电脑上的网,不好传上来

【152楼】 awsoft
也许是芯片的问题,我也碰到一颗,最大了,也不是很大,而且背景噪音还挺大

出0入0汤圆

发表于 2007-9-5 20:59:00 | 显示全部楼层
谢谢BOZAI,正在看呢!

出0入0汤圆

发表于 2007-9-14 14:36:56 | 显示全部楼层
该帖很长,我花了半个小时才看完,很有收获!

出0入0汤圆

发表于 2007-10-16 15:56:40 | 显示全部楼层
如此好贴,顶起!!谢谢楼主的无私。

出0入0汤圆

 楼主| 发表于 2007-11-9 13:41:39 | 显示全部楼层
2007-11-09:最新更新

/*******************************************************************/
/*          Mega8 MP3 Player (mega8 + VS1003 + SD)  V2.0           */
/*                                                                 */
/* Discription: Can play mp3/wma/wav/mid SF0 files in the root     */
/*              directery on the SD card which file system is FAT16*/
/*              or FAT32.                                          */
/*              It has six keys to control this player             */
/*              MODE: switch between repeat all (default),repeat 1 */
/*                    and shuffle                                  */
/*              PLAY/PAUSE:                                        */
/*              PREV: previous songs                               */
/*              NEXT: next songs                                   */
/*              UP  : volume up                                    */
/*              DOWN: volume down                                  */
/* Platform   : AVRStudio4.13 SP1 + WinAVR20070525                 */
/*              optimize -0s                                       */
/* Author     : bozai(Zhang Qibo)                                  */
/* E-mail     : sudazqb@163.com                                    */
/* MSN        : zhangqibo_1985@hotmail.com                         */
/* Date       : 2007-10-18                                         */
/*******************************************************************/
/*  V2.0                                                           */
/*  2007-11-09                                                     */
/*        now the songs may placed in any directory, but the             */
/*  total number of folder the card has should less than           */
/*  127 for we use 512Bytes EEPROM to stored the info              */

/*  You may set the macro FIX_DIRECTORY in FAT.h to choose whether */
/*  to enable this function                                        */
/*                                                                 */
/*  V1.9                                                           */
/*  2007-10-08                                                     */
/*  fix a bug (but it never works), so stupid I am,take & as &&    */
/*                                                                 */
/*  V1.8                                                           */
/*  2007-06-16                                                     */
/*  Still the bug of FAT, it's not resolved totally                */
/*                                                                 */
/*  V1.7                                                           */
/*  2007-05-21                                                     */
/*  Fix a serious bug of FAT                                       */
/*  Set the default mode to "Shuffle"                              */
/*  Because the mode button is inside the box                      */
/*  So I don't want to open the box when I turn on it              */
/*  If the button is easy to press of your mp3 player              */
/*  just change the macro below to:                                */
/*            0 = repet all    1 = repet one  2 = shuffle          */

#define DEFAULT_MODE   0

/*                                                                 */
/*  V1.6                                                           */
/*  2007-05-09                                                     */
/*  And a track function to make the shuffle a real shuffle        */
/*  Due to the limted RAM space of mega8. Maximum no repetition    */
/*  songs is 1024. And songs more than that will use randomly play */
/*  Special thanks to Ronald Ausloos (Belgium)'s advice            */
/*                                                                 */
/*  V1.5                                                           */
/*  2007-05-03                                                     */
/*  Change the behavior of the LEDs:                               */
/*                      VS1003 faild: LED1 blink                   */
/*                      SD faild    : LED2 blink                   */
/*                      FAT faild   : LED1 & LED2 blink alternatly */
/*                      File not found: Both LED blink             */
/*  Add read capacity function, fix the bug of FAT init            */
/*  Add slow start up code of VS1003                               */
/*                                                                 */                                                              
/*  V1.4                                                           */
/*  2007-05-02                                                     */
/*  Add enough delay when operate VS1003                           */
/*                                                                 */                                                              
/*  V1.3                                                           */
/*  2007-04-21                                                     */
/*  Modify the retry time of sd reset                              */
/*  Enable some code incase that when FAT initialize               */
/*  faild program can't jump out the loop                          */
/*  so the error LED can't light up                                */
/*  And light up both leds when FAT_Ini fails                      */
/*                                                                 */
/*  V1.2:                                                          */
/*  2007-04-04:                                                    */
/*  Add a macro of path                                            */
/*                                                                 */
/*  V1.1:                                                          */
/*  2007-02-25                                                     */
/*  Change the directory to C:\music\                              */
/*  A bug fixed                                                    */
/*  Modify some code to adjust new GCC compiler                    */
/*                                                                 */
/*  V1.0:                                                          */
/*  2006-12-03:                                                    */
/*  Original Version                                               */
/*******************************************************************/


版本V2.0:
    可以不再使用指定目录存放音乐文件了,文件可以存放在任意目录下(基本不限深度)。但是卡中的总文件夹应不超过127个。
以前没有支持这个功能是应为涉及到函数nest,文件藏的过深会引起堆栈溢出。现在换了一种思路,就是把文件夹的起始簇存到mega8的
内部EEPROM内。但是这样总的文件夹数量会受到限制。不过仅作mp3用途的话,文件夹数量应该不会太多。如果超过127个文件夹,则多于的文件夹将不会被扫描到。因此里面的歌曲也不会被播放到。

这种方法的一个缺点是,文件搜索时间长了很多,如果卡内有很多文件夹的话,文件搜索起来会很慢。

如果你不想使用任意目录这个功能,在fat.h文件内有一个宏定义 #define FIX_DIRECTORY 0 把这个宏定义修改为 1 重新编译即可。

这是压缩包:(阿莫老大如果看到请帮忙整理到楼主位,谢谢!)
点击此处下载ourdev_180345.zip(文件大小:48K)

发现任何bug请发email给我,谢谢!

出0入0汤圆

发表于 2007-11-10 17:41:20 | 显示全部楼层
谢谢bozai !

出0入0汤圆

发表于 2007-11-12 20:49:41 | 显示全部楼层
bozai可以把文件夹,文件夹起始cluster address防到SD卡内:例如:file_list.tab。这样就第一次启动MP3速度稍微慢点,过后搜索文件直接去file_list.tab里面去找,速度嗖嗖的快,然后可以做play_list功能。

出0入0汤圆

 楼主| 发表于 2007-11-13 09:39:40 | 显示全部楼层
谢谢elefan的建议!好主意啊,不过这个硬件版本的应该不行了,还剩7%的代码空间估计不够完成文件系统的写的了。

顺便问一下elefan,你做过歌词显示吗?
我前一阵子搞了个歌词显示,但是苦于m64内部ram不够,有些歌词信息不得不存放在EEPROM内。但是EEPROM的写操作很慢,所以遇上歌词大的要等上好几秒钟,歌词特别长的要等上7~8秒。那些短一点的或者歌词是那种重叠格式的就行了。我只分配640个字节的RAM做歌词的存储,高于这个的就要存到eeprom内了。

由于歌词的描述格式可以是不按照顺序放的,还可以多个tag共用一句歌词,所以要现对它作排序处理,不然播放器再去解析就来不及了。所以要存下来。
如果你做过不知道你是如何解决的。

出0入0汤圆

发表于 2007-11-14 22:02:39 | 显示全部楼层
to bozai:
我在你另外一个帖子里回复了,呵呵~

出0入0汤圆

发表于 2007-11-28 22:19:05 | 显示全部楼层
p     = MusicInfo.deStartCluster+
        (((unsigned long)MusicInfo.deHighClust)<<16);
请问这里已经找到了文件的开始族的位置了,为什么还要将文件的高族向左移16位 ,谢谢了!

出0入0汤圆

 楼主| 发表于 2007-12-3 19:36:39 | 显示全部楼层
to【162楼】 zqljg:
   qq上让你去看手册,不知道你现在理解了没有。fat32的簇是4字节的,fat16是2字节的。

我已经把最新的程序整理到楼主位了,不会找错了,呵呵!

出0入0汤圆

发表于 2007-12-4 10:45:27 | 显示全部楼层
领教了,收藏起来!

出0入0汤圆

发表于 2007-12-24 14:13:49 | 显示全部楼层
To【165楼】 caai2005 :在楼顶就有呀。我是不知道VS1003上哪买,去赛格转了一下没找着

出0入0汤圆

发表于 2007-12-24 14:39:18 | 显示全部楼层
找到了~  晕得死~~   谢谢了~~
楼上的兄弟  本论坛不就有买吗??

出0入0汤圆

发表于 2007-12-24 16:53:54 | 显示全部楼层
楼主  好像你那个图有点问题哦~~   VS1003的模拟地好像没与数字地有相接的地方

出0入0汤圆

 楼主| 发表于 2007-12-24 18:29:07 | 显示全部楼层
to 【168楼】 caai2005
    是吗?你再仔细找找

出0入0汤圆

发表于 2007-12-24 21:05:57 | 显示全部楼层
可能我PROTEL没学好吧  我看不出哦~  我一般是用个0欧的电阻在电源那接一起  能解释下你怎么连接起来的吗??
另外 手册中的GBUF应该怎么翻译?  ground buffer
谢谢~~

出0入0汤圆

 楼主| 发表于 2007-12-24 22:00:48 | 显示全部楼层


应该翻译成,音频缓冲的公共地

出0入0汤圆

发表于 2007-12-24 22:41:45 | 显示全部楼层
应该是我软件没学到家的原因~  按你的说法

这两个之间应该是连接在一起的~~
谢谢了
每天顶两贴~

出0入0汤圆

 楼主| 发表于 2007-12-24 23:16:55 | 显示全部楼层
to 【172楼】 caai2005:
    不好意思,画错了,是我软件没学到家,谢谢指点

出0入0汤圆

发表于 2007-12-24 23:28:40 | 显示全部楼层
原理图画完了,不过有一点初学者要小心,楼主的图没有画下载接口~   我是照图画,画玩后总感觉缺少点什么  最后还是想到了下载线~~   不然M8贴上去了就难下程序了  
楼主今天平安夜还守在OURAVR上?  呵呵~~

这是我画的图~   哪位想偷懒就下这个吧~  顺便看下有问题没~~  
点击此处下载ourdev_192984.rar(文件大小:50K)


回寝室睡觉去了~~  不然就要被关在实验室了~~

出0入0汤圆

发表于 2007-12-25 09:16:49 | 显示全部楼层
楼上的caai2005和bozai都很努力呀,这么晚还在上面。(汗,昨晚联星际去了)
因为我只要一颗,我还以为不能邮购呢,上次看到这个贴时觉得图挺简单就想要做一个(自己买的那个被我拆了几次后只能当U盘用了),无奈没买到IC。

出0入0汤圆

发表于 2007-12-25 18:19:46 | 显示全部楼层
楼主 想请教个问题  我以前用AVR是用CVAVR  现在你的程序是GCC的 所以想转GCC用用  可我用AVR Studio的时候
发现configuration options不能生成Makefile  导致不能编译
但我用外部提供的Makefile又可以编译 请问这是什么原因??
我是看着论坛上那篇文章操作的~

出0入0汤圆

 楼主| 发表于 2007-12-26 00:26:51 | 显示全部楼层
不要使用中文路径!

出0入0汤圆

发表于 2007-12-27 16:19:48 | 显示全部楼层
to: bozai
    bozai您好!
    在MMC_SD.C中有一個讀SD卡容量的函数,我在用的时候,发送CMD9后R1返回0x00,但读SD卡的数据时却返回36 32 59 DF DA 81 40 C1 74,程序在
    while(SPI_WriteByte(0xff) != 0xfe)
    {
       if(retry++ > 0xfffe){SPI_CS_Deassert();return 1;}
     }
   这时就死掉,不知是什么原因,麻烦帮忙看一下。谢谢!

出0入0汤圆

 楼主| 发表于 2007-12-27 18:26:05 | 显示全部楼层
这里不会死掉啊,顶多超时错误。
你可以尝试重新定义一下retry的数据类型,把超时的时间弄的大一点,有的sd卡的反应速度比较慢的。

出0入0汤圆

发表于 2007-12-27 20:53:24 | 显示全部楼层
我试过了,还是不行,还是一直接收不到应答信号0XFE

出0入0汤圆

 楼主| 发表于 2007-12-28 00:25:26 | 显示全部楼层
这就不知道咋回事了,我是没遇到过。
PS:之前对SD卡进行初始化了吗?

出0入0汤圆

发表于 2007-12-28 08:09:18 | 显示全部楼层
可以初始化OK!,发送CMD9后返回0X00,但得不到应答信号0XFE,始终有00 36 00 32 17 59 81 DF 76 DA FF 81 96 40 00 C1 2B 74 FF之后全部为0XFF接收到,直到超时退出

出0入0汤圆

发表于 2007-12-28 18:19:00 | 显示全部楼层
to: bozai  177楼
不要使用中文路径!   
一针见血~!!

出0入0汤圆

发表于 2007-12-28 19:29:54 | 显示全部楼层
请教波仔:
很多人写的文件系统,在查找文件的时候,是用文件名来作为关键字来进行查找的。歌曲文件名是不是在磁盘初始化的时候全部读出,保存在RAM中?

出0入0汤圆

发表于 2007-12-28 21:45:02 | 显示全部楼层
请坛里面的兄弟帮个忙  发个邮购部那种非弹出 SD卡座的
我在画PCB  元件还没回来
谢谢了~
我在坛里搜索了  但以前的那个链接打不开~~

出0入0汤圆

 楼主| 发表于 2007-12-28 22:07:17 | 显示全部楼层
to【184楼】 hushuitao
   "歌曲文件名是不是在磁盘初始化的时候全部读出,保存在RAM中?"
   m8 1K的ram够放几首歌的歌名?所以自然不会是你想的那样,对于这些简单的应用只需搜索后缀就可以了。

出0入0汤圆

发表于 2007-12-29 09:02:12 | 显示全部楼层
波仔的FAT驱动写得比较好,但有一个问题是,不支持长文件名,只支持8.3格式的文件名。

出0入0汤圆

发表于 2007-12-31 22:38:38 | 显示全部楼层
没关系  用短文件名就可以了塞~~

出0入0汤圆

发表于 2008-1-4 15:16:12 | 显示全部楼层
uint8 MMC_SD_SendCommand(uint8 cmd, uint32 arg)
{
        uint8 r1;
        uint8 retry=0;
       
        SPI_WriteByte(0xff);
        SPI_CS_Assert();
       
        SPI_WriteByte(cmd | 0x40);//分别写入命令        //send command
        SPI_WriteByte(arg>>24);
        SPI_WriteByte(arg>>16);
        SPI_WriteByte(arg>>8);
        //PORTA=0X01;
        SPI_WriteByte(arg);
        //PORTA=0X01;
        SPI_WriteByte(0x95);
       
        while((r1 = SPI_WriteByte(0xff)) == 0xff) //等待响应,        //wait response
                if(retry++ > 0xfe) break;//超时退出                                        //time out error
//PORTA=0X01;
        SPI_CS_Deassert();
        SPI_WriteByte(0xff);                                // extra 8 CLK

        return r1;//返回状态值                                        //return state

我改成16的为什么在
    SPI_WriteByte(arg>>24);
        SPI_WriteByte(arg>>16);
        SPI_WriteByte(arg>>8);
处不执行了?
我用1GSD卡,FAT32,请指教
   SPI_WriteByte(cmd | 0x40);//分别写入命令        //send command
能运行,说明写入正常吗?
谢谢
}

出0入0汤圆

 楼主| 发表于 2008-1-4 15:21:33 | 显示全部楼层
怎么会,硬件问题吧。我用就一直没啥问题,试过好多sd卡。

出0入0汤圆

发表于 2008-1-4 17:50:40 | 显示全部楼层
.

出0入0汤圆

 楼主| 发表于 2008-1-4 19:44:09 | 显示全部楼层
或者你程序没改对

出0入0汤圆

发表于 2008-1-4 23:00:55 | 显示全部楼层
学习中,正在弄MP3,从站长那里购得。刚焊完板,用随板程序试机,发现播放歌时速度不对。在波仔的帮助之下,烧写波仔的程序之后问题解决,确定了硬件是OK的(怕怕焊坏IC)。板OK了,回过头来慢慢学习源程序
非常感谢波仔的帮助和无私的奉献

出0入0汤圆

 楼主| 发表于 2008-1-5 00:20:29 | 显示全部楼层
hehe,不是这个连接
这个:http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=850436&bbs_page_no=1&search_mode=3&search_text=bozai&bbs_id=9999

出0入0汤圆

发表于 2008-1-5 07:34:48 | 显示全部楼层
哈哈,我知道
不过这个贴浮在水面就再顺手帮顶,我已经收藏了你给的链接啦,但是没有顶出来,免得有人说我乱顶贴子。
谢谢

出0入0汤圆

发表于 2008-1-5 09:29:30 | 显示全部楼层
用短文件名但在LCD上显示歌曲名时还是短文件名啊!

出0入0汤圆

发表于 2008-1-5 11:40:44 | 显示全部楼层
正在考试  
现在没时间搞,过一个多星期再去做板子~
大家等等我哈~~

出0入0汤圆

 楼主| 发表于 2008-1-5 11:48:49 | 显示全部楼层
to 【197楼】 caai2005:
    希望你能把它设计成能放在那种便准的小盒子里(比我的那个还小的那种),这样就方便携带了,我的那个还嫌太大了。
如果做成这样,期待caiai2005能share一块,thanks

出0入0汤圆

发表于 2008-1-8 18:36:34 | 显示全部楼层
呵呵  我本来是想把这个作为我将来的ARM板子的一个模块,但你开口了我就尽量做小些吧, 这个就当试验版
要是调出来了再做个功能强点的第二版
你有什么要求?  尺寸多大? 用什么电池?
还有就是麻烦你帮我看下PROTEL图对不对哈~~~

我也只做过几次版子,不知道我布的线你能不能接受,呵呵  做出来了肯定寄板给你

出0入0汤圆

 楼主| 发表于 2008-1-8 21:14:22 | 显示全部楼层
to 【199楼】 caai2005
    你可否去电子市场去找找看,就是那种通用的小盒子,大小比此帖15楼的盒子(15楼的大概8.4cm * 4.8cm * 2.2cm )小一号
和我做的另一个东西的盒子一样大
http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=725761&bbs_page_no=1&search_mode=3&search_text=bozai&bbs_id=9999

电池的话就用手机电池好了,如果都是贴片元件会有很多空间放电池的。你可以去买一个这种盒子再对着画板,还有孔的距离,sd卡插座的位置等。当然如果只是做实验,自己玩,无所谓多大了,我只是个提议而已。不过放在盒子里至少可以当便携式mp3用。

另外,我们公司这边不允许用portel(收到过律师函),所以我电脑上也没有这个软件,可不可转成pdf,或者截个图也行。
谢谢!

出0入0汤圆

发表于 2008-1-9 16:19:52 | 显示全部楼层
电子市场就麻烦了~  我号称住在毛主席故乡~ 可他老人家不搞电子~  我们这里基本上可以说是没有电子市场~~
15楼的是盒子是不是就是本论坛的那种??  这种我买了
还有一个问题就是按键问题,你想做个实用点的东西  总不能裸露几个普通轻触式按键吧??
听说有那种4X4的通用薄膜键盘卖~  但我一直没找到

这一版的目标只要出声音就可以~  了解,熟悉下FS

出0入0汤圆

 楼主| 发表于 2008-1-9 16:57:20 | 显示全部楼层
to 【201楼】 caai2005
    就是那种盒子。

这一版的目标只要出声音就可以~  了解,熟悉下FS

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

本版积分规则

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

GMT+8, 2024-4-19 15:50

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

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