搜索
bottom↓
回复: 133

[开源]我的第一个UC3B0制作--WAV播放器--出声了,发贴庆祝【恢复】

[复制链接]

出0入0汤圆

发表于 2008-10-12 11:23:48 | 显示全部楼层 |阅读模式
我的WAV播放器也出声啦!以后我也可以不要CD机了,发贴庆祝

上几张图,不过大家不要评论图片质量以及能跟站长有得一拼的摄像技术,哈哈

本站的UC3B0小板,TDA1543-DAC,SD卡



 (原文件名:uc3b_tda1543.jpg) 



TDA1543 sch



 (原文件名:DAC_SCH.GIF) 



K240M耳机,2005年7月份购买



 (原文件名:k240m.jpg) 



耳机放大器,本人的拙作,完成于2005年10月,因为当时买了K240M之后才发觉没钱买耳机放大器,所以DIY,电路结构大体是:一只5670作前级放大,共阴极电路,阴极未加旁路电容形成少量电流负反馈,推动末级二只6N6T,每只中二管并联推动上无二七厂CB-2-17型输出变压器,该变压器初级为7000欧阻抗,有600欧和4欧输出。6N6级也是共阴极放大无负反馈,整机无大环反馈。电子管的优点在于能以最简单的电路获得令人满意的效果



 (原文件名:amp.jpg) 



年初本坛高手提出HIFI播放器想法并且成功实践之后,一直看得我心痒痒,奈何没有买到合适的ARM板,就一直等着



直到前不久,终于忍不住,准备买SAM7S64芯片回来自己焊,到阿莫处选零件,却看到阿莫推出了UC3B0小板,价格非常合理,毫不犹豫地改用AVR32来实现我的WAV播放器,一来省却自己焊洞洞板的麻烦,二来有OURDEV这么好的论坛,不怕没有资料



收到板后花一个下午焊好板然后,就开始写程序,第一次用32位的MCU,一下子真有点适应不过来,主要外设多,寄存器长,太复杂了,看完DATASHEET之后还是云里雾里,好在ATMEL有驱动包,有好多应用范例,最重要是解除了设置寄存器的梦魇,可以把心思放在应用程序上,很多底层函数直接可以拿来就用,省时省力

现在WAV播放程序只完成一点点,可以出声而已,太幼稚了不好意思拿出来给大家看,简介一下,请大家指教。



程序直接从SD读扇区(未经过FAT,彩虹老师说的“暴力读取”),存放于一个读取缓冲区(512B),稍经变换后,送至SSC发送缓冲区,由PDC通道负责将数据送给SSC,当数据到达TDA1543即变换为声音了。SSC发送缓冲区设置两个,每个512B,轮流发送以使数据连续。PDC真是太好用了!如果没有PDC真不知道应该如何保证数据不断流。目前程序只开三个512B的缓冲区就已经可以正常工作了



SSC设置为I2S方式,44100取样率,数据长度16BITS,帧长也是16BITS,立体声输出

PDC设置通道0给SSC发送用,半字(16BITS)方式工作,SIZE处填入256(512 / sizeof(S16)),启用PDC发送完成中断,在ISR里切换发送缓冲



小板在使用中有一点稍感不便:BOOTLOADER程序只支持8,12,16MHz这些晶振,而播放WAV用到的一个频率是16.9344MHz,这个频率是连不上USB的,而OSC1我不知道怎么把它设置为SSC时钟,现在还是空着没有焊上晶振呢。我采用一个很笨的办法,在OSC0晶振位焊一个插座,ISP的话就换上12MHz的,播放时换上16.9344MHz的。



下来慢慢完整程序,加入FAT,按键,显示等等,还有很长的路呢

说说DAC吧,我也是用TDA1543,取其电路最简单,暂时用着,因为手上只有这个芯片。经过试听各种类型音乐,发现这个古老的IC还是有令人惊喜之处的!就我的感觉而言,TDA1543优点在于低中音有力度,厚实,听蔡琴很亲切,高音有点暗(注意不是少),属耐听型。难怪彩虹老师也给予了颇高的评价,我估计原因在于与其JBL音箱甚为合拍。当然,TDA1543的分析力是差一些,低音方面稍稍有些混。



在我的系统中,因为我的耳机K240M中频比较突出,用胆机推动,加上TDA1543的特点,这样一来就稍有些过了,估计可以通过电路来作些调整的,不过我更希望试试别的,找一个声音靓丽活泼的,中和一下声音,有米的话我就试PCM1704(我的最想得到的DAC芯片)……希望那天不太远,就目前而言,TDA1543仍值得一玩



我身在农村,难得出来上一次网,乱说一通,不知所云,各位见笑了!



本贴被 Gorgon Meducer 编辑过,最后修改时间:2009-01-11,23:15:28.

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

如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。

如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》

出0入0汤圆

发表于 2008-10-12 12:59:15 | 显示全部楼层
顶一下。

正在学AVR32,看来我也要加把劲了。呵呵!



FAT可以参考“ATMEL File System” 在AVR32 studio的帮助里有介绍,讲解的很详细,很不错的资料。

出0入0汤圆

发表于 2008-10-12 13:41:52 | 显示全部楼层
没玩AVR,帮顶一下,支持楼主!

出0入0汤圆

发表于 2008-10-12 13:44:55 | 显示全部楼层
楼主的图纸是使用什么绘图工具画的很漂亮。

出0入0汤圆

发表于 2008-10-12 13:57:37 | 显示全部楼层
【楼主位】 mowin 雾湾 

呵呵,支持!有什么问题,我们可以多讨论

ATMEL自己有一个做的很好的播放器参考设计,你可以参考下

http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=1462179&bbs_page_no=1&bbs_id=1030

另外,关于晶振的控制,你可以先查看下资料,过段时间,我会写一个使用双晶振的例程,你可以参考下
头像被屏蔽

出0入0汤圆

发表于 2008-10-12 14:23:20 | 显示全部楼层
Cool !



呵呵,如果楼主不是作为商业用途,将代码等也共享吧。这样会更有参考价值。谢谢。

出0入0汤圆

发表于 2008-10-12 23:20:22 | 显示全部楼层
不错,真有雅兴!

出0入0汤圆

 楼主| 发表于 2008-10-15 12:40:34 | 显示全部楼层
三楼:

画图软件为KICAD,不错的开源软件,详细情形请搜索本站,会有你想知道的。



四楼:

版主,之前已经有麻烦你的了,不过问题已经解决。SD卡的问题是这样的:硬件没有问题,软件没有问题,SD卡也没有问题,那是什么原因呢!最后解决的时候我自己都笑了,是人的问题,我的问题(眼花了),把PA26看成PA25了!!两个印得太像了,开始的时候我还有点纳闷怎么有两个PA25的……

晶振的问题已经解决,我找到方法了:把12MHz的焊在OSC0位置用于ISP。16.9344MHz的焊在OSC1位,然后程序里启用PLL0,用OSC1作为时钟源,5倍频,然后再二分频,得到42.336MHz作为系统时钟用,这样可以满足SSC及USART的要求,两者都可以得到精确的波特率

另建议站长进些顶级的16.9344MHz晶振来卖,哈哈



五楼:

谢谢站长,想不到这样的贴也可以COOL哦,我不是用作商用的,不过程序还真的不能见人,迟些稍稍能用的时候我会补上的。现在的程序又没有控制,没有显示,只是把SD卡从头读到尾,如果卡上有不是音频的数据,那会害了人的(一片沙沙声)

出0入0汤圆

发表于 2008-10-15 12:51:25 | 显示全部楼层
【8楼】 mowin 雾湾

呵呵,有时候问题总处在最简单也最郁闷的地方~~

其实,我这边有在准备二晶振的教程,只是突然出现了一些小事故,你先解决就更好,办法就是你说的用PLL0倍频OSC1

另外建议使用小于16M的晶振,不过16.9344MHz应该问题也不大。



本来是要计划出一个UC3内核的音频解码范例板,没想到你先做好了,哈哈鼓掌~~

出0入0汤圆

 楼主| 发表于 2008-10-15 12:55:23 | 显示全部楼层
期待你的范例,我的水平太菜了,如果有你的范例作参考加上我自己对音响的理解一定可以写出更好的程序来,期待呀!!

出0入0汤圆

发表于 2008-10-15 12:59:06 | 显示全部楼层
【10楼】 mowin 雾湾

呵呵,谢啦,事情总要一步一步来了。



到时候作出来的话,可以先发给你个板子作测试~~你也可以向我推荐下外围电路,这个板子还在筹划中~

出0入0汤圆

 楼主| 发表于 2008-10-15 12:59:24 | 显示全部楼层
晶振问题开始我也有犹豫,DATASHEET说不能大于16MHz,不过我现在用来没有任何问题!以后如果我有条件制作另外的PCB板时(不知道何年何月),我一定会用16.9344MHz的有源晶振,不要片上振荡器

出0入0汤圆

发表于 2008-10-15 13:06:43 | 显示全部楼层
【12楼】 mowin 雾湾

呵呵,一般是会留出一点余地的,AVR不是超频着玩也蛮好吗?

其实UC3的晶振控制很灵活,你可以选用低速晶振,比如11.2896M,然后再倍频上去。另外,模块的频率可以小于主时钟,只要在分频系数之内就可以了,这样你就能跑在一个较高的频率,做更多的事了

本贴被 kingofkings 编辑过,最后修改时间:2008-10-15,13:07:14.

出0入0汤圆

发表于 2008-10-15 13:19:11 | 显示全部楼层
mowin 雾湾   好样的。。

出0入0汤圆

 楼主| 发表于 2008-10-15 13:39:14 | 显示全部楼层
【11楼】 kingofkings 技术火腿(KoK)

到时候作出来的话,可以先发给你个板子作测试~~你也可以向我推荐下外围电路,这个板子还在筹划中~  



如果真HIFI一点的板,我想DAC很关键,建议BB公司的PCM1798,对应目前最高数字音频规格(24bit/192KHz),兼容IIS输入,我没有用过(想用),但是BB公司的IC应该是不容置疑的,请你评估一下。虽然我也很想试试PCM1704,但是PCM1704是单声道的,立体声要用两片而且不是IIS输入的,估计做起来很麻烦

出0入4汤圆

发表于 2008-10-15 13:42:00 | 显示全部楼层
mowin 用 kicad 画的图,好极了!

出0入0汤圆

发表于 2008-10-15 14:09:54 | 显示全部楼层
【15楼】 mowin 雾湾

行的,到时候会集合下各种意见,还要兼顾下成本~~当然啦,留个焊位也是可以的~~

出0入0汤圆

发表于 2008-10-15 22:06:20 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2008-10-20 13:05:35 | 显示全部楼层
兑现前言,共享mowin_wav_player源程序

点击此处下载 ourdev_461812.rar(文件大小:3.04M) (原文件名:mowin_player_10_19.rar) 



第一版可以正常播放的程序!写得有些乱,未在可读性、可移植性及模块化方面作过多考虑。各位有批评建议什么的,希望多多提出



程序在AVR32STUDIO里编译通过,优化等级为-O2

我用的编辑器是VIM,K&R代码风格,在AVR32STUDIO里显示有点乱,大家将就点看, 在VIM里显示没有问题的。习惯VIM就再也用不惯其它编辑器,VIM太好用了



重要说明:程序中,除去ATMEL软件包以外的代码均为mowin原创,仅发表于www.ourdev.cn论坛,在遵守网站相关规定的情况下,供个人学习研究之用



上电运行后,先列出SD卡根目录所有文件及目录,信息通过串口输出,然后依次播放根目录之下WAV文件,“上一曲”按键PB03,“下一曲”按键PB02



串口设置为57600,N,8,1,无硬件数据流控制。UC3B0使用USART1,TXD=PA23,RXD=PA24

这是串口送回的排错信息



 (原文件名:term_10_19.GIF) 



以下这些方面未完成:非工作状态静音,显示屏显示,鉴别WAV文件是否符合DAC的要求(取样率,帧长),SD卡读取错误处理,遥控



关于显示屏,我想采用三个595驱动三个数码管,接在SPI口。显示曲目数,静态显示,不会产生干扰声音的有害信号,也不占CPU,简单实用。不知道大家有什么更好建议

出0入0汤圆

发表于 2008-10-20 13:57:38 | 显示全部楼层
哈哈,顶!

出0入0汤圆

 楼主| 发表于 2008-10-20 14:05:15 | 显示全部楼层
老大别光顶呀,提点建议吧,谢谢

出0入0汤圆

发表于 2008-10-20 14:18:04 | 显示全部楼层
【21楼】 mowin 雾湾

意见?哈哈,有没有想过把USB口利用起来??不过那样程序就会复杂起来,可以试着将FAT加进去,不要被文件系统给吓着了,AT的固件库做的很全,阅读下代码文档就能用上了~~

出0入0汤圆

 楼主| 发表于 2008-10-20 14:21:45 | 显示全部楼层
是不错的建议,播放U盘里的文件!看来要试试,正愁SD卡有点小,手边有个4G的U盘,哈哈……

FAT已经加入了呀,可以正常工作

出0入0汤圆

 楼主| 发表于 2008-10-20 14:28:50 | 显示全部楼层
不知道UC3B0的资源够不够用来解码APE或者FLAC等无损音频?如果可以的话,就可以多存一倍的音乐了

MP3、WMA等格式就不必了,没意思

出0入0汤圆

发表于 2008-10-20 14:34:40 | 显示全部楼层
【24楼】 mowin 雾湾

哈哈,你可以试下,感觉SRAM有可能不够,AT的方案是A0512+32MB SDRAM~~估计计算能力应该足够,但是数据流处理有些问题

出0入0汤圆

 楼主| 发表于 2008-10-20 14:37:14 | 显示全部楼层
那就不用搞那么复杂了,播放WAV吧,用容量换效果,在目前存储器不贵的情况下值得

出0入0汤圆

发表于 2008-10-20 14:43:13 | 显示全部楼层
【26楼】 mowin 雾湾

嗯,一步一步来啦,

码APE或者FLAC等无损音频小文件应该可以,但是大文件估计会断档……

出0入0汤圆

发表于 2008-10-26 10:19:16 | 显示全部楼层
记号,非常的棒,期待中

出0入0汤圆

发表于 2008-11-16 15:29:31 | 显示全部楼层
路过 有机会学一下

出0入0汤圆

发表于 2008-11-21 15:11:15 | 显示全部楼层
极好

出0入0汤圆

 楼主| 发表于 2008-11-22 14:47:59 | 显示全部楼层
如果朋友们写出更好的代码或者有什么更好的想法的话,记得共享一下哦



另小声问一下:火腿的板和代码什么时候能出炉啊?

出0入0汤圆

发表于 2008-11-22 15:17:48 | 显示全部楼层
顶一下,mowin 雾湾 好样的,找时间也弄一个哈哈

出0入0汤圆

发表于 2008-11-23 13:45:41 | 显示全部楼层
flac应该差不多!

看到有人用48k SRAM的ARM7 74Mhz做flac解码,在www.waveplayer.de

出0入0汤圆

发表于 2008-11-23 15:59:26 | 显示全部楼层
wav解码那部分的资料能发上来给我或者发我一份吗?

出0入0汤圆

发表于 2008-12-16 15:12:58 | 显示全部楼层
楼主,你这一套做下来,一共花了多少钱啊

出0入0汤圆

发表于 2008-12-16 15:18:16 | 显示全部楼层
我是个新手,问个弱弱的问题,你那其他三个板子是什么板子啊,可不可以把你用的元器件都列出来,谢谢啊

出0入0汤圆

 楼主| 发表于 2008-12-24 14:43:55 | 显示全部楼层
回41楼
最上面那块是RS232转TTL的接口板,就是一个MAX232的应用电路
中间的是TDA1543音频DAC,电路图已经给出。电路最简单的音频DAC很多,但效果能得到音响界人士认可的应该只有TDA1543了。TDA1543应该只能买到旧的,三至五块钱一片,很便宜。在这个时代,音频DAC的可选品种那真是太多了,选自己喜欢的就行,不一定要用TDA1543
最下面的是SD卡,就是一个SD卡座和排针,没有其它东西的

网上很容易找到相关数据表,自己搜一下就好了,不用我贴上了吧
最近弄了个Ku波段高频头,发现122星的国家地理频道开锁,天天看电视都没玩AVR了,哈哈……

本贴被 mowin 编辑过,最后修改时间:2008-12-24,15:03:26.

出0入0汤圆

发表于 2008-12-26 12:02:12 | 显示全部楼层
看到老乡在这可真够牛的,顶!!

出0入0汤圆

发表于 2008-12-27 12:39:49 | 显示全部楼层
【42楼】 mowin 雾湾
哈哈 ,真悠闲哈,我是被AXXXX公司120%使用中,也不能每天来泡论坛了,另外音频的板子仍在继续,只是速度蜗牛……

出0入0汤圆

发表于 2008-12-27 13:55:23 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-12-30 23:37:15 | 显示全部楼层
顶一下

出0入0汤圆

发表于 2009-1-11 02:53:39 | 显示全部楼层
请教:能用M128替代UC3B0读wave文件往TDA1543-DAC送数据吗?

出0入0汤圆

发表于 2009-1-12 13:30:07 | 显示全部楼层
我用LPC2103也做了一个类似的。

先是串口下WAV载数据到AT45db161。

播放的时候用PWM方式。

AT45db161用lpc2103的ssp驱动。

还是比较简单的

出0入0汤圆

发表于 2009-1-12 13:32:12 | 显示全部楼层
方法是不断读入AT45db161中的数据到一个循环缓冲区,

PWM播放不断从循环缓冲区取数据.

出0入0汤圆

 楼主| 发表于 2009-2-27 14:06:13 | 显示全部楼层
今天来看看网站恢复得如何!
看到贴子回来了,就顺便奉上最新的播放器程序。接受了KOK老大的建议,使用USB播放UDISK里的文件。程序已经完成,不过没有包括之前的SD卡程序,有兴趣的可以自己加上啦,应该不难的。
所有源文件在这里:
点击此处下载 ourdev_422447.zip(文件大小:1.18M) (原文件名:player_usb.zip)

硬件方面需要制作一条USB转接线,把U盘接到小板的USB口,同时直接短路板上的D5,使小板能给U盘供电即可
按键:播放/停止 PB4,上一首 PB3, 下一首 PB2

程序编写过程中mowin尽量使用开源软件:
PC机操作系统为Fedora8,很早前发过贴上过图的,一在使用,感觉良好,不过正在准备转向Slackware
编辑器当然是我最爱的VIM,在VIM之前用过一段时间D版source-insight,记得当时用了之后当即把WinAVR的PN2删除了。但是后来用了VIM之后当即把SI删除了
编译器自然是GCC,avr32-gcc
avr32程序烧写用的是AT的FLIP里的batchisp3
串口通信是minicom
尽管AVR32STUDIO也有LINUX版本,基于以下的原因,一直没有使用:
1、AVR32STUDIO与batchisp3配合有点问题,在AVR32STUDIO里烧写不了FLASH
2、mowin没有仿真器也不懂用仿真(我知道说出大家肯定会被大家笑话的……)
3、AVR32STUDIO的编辑器……
于是还是用最原始的方法,VIM编辑源文件,手工处理SOFTWARE_FRAMEWORK文件夹、Makefile,然后make。因为ATMEL把文件都准备得差不多了,所以过程也不是特别复杂。这样做虽然多花时间,但是mowin认为收获也会多一点
这里截几张图晒晒
VIM代码依缩进折叠功能

(原文件名:vim_1.png)

VIM窗口分割编辑两个文件
(PS:VIM的好处之一双手不用离开主键盘区就可以完成所有编辑工作, 鼠标基本等于多余,千万别认为鼠标一定比键盘快)

(原文件名:vim_2.png)

编译中

(原文件名:avr32-gcc-starting.png)

编译完成

(原文件名:avr32-gcc-complete.png)

烧写代码

(原文件名:batchisp-in-linux.png)

程序运行时串口显示的排错信息

(原文件名:minicom-show-player-usb.png)

出0入0汤圆

发表于 2009-2-27 22:08:00 | 显示全部楼层
【34楼】 mowin 雾湾
嘻嘻,mowin你来了
那个啥,下个星期我这边那个touch的板子如果顺利的话,第一批就会上架,那个板子可以和UC3B的小板配合使用,我送你一片PCB吧,谢谢你的支持~~

出0入0汤圆

发表于 2009-3-1 00:10:46 | 显示全部楼层
学习ing。

出0入0汤圆

 楼主| 发表于 2009-3-9 13:15:45 | 显示全部楼层
腿哥在哪里?
我来了
腿哥真的送我一片PCB吗?
if(TRUE)太好了;先帮我留着,迟些我邮购东西的时候,你让站长的MM手下把TOUCH板一起寄来是否可以?太感谢了

出0入0汤圆

发表于 2009-3-9 15:08:42 | 显示全部楼层
【47楼】 mowin 雾湾
呵呵,没问题啊,不过第一批的PCB吃紧,等第二批给你吧,这个星期就生产完咯,你什么时候下订单的时候邮购部留言就行了

PS:腿哥这名真那个啥,不过大家喜欢就行~~

出0入0汤圆

发表于 2009-3-11 23:41:53 | 显示全部楼层
什么时候能支持FAT32和中文啊?

出0入0汤圆

发表于 2009-3-17 21:12:45 | 显示全部楼层
外日,K240M
不过我不喜欢AKG的声音,上次弄了个K271S,听了几天不爽,换K501,嫌大,又换
现在用HD580,我喜欢的声音

出0入0汤圆

发表于 2009-3-20 20:32:13 | 显示全部楼层
谢谢楼主了,顶一下.
这个小板还是买得早好啊!是UC3B0256的,现在买的小板是UC3B064芯片了,大点的程序放不下了

出0入0汤圆

 楼主| 发表于 2009-4-13 15:29:19 | 显示全部楼层
有段时间没有上论坛了。
谢谢大家的支持,今天给大家带来一个新版本的播放器程序
之前的播放器程序虽然运行正常,可是在使用中发现了这样一个问题:偶尔有爆音出现,出现时间不定,有随机性,播放SD卡是这种情况并不多,播放UDISK时比较明显。可以肯定这是由于送往DAC的数据存在断流而造成。
在猛啃了"鸡肠文"版本的AVR32数据表及PDCA的应用笔记之后,有重大发现,问题在于,未利用PDCA自动重载功能。
修改PDCA部分的代码之后,经测试,发现解决了爆音问题。
意外的是音质方面也有可闻的提升!当然,有些朋友可能会对这一句拍砖。只能说,信不信由你。
请在这里下载修正过的版本
点击此处下载 ourdev_436065.zip(文件大小:1.93M) (原文件名:player_usb.zip)
这个版本里,对按键部分、播放部分也作了一定改动,至此完成了一个最基本的播放器。mowin从不自诩为发烧友,只是比同龄人更喜欢古典音乐而已,所以这样的播放器已经满足了要求,至少音质上令我满意,至于在使用上还有诸多不便的地方,比如还没有显示屏,没有支持播放列表,没有支持中文等等,由于水平有限,实在无力涉及,有能力有兴趣的朋友可以跟贴指点,谢谢。不过在现在看来,关注的人并不多......
注:程序是针对32K SRAM的UC3B0256写的,使用了8192B * 3的SRAM空间来缓冲WAV音频数据,目的是是为了降低PDCA的中断频率,减少数据断流的可能性。如果你打算把程序用在SRAM较小的芯片时,一定要重新设定缓冲区大小(在board_add.h中更改BUFFER_SIZE),以免SRAM用尽使系统不能工作
另外再多说一句:经过一番奋战,终于从Fedora8转到Slackware了。贴中播放器程序就是在Slackware中完成的,希望大家多多关注开源软件。

出0入0汤圆

发表于 2009-4-17 23:32:34 | 显示全部楼层
哈,照着mowin兄的做了一个。
用的是CS4344这块DAC,体积小巧,支持24bit 192khz。
整块电池能当随身听了。

(原文件名:DSC_9817.jpg)

软件、原理图、PCBourdev_437542.rar(文件大小:493K) (原文件名:testplayer.rar)

出0入0汤圆

发表于 2009-4-18 08:36:42 | 显示全部楼层
其实这个可以用来测试各种dac的差异,就是烧钱了点。
楼上的板子做的轻巧,照片照的也好。

出0入0汤圆

 楼主| 发表于 2009-4-20 13:07:36 | 显示全部楼层
还是【53楼】 wei1985_5 手巧,赞一个!
相比之下,我的那个显得山寨很多,汗呀
不过看到有朋友也玩WAV播放器,高兴!
今天邮局通知我快件已经到,等一下就去领
从站长那里买了转印纸,回去之后学做PCB板,学好了再跟大家分享心得
据说Touch PCB板也一起寄来,真的非常谢谢火腿老大!

出0入296汤圆

发表于 2009-4-20 13:36:56 | 显示全部楼层
You are AVR32 freaks!

出0入0汤圆

发表于 2009-4-21 11:28:24 | 显示全部楼层
各位大侠:
   问一下可以用AVRmega16U4 或AVR90USB1287+ FAT16/32+ VS1001K+ TDA1543功放搞定吗?
   只是怀疑8位AVR CPU能否支持FAT16/32文件系统?

出0入296汤圆

发表于 2009-4-21 13:25:40 | 显示全部楼层
to 【57楼】 gzm007
    你支持FAT32/16,AVR就支持……

出0入0汤圆

发表于 2009-4-22 16:59:17 | 显示全部楼层
能否提供一个FAT16静态库作为AVR 8bit MCU 的测试版?(只是编译时链接一下)

出0入0汤圆

 楼主| 发表于 2009-4-28 10:52:59 | 显示全部楼层
【57楼】 gzm007:
1、关于AVR读取FAT FS的详情请参考大侠BOZAI的超强贴:
BOZAI超强贴

2、你对一些器件还不够了解:
1)TDA1543是音频DAC而非功放,AVR是没有能力驱动TDA1543的
2)VS1001是MP3解码芯片,已经内置DAC,此时TDA1543是多余的!

出0入0汤圆

 楼主| 发表于 2009-4-28 11:01:13 | 显示全部楼层
【56楼】 Gorgon Meducer 傻孩子

积分:2726
派别:
等级:------
来自:小蚂蚁在亚都

You are AVR32 freaks!  

********************************

其实我们只是喜欢AVR32的普通人而已啦

出0入0汤圆

发表于 2009-5-1 15:24:00 | 显示全部楼层
什么时候能支持FAT32和移动硬盘啊?手上有几个多余的硬盘,能用上就好啦。

出0入0汤圆

发表于 2009-5-9 23:37:44 | 显示全部楼层

(原文件名:DSCN5053.JPG)
I2S转同轴输出板使用的数字变压器是PE65612,转换芯片是PCF2705P,有源晶振频率是11.2896MHz。
UC3B0128小板也使用这个外部时钟,要注意的是该时钟由PCF2705P输出。因为PCF2705P使用5V电压,为保险,由它输出的时钟信号经过两个电阻分压成3V。洞洞板上保留了SD卡的接口,懒得拆掉啦,虽然不用,做个留念吧,呵呵。
本人比较懒,基本照搬楼主的程序,在AVR32 STUDIO 2.1.0上成功编译。这个wav播放器使用了3个月,感觉不错,美中不足是不支持FAT32,我手上8G的U盘用不上,1G的U盘要经常换歌,有点麻烦,希望楼主早日出支持FAT32的程序。
用UC3B0128小板读硬盘可能不好,因为它不支持外部SDRAM,读写硬盘最好有16M或以上的读写缓存,这样既可以减少硬盘的读写次数,减少噪音和功耗,延长硬盘寿命,还可以提高读写速度。

出0入0汤圆

发表于 2009-5-10 08:04:12 | 显示全部楼层
给自己做个广告,用LPC2103做的。
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3321146&bbs_page_no=1&bbs_id=1032

出0入0汤圆

发表于 2009-5-11 11:43:53 | 显示全部楼层
Thanks mowin.
I may use AT mega16/32+ VS1001 + CH375+ TDA2822 + Speaker to implement it.

出0入0汤圆

 楼主| 发表于 2009-5-19 12:44:48 | 显示全部楼层
【63楼】 dk_wong ,外接DAC可能会得到更好的音质,不错,但是如果IIS转SPDIF这环做得不到位的话,你要面对JITTER的问题
内置DAC的话则没有这个问题
另外请你认真看一看44楼最后一张图片。。我觉得很奇怪为什么会有人问什么时候支持FAT32!!置于是否支持8G的UDISK我则不知道了,反正我在用4G的没有问题。

出0入0汤圆

 楼主| 发表于 2009-5-19 12:49:03 | 显示全部楼层
【65楼】 gzm007 不用客气的,我也玩过MP3板--M64+VS1003,就是站长的那块MP3板,也是参考牛人BOZAI的程序!!从那之后我才知道AVR可以读SD卡的

出0入0汤圆

发表于 2009-5-21 00:43:50 | 显示全部楼层
呵呵,被fat的字样欺骗啦,查看了一下fat.c文件,原来avr32同时支持fat12、fat16和fat32,终于用上了8G的U盘。

出0入0汤圆

发表于 2009-7-30 08:19:16 | 显示全部楼层
我想问下,如何才不爆音,因为我现在做了一个,是2K DMA - SRAM的, 也就是每次从SD卡读取数据的时间只有 1k x (1/44100)那么长的时间,也就是获取1k数据到SRAM-1, DMA做P-P模式输送数据到I2S~
因为使用了FAT系统,所以发现他在读取FAT1表的时候总是爆音,而且如果显示实时播放时间的时候更严重,请问如何处理~~~~~~

出0入0汤圆

 楼主| 发表于 2009-8-23 13:52:25 | 显示全部楼层
如前所述,爆音一定是数据断流造成的。IIS的位时钟是1.4112MHz, 如果SD卡时钟低于此值,则无法在发送完之前取得下次的数据
另外,如果系统有很多其它事情处理占用过多CPU时间,也会出现这样的问题

出0入0汤圆

发表于 2009-9-28 14:05:37 | 显示全部楼层
我做了一个,用MOWIN程序,播放WAV文件有沙沙的杂音,不清晰,不知怎么回事?复位或跳转到下一首歌曲的间隔时间内就没有杂音,不像是DA芯片的问题。



阿莫邮购的小板通过USB下载串口调试的文件,如果拔掉USB线,串口就没有输出,插上USB线就又有输出;或者小板插上mkII仿真器,就有输出,拔掉就没输出,很奇怪,不知高手们有没有碰到过?

出0入0汤圆

发表于 2009-10-6 23:36:46 | 显示全部楼层
买了UC3还没开始玩,呵呵,先标记一下……

出0入0汤圆

发表于 2009-10-7 22:16:46 | 显示全部楼层
很好

出0入0汤圆

发表于 2009-10-8 20:09:27 | 显示全部楼层
请高手指点一下71楼的问题,谢谢

出0入0汤圆

发表于 2009-10-8 21:27:55 | 显示全部楼层
好!

出0入0汤圆

 楼主| 发表于 2009-11-4 13:47:16 | 显示全部楼层
【71楼】 czc0659
由于你给出的资料太少无法判断问题所在
只能给你一些提示
1、请你使用52楼给出的程序。如果你使用的芯片是UC3B064的话,一定要把board_add.h文件
中BUFFER_SIZE的值改为1024或512
2、请测量IIS信号的TD频率是否为1.4112MHz.TF频率是否为44.1KHz,如果正常,那检查的你
的DAC

出0入0汤圆

发表于 2009-11-5 19:14:07 | 显示全部楼层
谢谢mowin的回复。

DA用ht82v737芯片(拆MP3机子得到的)。

用了44楼和52楼程序,都是一样,能隐约听到歌声,沙沙声特别吵。


最近刚把程序看懂,再找其他DA测试一下。

出0入0汤圆

发表于 2009-12-7 15:12:42 | 显示全部楼层
楼上不知道你的问题解决没有?我刚刚发现,这个问题是因为i2s的初始化不正确造成的:
        // SSC init in I2S mode.
        ssc_i2s_init(ssc, 44100, 16, 16, SSC_I2S_MODE_STEREO_OUT, FOSC0);
以上代码应该改为
        // SSC init in I2S mode.
        ssc_i2s_init(ssc, 44100, 16, 18, SSC_I2S_MODE_STEREO_OUT, FOSC0);
或者
        // SSC init in I2S mode.
        ssc_i2s_init(ssc, 44100, 16, 24, SSC_I2S_MODE_STEREO_OUT, FOSC0);
也可以。

原因因现在上班没有时间细说,关键问题就是i2s的协议和帧格式。只要认真对照一下i2s的规范和ssc_i2s_init()的文档就可以发现问题所在了

出0入0汤圆

发表于 2009-12-30 19:00:06 | 显示全部楼层
沙沙声解决了!是DA芯片的数据通信问题。

谢谢“【78楼】 eric.guo“的提醒,按照eric.guo的改法还会有点沙沙声,效果已经好很多了,但治标不治本。

细看我的DA通信协议不是I2S的协议(WS上升沿或下降沿,需延时1个周期才发送数据),是普通的数据传输协议(WS上升沿或下降沿就开始发送MSB)

如果有同仁使用没有I2S通信协议的da芯片,可按照以下方式修改:

在drivers\ssc\i2s\SSC_I2S.C文件中,有以下代码


if (mode != SSC_I2S_MODE_RIGHT_IN)
    {
      /* Set transmit clock mode:
       *   CKS - use divided clock,
       *   CKO - transmit continous clock on TK
       *   CKI - shift data on falling clock
       *   CKG - transmit continous clock on TK
       *   START - on falling TF(WS) edge
       *   STTDLY - TF toggles before last bit of last word, not before
       *            first bit on next word. Therefore: delay one cycle.
       *   PERIOD - generate framesync for each sample (FS is generated
       *            every (PERIOD + 1) * 2 clock)
       */
      ssc->tcmr = AVR32_SSC_TCMR_CKS_DIV_CLOCK              << AVR32_SSC_TCMR_CKS_OFFSET    |
                  AVR32_SSC_TCMR_CKO_CONTINOUS_CLOCK_OUTPUT << AVR32_SSC_TCMR_CKO_OFFSET    |
                  0                                         << AVR32_SSC_TCMR_CKI_OFFSET    |
                  AVR32_SSC_TCMR_CKG_NONE                   << AVR32_SSC_TCMR_CKG_OFFSET    |
                  AVR32_SSC_TCMR_START_DETECT_FALLING_TF    << AVR32_SSC_TCMR_START_OFFSET  |
                  1                                         << AVR32_SSC_TCMR_STTDLY_OFFSET |
                  (frame_bit_res - 1)                       << AVR32_SSC_TCMR_PERIOD_OFFSET;


把”1           << AVR32_SSC_TCMR_STTDLY_OFFSET |”这句话的1改成0就可以了。
STTDLY - TF toggles before last bit of last word, not before
       *            first bit on next word. Therefore: delay one cycle.

出0入0汤圆

发表于 2010-1-5 08:36:11 | 显示全部楼层

出0入0汤圆

发表于 2010-1-5 21:25:28 | 显示全部楼层
不错

出0入0汤圆

发表于 2010-1-7 17:48:34 | 显示全部楼层
回复【79楼】czc0659
-----------------------------------------------------------------------

原来你的DA不是i2s协议的,我那个DA却是严格遵照i2s协议的,不过我们的现象都是一样的。我给出的改法是让单片机输出严格的符合i2s要求的信号,你的不是i2s当然就不行了。有些DA的信号格式是可以选择的。总之用到SSC去驱动DA时还得留意一下数据格式是否吻合就对了

出0入0汤圆

发表于 2010-1-7 20:24:58 | 显示全部楼层
好贴,准备用这个阿莫买回来的开发板

出0入0汤圆

发表于 2010-2-22 20:32:40 | 显示全部楼层
【楼主位】 mowin 雾湾
SSIP就要出来了,到时候我XX一个给你哈

出0入21汤圆

发表于 2010-2-25 15:27:33 | 显示全部楼层
当我看到sony的pcm-d50时我就有冲动,当看到pcm-m10发布时就想买一个,但2k+的价格让我无法接售,当我看到这个贴子时我已下定了决心,DIY一个pcm录音机,前几天买了片WM8775,96khz24bit的ad带多路选择器,这几天学习了一下pdf感觉挺不错的,正月14去学校,毕业设计就做这个了!

出0入0汤圆

 楼主| 发表于 2010-3-2 17:27:24 | 显示全部楼层
【85楼】 kunnsd 魏坤
魏同学,以你的水平,做一个PCM录音机是轻而易举的事,支持。

【84楼】 kingofkings 技术火腿(KoK)
谢谢了

出0入0汤圆

 楼主| 发表于 2010-3-2 17:48:32 | 显示全部楼层
春节期间成功驱动3310LCD!我嫌U盘太耗电,又改回用SD卡了。加入一个简单的文件浏览器及一个播放界面,增加几个按键,用起来比以前方便多了,只是还没有完成中文部分
由于没有时间画原理图,只能把LCD及按键部分连列出来,其它与以前一样
PA14--MOSI
PA15--SCK
PA16--LCD-CS
PA17--SD-CS
PA25--MISO
PA30--LCD-D-C
PA31--LCD-RESET
PB02至PB08依次是按键PLAY、STOP、LEFT、UP、DOWN、RIGHT、CANCEL
程序:点击此处下载 ourdev_536081.rar(文件大小:1.65M) (原文件名:wave_player_lcd3310.rar)
有疑问请跟贴,不过我上网时间不多,极可能不能很及时回复,请各位见谅

出0入0汤圆

发表于 2010-3-3 12:40:59 | 显示全部楼层
mark

出235入235汤圆

发表于 2010-3-4 14:24:48 | 显示全部楼层
mark!

出235入235汤圆

发表于 2010-3-5 15:11:30 | 显示全部楼层
mowin 雾湾
请教一个问题,怎样把您的播放器项目加载到avr32 studio 中,我将您的项目解压后放到工作空间里面,然后在新建一个和解压文件夹名称相同的项目,并设置CPU型号,可是项目管理器中播放器的项目会被打叉!怎么解决呢?

出0入0汤圆

 楼主| 发表于 2010-3-5 15:55:47 | 显示全部楼层
这样呀!我的程序是Slackware下用VIM编辑,命令行下直接用AVR32 GNU Toolchain编译完成的,没有用到AVR32STUDIO
你这样试试看吧:新建一个空项目,把解压出来的wave_player_lcd3310目录下的文件(及文件夹)直接复制到新建项目的文件夹下试试看

出0入0汤圆

发表于 2010-3-6 14:40:05 | 显示全部楼层
牛!mark

出235入235汤圆

发表于 2010-3-6 16:05:11 | 显示全部楼层
【91楼】 mowin 雾湾
有机会可以写写在linux中开发avr32的教程呀!

出235入235汤圆

发表于 2010-3-9 18:48:35 | 显示全部楼层
关于使用此方案晶振使用的问题,今天向AT技术支援发了邮件,一下是得到的回复,供大家参考。
------------------------------------------------------------------------------------------
尊敬的客户,

我们的芯片可以外接2个晶体以满足你的应用要求,各个晶体的设置都是独立的, 你可以参考我们Software Framework中的示例程来完成你的频率设置. 如果你用的是UC3A0512, 你可以看看PM的示例程序,在AVR32 Studio中可以从New->Example Project->UC3A0512->Power Manager example找到它们.

值得注意的是, 我们的芯片只支持450 kHz-16 MHz的外接晶体频率范围,你要求中的16.9344MHz恐怕只能外加有源晶振来解决问题了.
同时我们也有硬件设计参考文件(checklist)来指导你晶振的连接: http://www.atmel.com/dyn/products/app_notes_mcu.asp?family_id=607

Best Regards,
Tank Tang
Atmel Technical Support Team

出0入0汤圆

发表于 2010-4-3 21:43:17 | 显示全部楼层
此机不错,研究一下准备仿一个。请问是不是这个小板?
http://www.mailshop.cn/product_detail.jsp?kind=normal&id=5594&class_id=3447&super_id=1654

出0入618汤圆

发表于 2010-4-3 22:10:55 | 显示全部楼层
回复【94楼】lyping1987
-----------------------------------------------------------------------

晶振可以用11.2896MHz @ 256fs。不过其实外部有源晶振的方案更灵活,还可以升级为TCXO。



回复【95楼】fsclub 绿林好汉
-----------------------------------------------------------------------

就是那个小板,默认配的晶振是12MHz和16MHz,自己再买只11.2896MHz贴片换掉Y1就可以产生准确的44.1KHz了。
如果DAC要求MCLK时钟,将OSC0通过GCLK引脚输出即可。

出0入0汤圆

发表于 2010-6-25 15:39:50 | 显示全部楼层
虽然是老贴,但一定要mark,正好用上。

出235入235汤圆

发表于 2010-7-22 15:23:17 | 显示全部楼层
进行时呀...

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-3-28 18:37

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

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