【原创开源】班门弄斧,我的便携WAV播放器,希望大家支持
本帖最后由 kunnsd 于 2013-11-14 11:23 编辑写在开始:
这个播放器是我历时三年,断断续续做的,当时也承诺过阿莫要开源的,说实话,这个播放器的功能有限,功耗还比较大,只是音质还不错,我知道在论坛有很多音响方面的高手,所以我的标题就说了是班门弄斧,还请高手们留下建议与激励,讽刺与谩骂就不要留下了,之所以选在我任版主的板块开源,就是方便我的管理,音响类的东西,很容易骂声一片,虽是小人行径,还请大家见谅!
作品介绍:
这个播放器从2010年开始断断续续的已经做了3年了,每次都是只有在假期才能进行一点点改进,这个PCB是今年寒假就做好了,当时只是简单的硬件测试就撂下了,这个暑假开始完善
MCU使用nios ii,本来考虑过STM32,但是为了得到更高的IIS信号质量所以用FPGA做,在FPGA里做了硬件IIS模块,并且开辟了48bit 4k的FIFO进行缓冲,以保证信号质量,
DAC使用常见的WM8740,LPF用了两片OPA2604,耳机放大使用了TPA6120,电源部分FPGA部分是TPS63001+TPS76301,模拟部分是TPS61087升压,TPS63700负压转换,
LT1962正线性稳压,LT1964负线性稳压,TPS76301给WM8740的模拟部分。LPF和耳机放大使用了±8V的供电电压,所以整机耗电惊人,单节锂电供电,电流消耗大概340mA,
使用的3700mAh的电池也就10个小时,使用MAX1926为电池充电,充电电压比较宽泛,达到了5~12V,充电电流800mA。
MCLK时钟使用双时钟,24.576MHz和22.5792MHz,可以支持44.1kHz 16bit至96kHz 24bit 的WAV文件。
移植了FATFS,支持中文长文件名,准备下一次做板是加上录音功能,也支持44.1kHz 16bit至96kHz 24bit,实现当年的想法:
http://www.amobbs.com/forum.php? ... ighlight=sony%2Bm10
以上是抄我在三文鱼板块发的帖子的内容,就算是简单介绍了。
显示使用了尺寸为1.77寸的彩色OLED,分辨率为160×128。在该播放器中把它当单色来使用,就是黑底白字,非常漂亮,只有在显示开机画面时才能看到是彩屏。
显示的字宽度是不同的,这样可以有效利用分辨率不高的显示器。
照片:
开机画面:
原理图:
PCB:
对于SD卡的访问,使用SPI模式,大家都知道SD卡使用SPI模式是初始化要用低速率的时钟几百KHz,初始化完成后使用高速率的时钟(最大25MHz)以实现高速读取,对于一般的单片机来说只是设置一下SPI时钟控制寄存器而已,但是愚蠢的NIOS II处理器的SPI时钟速率是固定的,不能通过设置寄存器来改变,所以就在NIOS II的CPU里做了两个SPI接口,一个低速的100KHz,用于SD卡的初始化,另一个25MHz高速的,用于SD卡的读取。
因为使用了FATFS R0.09a,所以现在使用SPI读取SD卡只能实现96kHz 24bit WAV文件的播放,不使用文件系统则可以播放192kHz 24bit的文件,但是支持192kHz的意义不大,我找到的唯一一个192kHz 24bit的文件就是那个四百多兆的《加州旅馆》,而96k 24bit得出支持还是很有必要的,资源和比较多。
可以支持32G的SDHC卡,存储容量是没有问题的,现在SANDISK的32G C10的卡在京东上也不过就130块,我手头有2G,4G,8G,16G,32G的卡,都测试过,没有问题,品牌有金士顿,SANDISK,SONY和NOKIA手机带的不知品牌但标着NOKIA的2G TF卡戴套。
时钟使用双时钟,时钟速率的选择是根据DAC的手册提供的时钟表确定的,只是22.5782MHz的晶振不是很好买。
我觉得这个播放器如果用STM32F407+FPGA/CPLD的话应该会更好些,F407的SDIO口应该更快,没有试过,F103的SDIO用过,不稳定,不知407会不会改进。用FPGA/CPLD做时钟和IIS和其他的一些数字音频接口,这样的话应该功耗会低一些。
DAC使用大家熟悉的WM8740,这个DAC指标比较高而且价格低廉,容易买到,LPF使用WM8740数据手册中推荐的线路,耳放也是TPA6120数据手册的推荐线路,所以电路部分很简单。
播放功能很简单,支持文件夹播放,单曲循环,全部循环和顺序播放,所以可以将一张专辑建一个文件夹。
编辑中…… 站位 站位 精品贴留名占位,广告位招租。 顶起!!前辈现在是研究生还是留校当老师了? 顶~~期待开源 等待高手解析 占位支持~ 好贴期待中。。。 前排招租 已经感兴趣好久了 一直打算自己也做一个 标记!!!! 标记一下,要是stm32搞的还可以深入研究一下 火钳刘明 关注一下 lz 顶起,膜拜。 火钳刘明 标记~~~~~~~~~~~~~~~~~~~ 先顶了 漫漫看 出个套件吧!
我想直接要一个成品,跟当年要示波器成品一样。 顶坤哥,目测会火。 顶 支持,{:smile:} {:victory:} 好东西,看日后有没发行套件 话说我很的很感激你的电源部分!!!!!!!!!
~~~~~ 软核 + 逻辑? mark 支持再出个套件 都落灰了,果然凉了很久了 这个,要支持一下 为什么fpga的IIS信号质量会更好呢 MCU为什么不用M4呢?能省不少事吧 USB的什么都全 yuhang 发表于 2013-10-16 14:33 static/image/common/back.gif
MCU为什么不用M4呢?能省不少事吧 USB的什么都全
刚开始弄这个的时候,M4还没出来呢 bulejeans 发表于 2013-10-16 13:34 static/image/common/back.gif
为什么fpga的IIS信号质量会更好呢
使用独立的时钟系统,时钟不经过PLL,而且IIS输出开辟了4k的fifo,没有一般MCU的中断问题,数据绝不断流 很厉害!!!mark 支持, 东西很不错, 赞一个.
其实我觉得ARM I2S slave + codec I2S master方案更好, 比如stm32F4+wm8804, 毕竟专业音频芯片厂家能很好控制PLL和jitter, 个人写的fpga/cpld的I2S时序未做严格测试, jitter和wander未必有保证, 未必好过音频厂家. 大师的作品要顶! 用到这颗FPGA,成本下不来
这个要支持。
192K音源慢慢也多起来了,目前USB声卡都在抄32bit/384Khz与DSD音源。 顶了 支持下 学习, mark 占位收藏~ kunnsd 的知识面是在是太宽了,各个领域都游刃有余。 太牛啦! 拿着小刀看耍斧头的!!!店家,有斧头卖没?{:loveliness:}{:loveliness:}{:loveliness:}{:loveliness:} 哪天有空也搞搞看看... 感谢魏大师的无私奉献! 真是不错的东西 相当的好啊,FPGA果然万能 顶一下 强烈支持!!! 要是发布套件多好,我想要一套。 好东西,静等出套件! 坤大,正在研究你的这个prj,看坤大的代码和fpga构架,真是软硬高手啊,不过小弟有两点不明,1是那个atmega8-16单片机的用途,2是u19 ,从原理图看是个串行flash,但是你的板子上也没焊接,它有什么用呢? 楼主牛人啊!顶下
请问这个音量是怎么控制的?谢谢! tendy 发表于 2013-11-10 14:55 static/image/common/back.gif
坤大,正在研究你的这个prj,看坤大的代码和fpga构架,真是软硬高手啊,不过小弟有两点不明,1是那个atmega ...
ROM是保存FPGA程序的,和FPGA相连的。这个没有问题。
我的一个问题和你相同,就是ATMEGA8是做什么用的?从图上看应该是没有用到,也不用下载程序进去了。还请楼主帮忙看一下。 why800 发表于 2013-11-13 15:29 static/image/common/back.gif
ROM是保存FPGA程序的,和FPGA相连的。这个没有问题。
我的一个问题和你相同,就是ATMEGA8是做什么用的? ...
rom不是存epcs配置芯片吗?另外这个atmega8我搞懂了,是坤大专门用来做电量显示用的,只用了adc功能,其实完全可以用个串行adc芯片就行了,用这个atmega8还要单独写程序,不过好像坤大的代码里面没看到这个atmega8的程序。 看起来不错,就是体积稍大了些 很佩服楼主做的数字示波器,有空了我也想做一个。还想问楼主4G以上的卡可以使用SPI总线控制吗? bucuo 不错
! 楼主做的不错啊 赞一个,不错的设计 这个OLED屏啥型号,楼主提供下购买网站吧 不错不错,收藏了。 楼主谦虚了,不要太吊哦,厉害啊 支持一下!!! mark 不错 很好,谢谢楼主分享 多谢分享 强大的楼主。 好帖要顶,多谢楼主啊 哎呦不错哦 很好,多谢分享 很好,多谢分享 楼主真的厉害啊! 体积比较大哦,拿起来不方便 强烈要求出套件,自已制作播放器 有没有套件? 今晚上好像 附件浏览不了 怎么现在才发现这个帖子呢,实在太感谢了! 首先对楼主的手艺赞一下,
请问楼主48bit 4k的FIFO进行缓冲,对于不同的IIS格式都能缓冲吗? 16bit和24bit是不是分别一个单元可以放3个或者2个数据? 对于24bit192k有40ms缓冲时间吗 david2002guo 发表于 2014-8-27 17:14
首先对楼主的手艺赞一下,
请问楼主48bit 4k的FIFO进行缓冲,对于不同的IIS格式都能缓冲吗? 16bit和24bit ...
这个FIFO是对并行的48bit数据进行缓冲,在IIS之前,也就是两个通道的24bit,如果是16bit的文件则只占用高16bit 谢谢回答,FIFO的存储是通过外扩的SDRAM吗,还是FPGA(altera cyclone)内部的? 不太懂FPGA架构。
FIFO的好处是I2S的时钟可以去抖动,那么新的时钟用的时钟源是外部有源晶振吗,是什么厂家的,性能怎样 很好,多谢分享。{:smile:} 好东西嘿嘿 学习了 好东西,好东西 好东西,学习了 支持魏坤的作品,默默的关注好久了,你是国产大学生的榜样! 哇 牛人 谢谢分享,Mark一下 楼主说F103的SDIO用过,不稳定,是什么现象呢,我用了好久没发现问题啊。。 谢谢,分析 请教魏老师那个AT的单片机是干啥用的,驱动屏幕吗?? 高手这个能播放MP3吗?
支持一下!!! 好高级的,我也想做个!想和楼主一起讨论下 挖到了!看到了MAX1926,还是可以的,最大可以2A,你电路上设置了560mA。
有一个问题,估计电路功耗比较高,外部电源插入,电池在边充电边放电。
页:
[1]