终于搞好 FLAC 无损格式播放,使用STM32 F103ZE软解码,文件系统FATFS,TFT FSMC,DAC T
初步搞定了,嘿嘿,听起来和WAV没差啊。硬件:
CPU:STM32F103ZE @ 72 MHZ
存储器:SD卡
DAC: TDA1543 (通过STM的I2S接口直接连接).
显示器:TFT OTM3225 通过FSMC总线驱动.
方向盘:按键
歌唱者:用了好久的轻骑兵2.0电脑音箱。
软件:
文件系统:FATFS
FLAC解码器:参考TRAXMOD
好处:跟WAV比同样的空间能多放45%左右的歌曲,快哉!
限制:由于 STM32F103ZE只有64K RAM,所以只能播放用foobar转换设置 LV2 及以下的FLAC,说得更深入点就是只能放 的 FLAC文件。不过LV2的FLAC也能压到67%左右.跟默认设置的 LV5其实差不了两三兆。
不足:只是初步试验成功,文件系统还有点问题,还没有进行省电优化,界面还没有美化和完善。雏形。
YY:等 STM32F200 普及了,有128K RAM就能支持更高 LEVEL 的 FLAC了.
至于mp3,感觉像鸡肋,有空再搞.
手头上没有好相机,图片的质量见谅啊,呵呵。
http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_608145GUNIPG.jpg
(原文件名:IMAGE_063.jpg)
http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_608160ZS3B2O.jpg
(原文件名:IMAGE_075.jpg)
http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_608158BK75XN.JPG
(原文件名:IMAG0010.JPG)
http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_608147I6GK2P.JPG
(原文件名:IMAG0012.JPG)
另外这个是之前做的WAV播放器
这个 MCU是 STM32F103RBT6,RAM只有20K,不能解码FLAC只能播放WAV,但是文件系统很稳定,兼容性非常不错,支持SDHC,现在DAC换成 PCM1793.音质相当不错。LCD 是是160*128的,忘了是什么控制芯片了.
支持一级子目录,文件按长文件名排序,选择目录.选择文件界面。
播放模式可以目录重复,整卡重复,单曲重复,整卡无重复乱序播放。
因为那个开发板上只有3个按键,所以按键功能是:
KEY1:短按,下一曲,长按下一目录.
KEY2:短按,上一曲,长按进入目录选择.
KEY3:短按进入文件选择,长按快进10秒钟.
KEY1和KE2同时按改变重复模式.
<center>http://cache.ourdev.cn/bbs_upload842621/files_33/ourdev_582262D16NSV.jpg
<center>
<center>http://cache.ourdev.cn/bbs_upload842621/files_33/ourdev_582264M913MS.jpg
<center>
<center>http://cache.ourdev.cn/bbs_upload842621/files_33/ourdev_582265EIHWUU.jpg
<center>
<center>http://cache.ourdev.cn/bbs_upload842621/files_33/ourdev_582266OA5BCL.jpg
<center> 回复【楼主位】sharpufo 风生水起月皎白
-----------------------------------------------------------------------
高手 不错,支持 厉害厉害,会不会出套件啊? flac,真厉害 楼主高手啊,搞定了FLAC软解~
能否优化flac解码算法,减少内存空间占用? 不知道像VS1053b这样的DSP芯片是怎样实现flac解码的?VS1053b加载软件插件可以实现flac解码,经测试能流畅播放绝大部分flac文件。它里面好像也没有多少RAM的,加起来不到64K...
http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_608179FW62TV.PNG
VS1053b Memory Map 有代码 就好 了/。。 软解啊,厉害 楼主是高人。听说轻骑兵倒闭了! 楼主要是贴上代码就更加完美、众乐乐了 楼主出套件,我来个!!! mark~~ 各位不要急,代码还需修改,稍后放出。 回复【楼主位】sharpufo 风生水起月皎白
-----------------------------------------------------------------------
楼主软解WAV的时候,速率能上到多少?
直接用千千静听将320KBPS的MP3转为wav,你的软解,能流畅播放么?
我用VS1003解码WAV的时候,那个速度简直就是一帧帧在听.
瓶颈是VS1003的SPI总线速度不够快. 另外,解码再高码率的flac,看到你的板子上,应该是有外部sram的,为啥不考虑用外部sram呢?这样随便就达到512Kb的内存了. 回复【14楼】liujun6037
回复【楼主位】sharpufo 风生水起月皎白
-----------------------------------------------------------------------
楼主软解wav的时候,速率能上到多少?
直接用千千静听将320kbps的mp3转为wav,你的软解,能流畅播放么?
我用vs1003解码wav的时候,那个速度简直就是一帧帧在听.
瓶颈是vs1003的spi总线速度不够快.
-----------------------------------------------------------------------
可以支持48K 44.1K 16BIT 双声道的WAV及 FLAC(FOOBAR LV2含以下设置),非常流畅,不断流.
WAV就是没有压缩的数据,不需要解码,不知道你播放WAV用的是什么MCU,确实如果SPI总线速度低会影响播放.因为比mp3多了好几倍的数据.
FLAC才是压缩的,一般就是由WAV压缩得到,不过解码后的数据跟原来的WAV是一摸一样的,不像mp3把细节都丢失了,所以叫做无损压缩. 回复【15楼】liujun6037
另外,解码再高码率的flac,看到你的板子上,应该是有外部sram的,为啥不考虑用外部sram呢?这样随便就达到512kb的内存了.
-----------------------------------------------------------------------
不是高码率,是高压缩率,需要较多的RAM.
当然高码率本身是需要更快的数据处理速度.
因为TDA1543和STM32的I2S只支持到,48K,16bit。更高码率的文件没有试.
FSMC的SRAM速度很慢的,内部的RAM跟AHB总线速度是同步的,而外部的要等效于几分频.而且我的板子的SRAM好像坏掉了,没法玩外部SRAM。
外部SRAM耗电厉害啊,一般来说能支持到48K 44K 16位 LV2 的FLAC已经达到很实用的程度。 期待套件 这个只是为下一步做便携式播放器做准备,现在只是普通8MHZ晶振,44.1K是小数分频出来的,48K是整数分频.
SDIO的读写还有兼容性的问题,对SDHC好像支持不好,而且要命的是只能读不能写,一写就出问题。
现在播放模式比较简单,只是读取根目录下的FLAC和WAV循环播放,只有一个按键,下一曲. 回复【14楼】liujun6037
回复【楼主位】sharpufo 风生水起月皎白
-----------------------------------------------------------------------
楼主软解wav的时候,速率能上到多少?
直接用千千静听将320kbps的mp3转为wav,你的软解,能流畅播放么?
我用vs1003解码wav的时候,那个速度简直就是一帧帧在听.
瓶颈是vs1003的spi总线速度不够快.
-----------------------------------------------------------------------
兄弟,WAV与源头的MP3码率有何关系?
鸟关系没有!
有关系的是你转格式时的设置:采样频率及采样位数。
设置相同的话,64kbps和320kbps作源文件,得到的WAV一样大。 回复【20楼】fsclub 绿林好汉
-----------------------------------------------------------------------
受教了.
回复【17楼】sharpufo 风生水起月皎白
-----------------------------------------------------------------------
我用STM32+VS1003,很卡. 回复【21楼】liujun6037
我用stm32+vs1003,很卡.
-----------------------------------------------------------------------
用stm32的话应该不至于很卡吧,我另外一个WAV播放器,用的是SPI连接的SD卡,读速度能到500KB/S 以上,播放的也是44.1K 16BIT立体声的WAV文件,码率是170 KBYTE/SEC,也是非常流畅。
是不是你的频率设置有问题。
还有就是需要设置缓冲区。
比如我这个 FLAC 播放器的就设置了 5个1152*4字节的 PCM输出缓冲。总共将近20K,实际上2个也够了。
为什么是1152*4字节呢,因为一个BLOCK是1152采样,解码后的数据大小是1152*4字节.
缓冲区可以根据实际大小设置. 回复【22楼】sharpufo 风生水起月皎白
回复【21楼】liujun6037
我用stm32+vs1003,很卡.
-----------------------------------------------------------------------
用stm32的话应该不至于很卡吧,我另外一个wav播放器,用的是spi连接的sd卡,读速度能到500kb/s 以上,播放的也是44.1k 16bit的wav文件,码率是170 kbyte/sec,也是非常流畅。
是不是你的频率设置有问题。
-----------------------------------------------------------------------
有没有相关资料?强烈兴趣。 mark 回复【23楼】fsclub 绿林好汉
回复【22楼】sharpufo 风生水起月皎白
回复【21楼】liujun6037
我用stm32+vs1003,很卡.
-----------------------------------------------------------------------
用stm32的话应该不至于很卡吧,我另外一个wav播放器,用的是spi连接的sd卡,读速度能到500kb/s 以上,播放的也是44.1k 16bit的wav文件,码率是170 kbyte/sec,也是非常流畅。
是不是你的频率设置有问题。
-----------------------------------------------------------------------
有没有相关资料?强烈兴趣。
-----------------------------------------------------------------------
我发过几次图片,见
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4303327
这个 MCU是 STM32F103RBT6,RAM只有20K,不能解码FLAC只能播放WAV,但是文件系统很稳定,兼容性非常不错,支持SDHC,加入CRC校验.现在DAC换成 PCM1793.音质相当不错。
支持一级子目录,文件按长文件名排序,选择目录.选择文件界面。
播放模式可以目录重复,整卡重复,单曲重复,整卡无重复乱序播放。
因为那个开发板上只有3个按键,所以按键功能是:
KEY1:短按,下一曲,长按下一目录.
KEY2:短按,上一曲,长按进入目录选择.
KEY3:短按进入文件选择,长按快进10秒钟.
KEY1和KE2同时按改变重复模式.
另外STM32F103RBT6没有 I2S接口,需要由第2个SPI接口模拟,做从机输出数据给DAC.需要一片ATMEGA48产生这个I2S主信号,是314Forever朋友介绍的方法,具体的方法可以参考他的那篇帖子. 回复【23楼】fsclub 绿林好汉
回复【22楼】sharpufo 风生水起月皎白
回复【21楼】liujun6037
我用stm32+vs1003,很卡.
-----------------------------------------------------------------------
用stm32的话应该不至于很卡吧,我另外一个wav播放器,用的是spi连接的sd卡,读速度能到500kb/s 以上,播放的也是44.1k 16bit的wav文件,码率是170 kbyte/sec,也是非常流畅。
是不是你的频率设置有问题。
-----------------------------------------------------------------------
有没有相关资料?强烈兴趣。
-----------------------------------------------------------------------
fsclub 都有兴趣的东西,强烈关注! 楼上勿要笑话。
一直想弄个最简WAV播放器,从SD播放44.1K@16BIT的WAV播放器。
我没有能力与精力,一旦听闻有此等神物,眼珠都大了一半。。。 是论坛的问题还是我机器问题,文件上传不了? 回复【27楼】fsclub绿林好汉
楼上勿要笑话。
一直想弄个最简wav播放器,从sd播放44.1k@16bit的wav播放器。
我没有能力与精力,一旦听闻有此等神物,眼珠都大了一半。。。
-----------------------------------------------------------------------
ST官方就有wav的例子,IAR下就有
..\IAR Systems\Embedded Workbench 5.4 Evaluation\arm\examples\ST\STM32F10x\STM32-Eval\STM32100B-EVAL_Demo
点击此处下载 ourdev_608278LGF4LU.rar(文件大小:5.93M) (原文件名:STM32100B-EVAL_Demo.rar)
不过貌似有点问题,我改了改,用FatFs文件系统,通过1bit的SDIO读取SD卡,通过TIM6触发DMA输出到DA,支持8/16位的单/双声道wav,开了两个512字节的缓冲区,有需要的可以参考下
点击此处下载 ourdev_608280KRY3FL.rar(文件大小:6K) (原文件名:WavPlayer代码.rar) 终于找出文件系统出错的问题,原来是扇区地址转化为字节地址会出现溢出问题。。。我的卡是16G的。。。。
狂汗。。。这个问题太隐蔽了,被害苦了。。。
现在16G卡的读取正常了。 回复【29楼】Huaan
回复【27楼】fsclub绿林好汉
楼上勿要笑话。
一直想弄个最简wav播放器,从sd播放44.1k@16bit的wav播放器。
我没有能力与精力,一旦听闻有此等神物,眼珠都大了一半。。。
-----------------------------------------------------------------------
st官方就有wav的例子,iar下就有
..\iar systems\embedded workbench 5.4 evaluation\arm\examples\st\stm32f10x\stm32-eval\stm32100b-eval_demo
点击此处下载
-----------------------------------------------------------------------
#include "stm32f10x.h"
#include "GUI.h"
#include "ff.h"
#include "waveplayer.h"
你好!缺少头文件。
请问能否整理一下资料? 不知为何,我用stm32的spi+vs1053播放320k的mp3都卡,但是用51 硬件spi + vs1053播放320的mp3没有问题 这个是上面那个用STM32F103RBT6做的WAV播放器的源代码。(狂汗,前天怎么都传不上去。。。。)
点击此处下载 ourdev_608690MSI1T8.rar(文件大小:645K) (原文件名:HELLO_WAV_PLAYER.rar)
编译环境:MDK 3.70
里面的FATFS文件系统经过修改,支持长中文文件名读取,但是文件寻址是按短文件名的,具体的说明见包里的文件。
支持一级子目录,文件按长文件名排序,选择目录.选择文件界面。
播放模式可以目录重复,整卡重复,单曲重复,整卡无重复乱序播放。
因为那个开发板上只有3个按键,所以按键功能是:
KEY1:短按,下一曲,长按下一目录.
KEY2:短按,上一曲,长按进入目录选择.
KEY3:短按进入文件选择,长按快进10秒钟.
KEY1和KE2同时按改变重复模式.
另外STM32F103RBT6没有 I2S接口,需要由第2个SPI接口模拟,做从机输出数据给DAC.需要一片ATMEGA48-20产生这个I2S主信号,是314Forever朋友介绍的方法,具体的方法可以参考他的那篇帖子.
开机后播放器会查找根目录下及一级子目录下的所有CD格式的WAV文件,并按长文件名排序,然后循环顺序播放。因为按键太少,没有暂停/播放键。如果觉得有必要可以自己加进去。
同一目录下的文件数有限制,大概在250个左右,子目录也有限制,大概在50个左右.这个没办法,RBT6 RAM太少了。不过实际使用下来感觉也没什么大问题。
需要根据你的实际硬件修改LCD驱动和按键驱动。
电路图就不贴了,就是: 带SD座和LCD的STM32开发板加 PCM1793DAC 加 ATMEGA48
SP1接SD卡,SP2接ATMEGA48和DAC.
断断续续修改,代码稍显乱,请将就看。
我觉得SPI2做从机输出I2S数据也是有好处的,这样ATMEGA48-20可以用高精度的晶振,而没有PLL带来的时钟抖动加剧的问题.就是ATMEGA48-20好像不容易买到了.
FLAC的还有问题,还需要好好完善一下. mark 今天修改了一下我之前的代码,用VS1003解码WAV,现在48K采样率,16位双声道解码正常了... 回复【35楼】liujun6037
今天修改了一下我之前的代码,用vs1003解码wav,现在48k采样率,16位双声道解码正常了...
-----------------------------------------------------------------------
祝贺你,呵呵。
我也觉得STM32 SPI不应该这么不给力。
--------------------------
(更正:上面图片中有一处文字错误,Durance应为Duration) 回复【31楼】fsclub绿林好汉
-----------------------------------------------------------------------
我把整个工程发上来,几点说明:
● 硬件:STM32F103ZET6,SDIO 口接SD卡,FSMC上挂了个 SPFD5420A 控制器的液晶,DA输出
● 软件:编译器是 IAR 5.5 或者 MDK 3.8a,固件库采用 3.3.0 版本,文件系统采用 FatFs R0.08a 版本
● 移植:用29楼的文件(WavPlayer代码.rar),你自己的工程加入FatFs后(并配制好可以使用),再加入waveplayer.c和waveplayer.h两个文件,去掉waveplayer.c文件中的#include "GUI.h"及带LCD_开头的函数即可
点击此处下载 ourdev_608745KOYPVM.rar(文件大小:2.97M) (原文件名:WAV_Player.rar) mark 这个屏:??
http://item.taobao.com/item.htm?id=3642838203 关注此贴, 应该是吧,SPFD5420A控制器,3.0寸的屏,400x240的分辨率,很多MP4都是用这个
只要控制器一样,操作起来就一样,但这个屏不是重点吧 Mark,收藏强帖! MARK 回复【41楼】Huaan
应该是吧,spfd5420a控制器,3.0寸的屏,400x240的分辨率,很多mp4都是用这个
只要控制器一样,操作起来就一样,但这个屏不是重点吧
-----------------------------------------------------------------------
不知道屏无法山寨。。。 有图纸吗? 顶高手! 厉害, LZ能不能谈谈FLAC解码的过程? 很好~!!!确实很犀利~!!! 关注,学习。 这个强,很感兴趣,期待LZ出作品! 顶 好 关注. mark mark mark 无比期待,楼主最新进展 mk 我也用ZE玩过FLAC解码,STM32解码FLAC是没有问题的。
好久都忘记了,应该几个LEVEL都可以吧。中文长文件名也都解决过了。
sdio 4bit读卡速度也有7M(金士顿2G的)不过缓存要开大,和解码矛盾了。
FLAC还是比APE要好的多了,不知道国内人为什么死守APE,
我还试过APE解码,不过要的内存太大了,没玩下去。而且解码速度估计也不够。
如果真要玩下去可以试试LM3S9B96,可以用SDRAM,还有80MHZ
另外我是从ffmpeg中改过来的 回复【59楼】gogc
-----------------------------------------------------------------------
我用的FLAC解码是从TRAMOD改过的,而TRAMOD也源于ffmpeg.
由于工作和身体状况原因,现在已经不爱玩单片机和软件了,也累了,颈椎已经出问题,容易酸痛。不能再像以前那样拼命调试代码了。
软件上现在已经可以当成一个纯播放器,操作界面也已经改好,改天有空拿个好壳子装起来,就完成了。也许就是终结版。 我也不玩stm32了,呵呵 markmark 这个要mark下。 mark 今天终于把SDIO的读取驱动调好了。
现在支持
DMA方式4 bit
中断方式 4 bit
POLLING方式 4 bit
晶振16.9344 M,4倍频到 67.7 M.
DMA方式可以跑到 3分频,22M
中断方式16分频下稳定,4.3M
POLLING方式在8分频下稳定,8.4M
如果是1bit方式 都能在4分频下稳定。
以上测试都经过实际音乐文件播放,界面操作等测试。
感觉速度跟卡的本身速度有直接关系。
可怜的SDHC 16G 在 DMA 4bit方式3分频下也才 842kb/s,在8分频下也是840kB/s左右,
而 4G的那个DMA 4bit 3分频下能 能达到 2140 KB/S在POLLING 4bit,16分频下达到1410 kB/s.
以上测试为实际FATFS文件读取测试,读块大小4KB。
写操作还有问题,因为没用到写,不打算调了。 可否共享呢。。。 没做到最好,不敢现丑. 回复【67楼】sharpufo 风生水起月皎白
没做到最好,不敢现丑.
-----------------------------------------------------------------------
没有最好,只有更好! 可怜 F205 还没普及,要不有128K RAM用起来才够 支持到 LV5。
F103外扩的既耗电又慢。 回复【69楼】sharpufo风生水起月皎白
可怜 f205 还没普及,要不有128k ram用起来才够 支持到 lv5。
f103外扩的既耗电又慢。
-----------------------------------------------------------------------
最近在电脑上试了下开源TAK格式,压缩速度比FLAC快多了,而且P0的TAK和LV8的FLAC体积差异在1MB之内。
APE属于放弃类型。 回复【70楼】90999 张耀扬
最近在电脑上试了下开源tak格式,压缩速度比flac快多了,而且p0的tak和lv8的flac体积差异在1mb之内。
ape属于放弃类型。
-----------------------------------------------------------------------
呵呵,内存需求怎么样呢。有时间可以考虑加入。
现在FLAC都还没时间完全搞定呢,比如快进快退功能。还有鸡肋MP3也还没搞。
身体也不行了,只能断断续续完善一下,能播放FLAC其实已经很开心了,一张卡变一张半用。其实什么格式都不是重点,能方便使用就行了。我现在一张16G的卡,存了500首歌,听一天都听不完一半.TDA1543的声音确实是比较有音乐感,但是声场不够开阔,解析度不够.不过我的板子是简装NOS方式的,直接电阻电容IV-LPF的。功放也是朋友送的平民老功放,音箱也是平民老音箱三菱 DS-300,(上面的轻骑兵是电脑的).连晶振都是大路货。咱平民就图个无聊时听听,自娱自乐,非发烧族.
下一步计划是用CS43122或者CS4398做,声音应该会好很多.
我也非常喜欢TDA1305那种甜甜的声音。PCM1793的要用好的运放才有那么一点感觉. mark 强的 以后也学着做个玩玩 修改了下,完善程度:
支持1级子目录
上一曲、下一曲、暂停、上一目录、下一目录.
支持4种重复方式:全部/目录/单曲/所有文件不重复乱序(随机初始化种子用ADC生成).
可进行文件选择.
呵呵,“最销魂”的还是那苗条的心形进度条。
最新播放界面:
http://cache.amobbs.com/bbs_upload782111/files_36/ourdev_618480HUNE4Q.jpg
(原文件名:DSC_0000007.jpg) 楼主代码能共享吗? 不要急啊,等我做完了啊。
这个播放器的名称是:
OOPY_MUSIC_PLAYER
OOPY是闽南语(台语)“黑鼻子”的意思,是我养过的一条可爱的狗,很机灵,可惜后来不幸病死。怀念中。。。。。。 这个LZ有点意思!理性中还有不少感性!
希望你的身体好起来,这些可以慢慢做的! 回复【76楼】dy008
-----------------------------------------------------------------------
谢谢您的吉言!
其实没有什么大碍,就是颈椎容易酸,眼睛容易累。 玩了这么多年的技术,是时候享受一下自已艰苦学习的成果了。
发烧音响技术需要日积月累,水到渠成。 最新进展:
终于把DAC换成大一些的PCM1793的板子了,运放是OPA2604。
现在STM32是SPI1做从机喂数据给DAC,而I2S信号是由ATMEGA48产生,所以不会带进PLL的影响,ATMEGA48的晶振是有源16.9344M 。数字部分和模拟部分独立线性供电。
音质提升明显。
缺点是现在只支持一种采样率44100了。
因为现在是板子拼接的,所以连线线较长,音质提升有限。如果是做板,应该还能有不少提升空间.
http://cache.amobbs.com/bbs_upload782111/files_36/ourdev_618837CYT65Z.jpg
(原文件名:DSC_0000013.jpg) 今天试着把PLL调到3倍,50mhz,播放还算流畅.
调到2倍,33mhz,就开始断断续续起来了。
然后开始超频,最高调到8倍,135mhz.貌似一切正常.
不敢这么疯狂,最后权衡利弊,把PLL定在5倍,85mhz。
SD CARD时钟是DMA 4bit方式,16分频,速度已经远远足够。 对楼主用Mega48产生的IIS很感兴趣。
IIS的主时钟 1.411M 可以由16.9344M经过PWM产生,再级联用另一个PWM产生88.2k的左右声道切换信号,其中最难最关键的就是再由88.2k产生把(16位数据/每通道)通过SPI传送出去。当然这时的另一个SPI口时钟可以设成外部驱动,时钟也同样地连接到PWM产生的1.411M中,在所有这些信号中,(包括中断处理接收WAV的数据),不能有任何的一个时钟单位时间上的错位,否则就是败笔。这里面有很多的技术细节。没整明白楼主是如何弄的。这个很有深度和难度,本人只想到以上这些,楼主可否透露一下大概流程。 回复【81楼】zhousd 银河一号
-----------------------------------------------------------------------
这个方法是314Forever 兄台介绍的方法。主要就是利用ATmega48的定时器对16.9344M时钟进行分频产生BCK,LRCK(WS)以及STM32 SPI的片选.同时16.9344作为MCLK输出给DAC. STM32 SPI 是直接输给 DAC 数据的,数据不通过ATMEGA48.
具体原理你可以搜索他的帖子。 等有空了一定要整一个AVR的模拟IIS信号。 回复【81楼】zhousd 银河一号
-----------------------------------------------------------------------
STM32的接收中断并不是接收数据而是输出数据给DAC.(准确的说是准备下一次SPI传输的数据).
呵呵,俺这播放器可是“三核”的哦,STM32一核心,ATMEGA48一核心,PCM1793一核心 找到了,多谢楼主提供的信息。找时间一定要把其IIS代码发扬光大。
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3212045&bbs_page_no=1&search_mode=3&search_text=314forever&bbs_id=9999 这种方法的不足是采样率只能固定为一种。不过还好现在也都是在听CD 44.1K 的格式。 不错 F103ZE不是带I2S么? 你拿那几个脚接TFT拉? 回复【88楼】90999 张耀扬
-----------------------------------------------------------------------
那几个脚空着呢。
F103ZE的I2S 不好用啊,PLL恶化jitter,然后那MCLK也不敢恭维,估计又是PLL而来。
因为我换了PCM1793,对时钟要求更高,所以不用F103ZE本身I2S了。
下一步想法是用一片CPLD接双晶振来应付各种采样率. 顶一个! 加进了快进、快退。 顶一个,再次支持一下。。。 回复【6楼】victzhang
-----------------------------------------------------------------------
64K还不能全部拿来解FLAC,还要系统堆栈、文件、界面、音频数据缓冲等开销。 真棒!!一直在想用STM32软解MP3 回复【93楼】sharpufo风生水起月皎白
回复【6楼】victzhang
-----------------------------------------------------------------------
64k还不能全部拿来解flac,还要系统堆栈、文件、界面、音频数据缓冲等开销。
-----------------------------------------------------------------------
ST的资源自能干这个了! 回复:sharpufo 风生水起月皎白
//F103ZE的I2S 不好用啊,PLL恶化jitter,然后那MCLK也不敢恭维,估计又是PLL而来。
//因为我换了PCM1793,对时钟要求更高,所以不用F103ZE本身I2S了。
//下一步想法是用一片CPLD接双晶振来应付各种采样率.
--------------------
对于jitter,这是用PLL倍频的时钟分频作IIS时钟的最大缺点。之前本人也想过用CPLD来做专用的IIS信号接口,但是改用CPLD也有很大的缺点,就是必需16位数据一次传送锁存,否则就要先描述出一个SPI口来,这岂不是跟MCU中现有的模式一样了?这就有点多此一举了,并且CPLD的供货远远没有MCU的供货稳定。 回复【96楼】zhousd 银河一号
-----------------------------------------------------------------------
CPLD主要是可以接双晶振,对应48000,44100这两种采样率,最大限度减少jitter的影响。另外可以做SPDIF接口,当数字转盘使用.
目前还不会深入这个方案。时间和精力有限。
做这个不是为了商业应用,纯粹是自娱自乐,供货上没什么问题。 本人DIY WAV也是自娱自乐,有道是三句不离本行。多年的习惯性思维改不了。
对于晶振频率的切换,可以用二极管开关切换啊。老式电视的色副载波4.43M和3.58M就是用二极管构成的巧妙电路作切换。 回复【98楼】zhousd银河一号
本人diy wav也是自娱自乐,有道是三句不离本行。多年的习惯性思维改不了。
对于晶振频率的切换,可以用二极管开关切换啊。老式电视的色副载波4.43m和3.58m就是用二极管构成的巧妙电路作切换。
-----------------------------------------------------------------------
哦,那么神奇?上图看看~~~~~~
页:
[1]
2