标题
牛! 转贴 基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
clq
浏览(0) +
2007-05-28 14:40:47 发表
编辑
关键字:
转自:http://blog.21ic.com/user1/2198/archives/2006/9830.html
AT89C51SND1C 解码芯片做的硬盘MP3,软件还在完善中,现在只支持一块硬盘,一个分区,
至少可支持15层目录。只支持FAT32文件系统。支持USB1.1下载文件,速度300KB/S左右。
7.5*2个汉字液晶显示。可显示歌曲名,当前曲号等。可进行前后选曲。部分MP3文件不能解码。
clq
[图片]
..
clq
[图片]
..
clq
[图片]
..
clq
[图片]
..
clq
[图片]
..
clq
[图片]
..
clq
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
computer00发表评论于2007-5-21 19:07:00
密码请看版面公告栏.
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
mp3sourcecode(游客)发表评论于2007-5-21 17:22:00
mp3sourcecode.rar
密码是多少啊
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
computer00发表评论于2007-5-17 19:54:00
呵呵,谢谢楼上这位朋友的关心,身体是革命的本钱,我会好好留意的.
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
Francis(游客)发表评论于2007-5-17 18:31:00
圈圈,来向你问声好!呵呵
搞科研的一定要注意身体啊,
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
computer00发表评论于2007-5-11 15:07:00
没有中文的资料,呵呵,只能啃英文的了。我是用BUS HOUND抓数据包,看它发了什么,然后我再去看资料,看需要返回什么,呵呵。
我以前上传过一个USB资料包,里面有很多相关的资料,你可以去下载.
user1/2198/archives/2006/31127.html
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
小小电子(游客)发表评论于2007-5-11 14:46:00
不好意思啊 我又来烦你了。上次的问题还是没有找到根源所在。不过我投机取巧了一下,现在已经进入BLUK_ONLY阶段了,在这里想请教圈圈几个问题:就是Inquiry,Read Capacity,Mode Sense,Request Sense。这些东西都是干什么用的呢?? 有没有MASS STORAGE的中文资料啊 看英文好累啊 还有能不能给我一些关于SCSI命令的资料呢!! 先谢谢了
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
computer00发表评论于2007-5-9 14:02:00
那个长度是根据配置描述符,接口描述符,端点描述符的总长度计算出来的,*256+/256是做高低字节交换,因为keil 51编出来的是大端模式,而USB里面的数据则是小端模式。配置描述符,接口描述符,端点描符是一起返回的,所以需要计算它们的总长度,并放在一个结构体里。
至于最后的返回0长度的数据包,或许是我的理解有误?你可以将这步删掉再试试.
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
小小电子(游客)发表评论于2007-5-9 8:07:00
那我想请教下:在你的程序中对于配置描述符中大小是这样计算的:(sizeof(CONFIGURATION_DESCRIPTOR_STRUCT)+sizeof(INTERFACE_DESCRIPTOR_STRUCT)+sizeof(ENDPOINT_DESCRIPTOR_STRUCT)*ENDPOINT_NUMBER)*256+(sizeof(CONFIGURATION_DESCRIPTOR_STRUCT)+sizeof(INTERFACE_DESCRIPTOR_STRUCT)+sizeof(ENDPOINT_DESCRIPTOR_STRUCT)*ENDPOINT_NUMBER)/256,
我就看不明白了 为什么那个要*256再+/256?? 我是直接写0x20的 因为我的配置描述符只有32个字节。
我发现我的程序死在发送0字节里了,虽然枚举成功(主机有识别到MASS STORAGE)但是在返回配置描述符中的最后一步发送0字节给主机的时候 一直收不到主机的ACK 我怀疑是不是跟这个长度有关?
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
computer00发表评论于2007-5-7 19:32:00
这些问题太难说了,只有自己一点一点的去调试了,不像写个流水灯什么的那么简单.
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
小小电子(游客)发表评论于2007-5-7 17:37:00
哎~~ 又头疼了 想请教一下圈圈 我从抓包软件看出枚举完成后主机还发送SET_CONFIGURATION描述符。但是设备就是收不到?? 查了一天也没有查出来。 我就不明白了都是USB标准请求 为什么获取描述符能收的到 而设置配置描述符就收不到了
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
computer00发表评论于2007-5-6 22:43:00
差不多吧.你找块现成的U盘,然后用BUS HOUND 抓数据包来看看就明白了。
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
小小电子(游客)发表评论于2007-5-6 22:11:00
前一段时间困扰我很久的问题 5.1放假回家了几天回来 就奇迹般的好了!! 原来在获取全部配置描述符后面还要有发送一个0字节给主机 多本书都没有介绍到这一步啊
不过新的问题又来啊 就是枚举成功后要做什么 ?? 书上好象就直接到SCSI命令了 好象没这么快吧
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
computer00发表评论于2007-5-5 19:56:00
学了很久拉,只要是电子方面的我都喜欢学。
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
lishanx(游客)发表评论于2007-5-5 15:52:00
我都不懂,你从什么时候开始学的,都学些什么,
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
computer00发表评论于2007-4-29 19:00:00
注意配置描述符是跟后面的接口描述符和端点描述符一起返回的。
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
小小电子(游客)发表评论于2007-4-29 12:48:00
从你的话里看来是我没有正确返回设备描述符,不过我从程序运行情况上看他有获取配置描述符啊,我想他应该是正确获取设备描述符和设置地址后才会获取配置描述符吧?? 那我的问题应该就是出在没有正确返回配置描述符了。我再看看 那里错了。
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
computer00发表评论于2007-4-29 12:13:00
从你所描述的现象来看,似乎是你没有正确返回设备描述符.这时主机就会发几次获取设备描述符的命令,如果重试几次获取不到,就会复位,然后再试,如果连续几次复位后都不行,它就会放弃,并返回PID和VID都是0,如果这是第一次,系统就会提示发现新硬件,并要求你安装驱动,当然,这时是不可能会有合适的驱动提供的。所以就会安装不成功。以后接下来再遇到同样的情况时,就不会再提示你安装驱动了.你直接去设备管理器看看就知道了,它会在USB总线下显示一个未知设备,并且它的PID和VID都是0. 只在D+上接一个1.5K的上拉电阻,即便没有任何USB芯片,也会出现这样的情况.
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
小小电子(游客)发表评论于2007-4-29 11:06:00
恩 多谢大哥了, 今天早上试了一下发现是总线一直复位了。一生气干脆把复位处理去掉。结果第一次插进去可以了 系统提示发现新硬件安装并……。太快了没看清楚。不过后面怎么插都不行了 。郁闷,老师说总线不会一直复位,我就奇怪了,怎么从程序运行情况上看他是发一个GET_DESCRIPTOR,就复位一次。 还在摸索中……
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
computer00发表评论于2007-4-28 23:31:00
我没看到获取设备描述符要分三部这样的说法。但是不管如何,主机问你要什么,你就返回什么就行了,而不用理它具体是什么。不同的操作系统的步骤可能是不一样的。你只需要解释主机发送过来的命令,然后按照要求返回数据就可以了。你可以参考一下我做的USB鼠标和键盘,看看它们的枚举过程是怎样的。
http://computer00.21ic.org/user1/2198/archives/2007/36484.html
http://computer00.21ic.org/user1/2198/archives/2007/36520.html
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
小小电子(游客)发表评论于2007-4-28 15:34:00
发现问题了:是总线复位了,没有进入第三步 而是SETADDRESS后总线复位了 重新获取设备描述符。我还一直以为是第三步出错了。
在这里问下圈圈 在什么情况下,总线会复位啊 ??
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
小小电子(游客)发表评论于2007-4-28 14:57:00
你的代码我也看了,很多都可以COPY你的。不过我想自己自己动手写一写会对整个枚举过程比较清楚一点。现在的主要问题就是看不了总线的状态,很不幸,我的系统就是XP的 555~~~~难道要重装系统?? 不过现在遇到的问题确实让我想不通 第一次读取设备描述符都可以,为什么第二次读取就不行了??
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
小小电子(游客)发表评论于2007-4-28 14:48:00
哦 这样啊 那我看很多资料上写第三步读取设备描述符要分三步传输??这是为什么啊? 不是一次就能全部传输完吗??
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
computer00发表评论于2007-4-28 14:04:00
这就不好说了,这个东西很复杂的,很难一下说清楚原因是什么,任何一个小地方出了问题都可能会导致一些问题。总之我保证我的程序是可以正确运行的,如果你自己写的程序的话,我就搞不清楚它跑到哪儿去了........
你看到的那些数据包,应该是主控制器发给根集线器的,你选择监视设备的时候注意下一下就行了。
另外,BUSHOUND在 WIN2000下运行起来比较好,XP下好象会忽略一些信息,好象在XP下只会显示设置地址后的数据包,而设置地址前的获取设备描述符以及设置地址看不到了.
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
小小电子(游客)发表评论于2007-4-28 11:21:00
最新战报:不好意思 上次是我的那个地址设置错了,已经能进入第三步了。不过到了第三步就挂了 进行不下去了。按道理第一次读取DEVICE描述符可以 后面读取DEVICE描述符也是可以的啊?? 会是什么原因呢?? 程序好象运行到第三步读取设备描述符时就死了
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
小小电子发表评论于2007-4-28 9:03:00
还想请教圈圈大虾一个问题: 就是我的BUSHOUND怎么老是显示GET STATUS 和CLEAR FEATURE 程序显示明明有进入GET DESCRIPTOR() 和 SET ADDRESS()。要如何设置BUSHOUND才能正确显示BUS状态呢??
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
小小电子发表评论于2007-4-28 7:07:00
各位好啊 我的毕业设计也是做这个的
目前正在写枚举程序 问题很多啊 已经能运行到设置地址了。不过在在第三步获取设备描述符的时候好象停住了? 没见他有跑到获取配置描述符那里?? 在此想请教圈圈几个问题。
一:我看很多资料写在枚举的第三步要分多次读取设备描述符,可是端点0有32个字节不是一次就能传输完毕??为什么要分多次呢??
二:不知道我没有处理SPINT USB悬挂处理对USB枚举有没有什么影响??
三:那个NAK不用可以吗?? 有什么影响呢??
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
恶魔(游客)发表评论于2007-4-26 18:25:00
感谢这位兄弟,我毕业设计就是做MP3!有兴趣的QQ704891500
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
Computer00发表评论于2007-4-1 23:38:00
呵呵~~~这个就随便你了,做PCB会好看些.
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
Francis(游客)发表评论于2007-4-1 20:40:00
看来我得摸着石头过河啦。
这步难走。
要不我也借鉴你的?
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
Computer00发表评论于2007-4-1 15:53:00
我的图你也看到了,我当时就没做PCB嘛,就是直接万用板搭的电路,下面全是飞线来的。最好先找齐元件再弄PCB吧.
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
Francis(游客)发表评论于2007-4-1 14:48:00
圈圈好啊,今天愚人节,我就不愚你啦。(智商没你高,)
但有问题请教啊,呵呵
昨天把原理图弄好拉,眼晕。我现在考虑的是:先做好PCB板呢,还是先把那些芯片,零件买回来,因为担心实际元件和PCB板不匹配。
你看怎么弄好啊?你当时是怎么做的啊?
敬候佳音。
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
Francis(游客)发表评论于2007-3-30 12:02:00
我觉得还是DXP好用,你肯定喜欢.
今天搞定拉,原来是个破解板的,呵呵
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
computer00发表评论于2007-3-29 23:25:00
呵呵~~~~够晕. 还好我一直用99SE,高档的软件俺的电脑累得很~~~~~
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
Francis(游客)发表评论于2007-3-29 20:56:00
打算今天开工的, 居然电脑不配合,先是系统坏了,然后借同学的用,郁闷的是DXP装上去就是不能用,......
开头就来了个下马威,看来一路不好走啊 呵呵
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
Francis(游客)发表评论于2007-3-28 21:46:00
圈圈好啊,
好的,没问题,争取做的能跟您的一样。嘿嘿
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
computer00发表评论于2007-3-28 13:52:00
呵呵,有信心就好.祝你早日做成功,好让大家一起分享你的喜悦。
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
Francis(游客)发表评论于2007-3-28 11:55:00
圈圈,谢谢了哦!
呵呵,难度肯定是有的,不过有你的回信,我还是蛮有信心的。
早就看你的博客啦,除了佩服就是羡慕啦!
接下来就要做啦,居然有点兴奋。嘿嘿
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
computer00发表评论于2007-3-27 13:22:00
硬盘接口好象叫做IDC40吧,你可以看看你的电脑主板,接了一个宽宽的数据线到硬盘那个,就是了.侧面有个小三角形的,表示那里是第一脚.
我不知道直接烧我的程序进去是否会可以正常工作,也许不同的硬盘有点不一样吧,所以有可能需要你自己调试一下程序,因为我就遇到有人说不成功的,调试起来蛮头疼。所以你最好多点准备,具备一定的调试和排除故障的能力。
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
francis(游客)发表评论于2007-3-27 11:41:00
圈圈,谢谢指点阿。
昨天忘问了,那个IDEPORT你没介绍型号阿,好像是个排线接口。
麻烦您看下我的思路对不对阿:先做好PCB板,准备好芯片,各种零件,包括电阻,电容等等,接下来就是把您的程序烧到芯片里,然后就是调试了。
您说对吗?
麻烦您了阿,呵呵。
个人主页 | 引用 | 返回 | 删除 | 回复
Re:基于AT89C51SND1C的硬盘MP3(原理图+源代码+实物照片)
computer00发表评论于2007-3-26 23:14:00
3544,4330,LCD 12232E这些应该只要报型号就行了吧。3544是耳机驱动芯片,你也可以换用其它的耳机驱动芯片。4330是音频DAC。这两个都是8脚的,根据这些应该就差不多了。LCD12232E是带汉字字库的,好象是7个半汉字*两行吧,价格大概在50块左右,也许更低点,不同的地方价格不大一样。
个人主页 | 引用 | 返回 | 删除 | 回复
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.