kunnsd 发表于 2013-10-16 10:15:23

【原创开源】班门弄斧,我的便携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数据手册的推荐线路,所以电路部分很简单。

播放功能很简单,支持文件夹播放,单曲循环,全部循环和顺序播放,所以可以将一张专辑建一个文件夹。




编辑中……

kunnsd 发表于 2013-10-16 10:15:42

站位                                 

kunnsd 发表于 2013-10-16 10:16:04

站位                              

lcofjp 发表于 2013-10-16 10:19:23

精品贴留名占位,广告位招租。

sco518 发表于 2013-10-16 10:20:44

顶起!!前辈现在是研究生还是留校当老师了?

changer15309 发表于 2013-10-16 10:24:24

顶~~期待开源

fengyunyu 发表于 2013-10-16 10:35:40

等待高手解析

shenrongze 发表于 2013-10-16 10:39:10

占位支持~

1181zjf 发表于 2013-10-16 10:40:58

好贴期待中。。。

conandllu 发表于 2013-10-16 10:58:55

前排招租 已经感兴趣好久了 一直打算自己也做一个

32MCU 发表于 2013-10-16 11:03:36

标记!!!!

csb1030 发表于 2013-10-16 11:16:41

标记一下,要是stm32搞的还可以深入研究一下

Name_006 发表于 2013-10-16 11:20:51

火钳刘明                     关注一下 lz                                                            

majianjia1991 发表于 2013-10-16 11:29:36

顶起,膜拜。

zishan 发表于 2013-10-16 11:37:31

火钳刘明

cu_ice 发表于 2013-10-16 11:40:40

标记~~~~~~~~~~~~~~~~~~~

ricefat 发表于 2013-10-16 11:41:31

先顶了 漫漫看

jordonwu 发表于 2013-10-16 11:52:07

出个套件吧!

lrzxc 发表于 2013-10-16 11:55:14

我想直接要一个成品,跟当年要示波器成品一样。

1109 发表于 2013-10-16 12:04:57

顶坤哥,目测会火。

lgg88 发表于 2013-10-16 12:14:17

顶                           

lcmdw 发表于 2013-10-16 12:15:24

支持,{:smile:}

BAOWAZI123321 发表于 2013-10-16 12:24:48

{:victory:}

newcanking 发表于 2013-10-16 12:32:40

好东西,看日后有没发行套件

format 发表于 2013-10-16 12:39:16

话说我很的很感激你的电源部分!!!!!!!!!

~~~~~

stdio 发表于 2013-10-16 12:39:37

软核 + 逻辑?

二进制 发表于 2013-10-16 12:48:19

mark         

ndt2000 发表于 2013-10-16 13:07:26

支持再出个套件

goolloo 发表于 2013-10-16 13:07:26

都落灰了,果然凉了很久了

ccmj4708 发表于 2013-10-16 13:11:52

这个,要支持一下

bulejeans 发表于 2013-10-16 13:34:51

为什么fpga的IIS信号质量会更好呢

yuhang 发表于 2013-10-16 14:33:27

MCU为什么不用M4呢?能省不少事吧 USB的什么都全

kunnsd 发表于 2013-10-16 16:16:15

yuhang 发表于 2013-10-16 14:33 static/image/common/back.gif
MCU为什么不用M4呢?能省不少事吧 USB的什么都全

刚开始弄这个的时候,M4还没出来呢

kunnsd 发表于 2013-10-16 16:18:35

bulejeans 发表于 2013-10-16 13:34 static/image/common/back.gif
为什么fpga的IIS信号质量会更好呢

使用独立的时钟系统,时钟不经过PLL,而且IIS输出开辟了4k的fifo,没有一般MCU的中断问题,数据绝不断流

jackielau 发表于 2013-10-16 16:24:41

很厉害!!!mark

cheungman 发表于 2013-10-16 17:05:05

支持, 东西很不错, 赞一个.

其实我觉得ARM I2S slave + codec I2S master方案更好, 比如stm32F4+wm8804, 毕竟专业音频芯片厂家能很好控制PLL和jitter, 个人写的fpga/cpld的I2S时序未做严格测试, jitter和wander未必有保证, 未必好过音频厂家.

sunliezhi 发表于 2013-10-16 17:17:23

大师的作品要顶!

awgoto 发表于 2013-10-21 02:25:11

用到这颗FPGA,成本下不来

hifiss 发表于 2013-10-21 23:55:21

这个要支持。
192K音源慢慢也多起来了,目前USB声卡都在抄32bit/384Khz与DSD音源。

金牛AKI 发表于 2013-10-22 08:38:15

顶了    支持下

wcm_e 发表于 2013-10-22 08:45:49

学习, mark

yiming988 发表于 2013-10-29 14:15:32

占位收藏~

chujidashi 发表于 2013-10-30 08:52:32

kunnsd 的知识面是在是太宽了,各个领域都游刃有余。

Firman 发表于 2013-10-30 09:09:34

太牛啦!

fsclub 发表于 2013-10-30 09:12:52

拿着小刀看耍斧头的!!!店家,有斧头卖没?{:loveliness:}{:loveliness:}{:loveliness:}{:loveliness:}

CHEN1986 发表于 2013-10-31 19:15:00

哪天有空也搞搞看看...

liuzhijun2008 发表于 2013-10-31 19:46:15

感谢魏大师的无私奉献!

z31com 发表于 2013-10-31 19:58:12

真是不错的东西

hyghyg1234 发表于 2013-10-31 22:06:27

相当的好啊,FPGA果然万能

atonghua 发表于 2013-11-7 10:24:44

顶一下 强烈支持!!!

why800 发表于 2013-11-8 09:31:01

要是发布套件多好,我想要一套。

后遗症 发表于 2013-11-10 13:27:47

好东西,静等出套件!

tendy 发表于 2013-11-10 14:55:26

坤大,正在研究你的这个prj,看坤大的代码和fpga构架,真是软硬高手啊,不过小弟有两点不明,1是那个atmega8-16单片机的用途,2是u19 ,从原理图看是个串行flash,但是你的板子上也没焊接,它有什么用呢?

fengxifeng 发表于 2013-11-12 12:02:44

楼主牛人啊!顶下

JamesErik 发表于 2013-11-12 14:58:46

请问这个音量是怎么控制的?谢谢!

why800 发表于 2013-11-13 15:29:45

tendy 发表于 2013-11-10 14:55 static/image/common/back.gif
坤大,正在研究你的这个prj,看坤大的代码和fpga构架,真是软硬高手啊,不过小弟有两点不明,1是那个atmega ...

ROM是保存FPGA程序的,和FPGA相连的。这个没有问题。
我的一个问题和你相同,就是ATMEGA8是做什么用的?从图上看应该是没有用到,也不用下载程序进去了。还请楼主帮忙看一下。

tendy 发表于 2013-11-13 15:35:41

why800 发表于 2013-11-13 15:29 static/image/common/back.gif
ROM是保存FPGA程序的,和FPGA相连的。这个没有问题。
我的一个问题和你相同,就是ATMEGA8是做什么用的? ...

rom不是存epcs配置芯片吗?另外这个atmega8我搞懂了,是坤大专门用来做电量显示用的,只用了adc功能,其实完全可以用个串行adc芯片就行了,用这个atmega8还要单独写程序,不过好像坤大的代码里面没看到这个atmega8的程序。

ahfong2006 发表于 2013-11-13 16:05:24

看起来不错,就是体积稍大了些

linbaoluo3 发表于 2013-11-13 19:37:11

很佩服楼主做的数字示波器,有空了我也想做一个。还想问楼主4G以上的卡可以使用SPI总线控制吗?

moen 发表于 2013-11-13 20:05:14

bucuo 不错

dearterry30 发表于 2013-11-13 23:16:15

楼主做的不错啊

torushh 发表于 2013-11-14 19:29:05

赞一个,不错的设计

后遗症 发表于 2013-11-15 19:43:44

这个OLED屏啥型号,楼主提供下购买网站吧

loveliang1986 发表于 2013-11-15 20:38:18

不错不错,收藏了。

jzhang123 发表于 2013-11-18 17:01:06

楼主谦虚了,不要太吊哦,厉害啊

hamipeter 发表于 2013-11-18 18:01:14

支持一下!!!

yinian 发表于 2013-11-27 14:58:01

mark 不错

xmu234 发表于 2013-11-29 10:02:37

很好,谢谢楼主分享

PSP2000 发表于 2013-11-29 16:14:11

多谢分享

kaifakaiyang 发表于 2013-12-4 21:11:57

强大的楼主。

cxhy 发表于 2013-12-4 21:53:48

好帖要顶,多谢楼主啊

365mcu 发表于 2013-12-4 21:59:29

哎呦不错哦

ctl3432 发表于 2013-12-5 09:34:54

很好,多谢分享

windy326 发表于 2014-3-6 19:51:10

很好,多谢分享

superwpc 发表于 2014-4-15 17:42:31

楼主真的厉害啊!

default 发表于 2014-4-22 09:55:30

体积比较大哦,拿起来不方便

MyDSO 发表于 2014-6-3 16:51:29

强烈要求出套件,自已制作播放器

redriver 发表于 2014-7-7 22:05:34

有没有套件?

sz_tony 发表于 2014-7-29 23:11:20

今晚上好像 附件浏览不了

cxjnet 发表于 2014-8-19 09:45:44

怎么现在才发现这个帖子呢,实在太感谢了!

david2002guo 发表于 2014-8-27 17:14:29

首先对楼主的手艺赞一下,
请问楼主48bit 4k的FIFO进行缓冲,对于不同的IIS格式都能缓冲吗? 16bit和24bit是不是分别一个单元可以放3个或者2个数据? 对于24bit192k有40ms缓冲时间吗

kunnsd 发表于 2014-8-29 17:07:14

david2002guo 发表于 2014-8-27 17:14
首先对楼主的手艺赞一下,
请问楼主48bit 4k的FIFO进行缓冲,对于不同的IIS格式都能缓冲吗? 16bit和24bit ...

这个FIFO是对并行的48bit数据进行缓冲,在IIS之前,也就是两个通道的24bit,如果是16bit的文件则只占用高16bit

david2002guo 发表于 2014-8-30 11:24:30

谢谢回答,FIFO的存储是通过外扩的SDRAM吗,还是FPGA(altera cyclone)内部的? 不太懂FPGA架构。
FIFO的好处是I2S的时钟可以去抖动,那么新的时钟用的时钟源是外部有源晶振吗,是什么厂家的,性能怎样

elbor 发表于 2014-9-7 20:17:10

很好,多谢分享。{:smile:}

青龙 发表于 2014-9-7 20:54:10

好东西嘿嘿 学习了

xlz406 发表于 2014-9-7 21:38:24

好东西,好东西

zzfd97 发表于 2014-9-15 00:15:11

好东西,学习了

hgqlyl 发表于 2014-10-15 20:06:49

支持魏坤的作品,默默的关注好久了,你是国产大学生的榜样!

lonely9391 发表于 2014-10-15 20:12:13

哇 牛人   

foow 发表于 2014-11-6 13:35:24

谢谢分享,Mark一下

CoolBird007 发表于 2014-11-13 17:45:51

楼主说F103的SDIO用过,不稳定,是什么现象呢,我用了好久没发现问题啊。。

zhangzif 发表于 2015-4-14 20:23:44

谢谢,分析

小小灰狼 发表于 2015-8-5 21:33:53

请教魏老师那个AT的单片机是干啥用的,驱动屏幕吗??

maplewang 发表于 2015-8-6 03:59:17

高手这个能播放MP3吗?

rundream 发表于 2015-10-31 21:32:22

支持一下!!!

elementls 发表于 2015-12-24 13:12:50

好高级的,我也想做个!想和楼主一起讨论下

gtembeded 发表于 2017-9-9 16:15:45

挖到了!看到了MAX1926,还是可以的,最大可以2A,你电路上设置了560mA。
有一个问题,估计电路功耗比较高,外部电源插入,电池在边充电边放电。
页: [1]
查看完整版本: 【原创开源】班门弄斧,我的便携WAV播放器,希望大家支持