搜索
bottom↓
回复: 258

闲来无事,也想做个WAV播放器

  [复制链接]

出0入54汤圆

发表于 2013-12-23 09:21:09 | 显示全部楼层 |阅读模式
本帖最后由 lusson 于 2013-12-23 09:29 编辑

一直想做的,不过都没什么时间。
这次算是抽空弄一弄,连续加了半个月班啊,电工就是苦逼。

用的WM8740,一来便宜,二来用的人多,里面自带音量调节,省了装电位器的麻烦事。
MCU原来是打算用F103R系列的,后面看到107和105系列的I2S音频级,所以就买了105R系列了。LPF使用WM8740推荐的运放和电路,耳放使用了TPA6120。

模拟部分正负压正压使用LT1930升压,负压使用LT1931升压,都是直接电池驱动。正压再通过LDO给WM8740的模拟供电。
再使用LT1930构正升降压电路供给数字部分,DC/DC都是使用带A后缀的,频率为2.2M左右。
原理图给的XpS格式 ,装的adobe专业版不知道为什么pdf打印机用不了了。





图是用刚装的AD画的,以前摸过一下,这次算是重新用吧。
元件太密丝印层基本上都隐藏掉了,到时候直接对着图纸焊吧。

板子长宽大概为9.3*4.5

把资料放上来,也算是备份

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入54汤圆

 楼主| 发表于 2013-12-23 09:25:32 | 显示全部楼层
IC的话在淘宝上找了一家,都能单个买,价格还算公道,唯一没有的器件是电感。
JLC商城的东西虽然便宜,可是没那么全。

现在看这个图,也许把耳机座放在右上角会合适一点,地线不会包围那么大面积 。

出0入54汤圆

 楼主| 发表于 2013-12-23 09:39:32 | 显示全部楼层
本帖最后由 lusson 于 2013-12-23 09:42 编辑

电源控制这一块,开机使用power/menu键使能LT1930给VDD3V3,MCU供电后直接延时2S进主程序,2S后使能VDD3V3的LT1930,这时候按键可释放。检测耳机及SD卡是否都在,都在的话再给VCC供电。不在的话则只供VDD3V3

上电后开机按键再做menu键使用。

关机的话也是检测到menu键长按,MCU关闭VCC/VDD,按键释放,电源彻底关闭。

不过也在想让MCU进deep standby,但不知道SD卡和液晶在低功耗模式的电流。到时候再试下

USB5V插入时,使能LT1930给MCU供电,使用最普通的TP4057二片来充电,检测充电和充满端子。同时也会检测电池电压。

出0入0汤圆

发表于 2013-12-23 09:47:24 | 显示全部楼层
好啊,我的F407播放器,板子喜好了快3个月了,就是没时间写程序调试啊,唉,电工的时间都被繁杂的工作给搞的支离破碎啊

出0入0汤圆

发表于 2013-12-23 12:31:34 | 显示全部楼层
我也做了F407播放器,软件已经写的差不多了,能读SD卡mp3文件,解码mp3文件,然后播放。现在没有经历继续完善这个程序了。

出0入0汤圆

发表于 2013-12-23 13:29:30 | 显示全部楼层
右下角那个线绕的优点多

出0入54汤圆

 楼主| 发表于 2013-12-23 18:19:08 | 显示全部楼层
goolloo 发表于 2013-12-23 13:29
右下角那个线绕的优点多

是的,现在看来应该也是的。当初没注意。

出0入0汤圆

发表于 2013-12-23 19:07:59 | 显示全部楼层
只要看到播放器,一定帮顶

出0入0汤圆

发表于 2013-12-24 08:14:35 | 显示全部楼层
dxf5200 发表于 2013-12-23 12:31
我也做了F407播放器,软件已经写的差不多了,能读SD卡mp3文件,解码mp3文件,然后播放。现在没有经历继续完 ...

F407能搞定192k24bit的WAV么??

出0入0汤圆

发表于 2013-12-24 08:40:22 来自手机 | 显示全部楼层
dudududu 发表于 23 分钟前
引用:   dxf5200 发表于 2013-12-23 12:31   
我也做了F407播放器,软件已经写的差不多了,能读SD卡mp3文件,解码mp3文件,然后播放。现在没有经历继续完 ......

完全没问题,我试过最高192k 32bit wav cpu占用60%左右。

出0入0汤圆

发表于 2013-12-25 13:13:24 | 显示全部楼层
majianjia1991 发表于 2013-12-24 08:40
完全没问题,我试过最高192k 32bit wav cpu占用60%左右。

哦,这位仁兄,你也搞407播放器??
那么你的时钟是怎么搞的,我现在还在为时钟发愁呢,怎么才能兼容44.1和48、96、192

出0入0汤圆

发表于 2013-12-26 10:23:22 | 显示全部楼层
dudududu 发表于 2013-12-25 13:13
哦,这位仁兄,你也搞407播放器??
那么你的时钟是怎么搞的,我现在还在为时钟发愁呢,怎么才能兼容44.1 ...

使用PLL1707产生时钟,同时输出给PCM1795和STM32F4即可。
寒假我会发帖子详细说,现在太忙。。。

出0入54汤圆

 楼主| 发表于 2013-12-26 10:36:52 | 显示全部楼层
板子回来了,比我想象中的小啊。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-12-26 10:40:18 | 显示全部楼层
马潮老师 用mega16  就实现了 软解码  

出0入0汤圆

发表于 2013-12-26 11:44:06 来自手机 | 显示全部楼层
男小北 发表于 半小时前
马潮老师 用mega16  就实现了 软解码...

lz这套并不只是实现,而是做好。

出0入0汤圆

发表于 2013-12-26 12:52:38 | 显示全部楼层
majianjia1991 发表于 2013-12-26 10:23
使用PLL1707产生时钟,同时输出给PCM1795和STM32F4即可。
寒假我会发帖子详细说,现在太忙。。。 ...

关注,期待详情

出0入54汤圆

 楼主| 发表于 2013-12-26 15:47:58 | 显示全部楼层
呃。太久没动手,发生了一些低级BUG,记录一下:
1.复位电平搞反了,换过来能正常用SWD连接J-LINK
2.产生正VCC的一路在EN无效时也会输出电池电压,看了下电路是通的,看来得换一下方式了。
3.使用外部有源晶振11.2896M为时钟源,PLL无法锁定,怀疑是晶振输出的信号不达标。。

出0入0汤圆

发表于 2013-12-26 16:30:49 | 显示全部楼层
lusson 发表于 2013-12-26 15:47
呃。太久没动手,发生了一些低级BUG,记录一下:
1.复位电平搞反了,换过来能正常用SWD连接J-LINK
2.产生正V ...

楼上,关于第二点,我都是在所有的电源通道上加一个MOS管做总开关,建议你在升压电路前面也加一个MOS管做总开关,由MCU控制

出0入54汤圆

 楼主| 发表于 2013-12-26 16:34:55 | 显示全部楼层
dudududu 发表于 2013-12-26 16:30
楼上,关于第二点,我都是在所有的电源通道上加一个MOS管做总开关,建议你在升压电路前面也加一个MOS管做 ...

没事,LT1930可以改成升降压模式,这样会有一个电容隔离。
我先试下效果怎么样。
目前VDD3V3就是接成这种形式没有问题,就是不知道会不会影响效率。

出0入54汤圆

 楼主| 发表于 2013-12-26 16:47:32 | 显示全部楼层
3.使用外部有源晶振11.2896M为时钟源,PLL无法锁定,怀疑是晶振输出的信号不达标。

->第三个问题,试着把HSEON打开后,PLL竟然OK了,是不是晶振输入信号经过内部HSE电路被恢复到正常电压范围了。

出0入54汤圆

 楼主| 发表于 2013-12-26 20:31:10 | 显示全部楼层
板子焊好。
电压都正常。
第二点的问题通过改电路已经OK了。现在开始调程序。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入21汤圆

发表于 2013-12-26 21:48:19 | 显示全部楼层
lusson 发表于 2013-12-26 20:31
板子焊好。
电压都正常。
第二点的问题通过改电路已经OK了。现在开始调程序。

电源真壮观啊!              

出0入54汤圆

 楼主| 发表于 2013-12-26 23:41:56 | 显示全部楼层
kunnsd 发表于 2013-12-26 21:48
电源真壮观啊!

哈哈
好像还没你弄的壮观啊。
我这主要是三路DC/DC电源,每路2个电感,三路DC/DC都来源于电池。
VCC正负分别加了个电感滤波。
VCC+再稳压到5V给WM8740的VCC

出0入0汤圆

发表于 2013-12-27 08:56:17 | 显示全部楼层
kunnsd 发表于 2013-12-26 21:48
电源真壮观啊!

+10086

看得我怕怕!!

我还是喜欢直接电池供电的,那叫一个干净啊!!

出0入8汤圆

发表于 2013-12-27 09:11:52 | 显示全部楼层
PCB很漂亮

出0入0汤圆

发表于 2013-12-27 09:29:06 | 显示全部楼层
这个要支持一下了。

出0入54汤圆

 楼主| 发表于 2013-12-27 10:21:49 | 显示全部楼层
dudududu 发表于 2013-12-27 08:56
+10086

看得我怕怕!!

其实就是三路DC/DC,芯片我已经选了SOT-5的小封装的了。

如果直接用电池供电的话电池得用2节,一节的话电压低了点。
单电源涉及到的问题就是需要增加模拟电路的耦合电容。

出0入21汤圆

发表于 2013-12-27 12:07:32 | 显示全部楼层
lusson 发表于 2013-12-26 23:41
哈哈
好像还没你弄的壮观啊。
我这主要是三路DC/DC电源,每路2个电感,三路DC/DC都来源于电池。

我没有像太多发烧友那样对DC/DC用在音频电路中的反感,其实DC/DC+LDO的电源方案在示波器上看到的噪声和线性电源几乎无差,尤其是高频率的DC/DC,更听不出噪声。
我下一版播放器打算用STM32F409+FPGA/CPLD的结构,STM32处理做控制显示,用DMA+FSMC控制FPGA,FPGA处理时钟和I2S数据流,可以实现比现在的播放器更高的性能和更低的功耗,也可以试着做软解码FLAC,反正没事瞎玩呗

出0入0汤圆

发表于 2013-12-27 14:03:02 | 显示全部楼层

出0入0汤圆

发表于 2013-12-27 14:06:21 | 显示全部楼层
kunnsd 发表于 2013-12-27 12:07
我没有像太多发烧友那样对DC/DC用在音频电路中的反感,其实DC/DC+LDO的电源方案在示波器上看到的噪声和线 ...

我也打算 F407 通过DMA+FSMC 控制FPGA,MCU负责解码 FPGA 实现 数据并行转I2S。
希望大神 如果PCB打样的时候能送小弟一块。。

出0入0汤圆

发表于 2013-12-27 16:40:32 | 显示全部楼层
kunnsd 发表于 2013-12-27 12:12
直接电池供电受很多限制,全线性稳压效率低还要求电池电压高,负压更没得做了,除非虚地或再加一组电池, ...

支持,我设计的也是全DC/DC变压器提供电源,包括耳放和DAC,用了大的MLCC和电感来滤波。。
影响有多大我不知道,实际听起来用E5C做耳塞,听底噪很小,跟索尼的NE830一样,用动圈则挺不出了。

出0入54汤圆

 楼主| 发表于 2013-12-28 19:55:14 | 显示全部楼层
kunnsd 发表于 2013-12-27 12:12
直接电池供电受很多限制,全线性稳压效率低还要求电池电压高,负压更没得做了,除非虚地或再加一组电池, ...

现在I2S信号有了,量过LRCK MCLK BCK频率都对,数据应该也有。但是WM8740不出声。

我怀疑是不是初始化有问题,我用软件模拟的接口,帮忙看下这样是否有问题:


寄存器结构体定义如下:
typedef struct{
        union{
                struct{
                        unsigned short left_volume:8;
                        unsigned short ldl                :1;       
                        unsigned short m0_addr        :3;       
                        unsigned short rsv                :4;                       
                }bit;
                unsigned short all;
        }m0;
        union{
                struct{
                        unsigned short right_volume:8;
                        unsigned short ldr                :1;                       
                        unsigned short m1_addr        :3;
                        unsigned short rsv                :4;
                }bit;
                unsigned short all;
        }m1;       
        union{
                struct{
                        unsigned short mute                :1;
                        unsigned short dem                :1;
                        unsigned short ope                :1;
                        unsigned short iw0                :1;
                        unsigned short iw1                :1;
                        unsigned short rsv1                :4;
                        unsigned short m2_addr                :3;
                        unsigned short rsv                :4;
                }bit;
                unsigned short all;
        }m2;
        union{
                struct{                               
                        unsigned short i2s                :1;
                        unsigned short lrp                :1;
                        unsigned short atc                :1;
                        unsigned short sr0                :1;
                        unsigned short rev                :1;
                        unsigned short rsv1                :1;
                        unsigned short sf0                :1;
                        unsigned short sf1                :1;
                        unsigned short izd                :1;
                        unsigned short m3_addr                :3;
                        unsigned short rsv                :4;
                }bit;
                unsigned short all;
        }m3;
        union{
                struct{               
                        unsigned short rsv2                :4;
                        unsigned short diff0                :1;
                        unsigned short diff1                :1;
                        unsigned short cd0                :1;
                        unsigned short rsv1                :2;
                        unsigned short m4_addr                :3;
                        unsigned short rsv                :4;
                }bit;
                unsigned short all;
        }m4;       
        unsigned char buf1[4096];
        unsigned char buf2[4096];
        unsigned long    buf1_size;
        unsigned long    buf2_size;
        unsigned char buf_status :1;
        unsigned char buf1_rdy_flag:1;
        unsigned char buf2_rdy_flag:1;
        unsigned char rsv:5;
}WM8740_REGISTER_STRUCT;

各bit初始如下:

        wm8740_register.m0.bit.m0_addr  = 0;
        wm8740_register.m1.bit.m1_addr = 1;
        wm8740_register.m2.bit.m2_addr = 2;
        wm8740_register.m3.bit.m3_addr = 3;
        wm8740_register.m4.bit.m4_addr = 4;

        wm8740_register.m0.bit.ldl = 0;
        wm8740_register.m0.bit.left_volume = 158;
        wm8740_register.m1.bit.ldr = 0;
        wm8740_register.m1.bit.right_volume = 158;
       
        wm8740_register.m2.bit.mute = 0;                        /*soft mute off*/
        wm8740_register.m2.bit.dem = 1;                        /*de-emphasis off*/
        wm8740_register.m2.bit.ope = 0;                        /*dac output normal*/
       
        wm8740_register.m3.bit.i2s = 1;                        /*i2s w1 w0 = 100 ->16bit i2s format*/
        wm8740_register.m3.bit.lrp = 0;                        /*lrclk = High->Left channel data*/
        wm8740_register.m3.bit.sf1 = 1;
        wm8740_register.m3.bit.sf0 = 0;                        /*de-emphasis->44.1k*/

        wm8740_register.m4.bit.cd0 = 1;
       

音量的LDL和LDR我先设置成0,每次写完之后再写一次1

LOAD和DATA初始为H,CLK初始为H。我量过对应的电压都对,手头没示波器。
写每个字节程序如下:
static void wm8740_write( unsigned short write_data)
{
        unsigned char i;

        for ( i = 0 ; i < 16 ; i ++ ){
                if ( ( write_data & 0x8000) == 0x8000){
                        WM8740_DATA_H;
                }else{
                        WM8740_DATA_L;
                }
                soft_delay();
                WM8740_CLK_H;
                write_data <<= 1;
                soft_delay();
                WM8740_CLK_L;
                if ( i == 14 ){
                        WM8740_LOAD_L;
                }
        }
        WM8740_LOAD_H;
}

上电先RST和MUTE拉低,过几十ms后把RST拉高。再初始化。

出0入54汤圆

 楼主| 发表于 2013-12-28 19:57:10 | 显示全部楼层
另外对于M4的地址,手册上写的是6,实际应该是4吧?音量我是暂时初始化为158。

出0入0汤圆

发表于 2013-12-28 21:21:39 | 显示全部楼层
要配个外壳

出0入0汤圆

发表于 2013-12-28 21:38:15 | 显示全部楼层
lusson 发表于 2013-12-28 19:57
另外对于M4的地址,手册上写的是6,实际应该是4吧?音量我是暂时初始化为158。 ...

貌似大神是偏软件方向的?
电路板画得一般呀。

出0入54汤圆

 楼主| 发表于 2013-12-28 22:38:12 | 显示全部楼层
xjmlfm1 发表于 2013-12-28 21:38
貌似大神是偏软件方向的?
电路板画得一般呀。

大神不敢当。

很少画板的,的确画得不怎么样。
软件方面也不怎么样,哈哈。

出0入0汤圆

发表于 2013-12-28 22:55:13 | 显示全部楼层
lusson 发表于 2013-12-23 09:39
电源控制这一块,开机使用power/menu键使能LT1930给VDD3V3,MCU供电后直接延时2S进主程序,2S后使能VDD3V3 ...

开关机的方法很不错!学习了!

出0入54汤圆

 楼主| 发表于 2013-12-29 12:57:36 | 显示全部楼层
暂时先把WM8740放一放,花了一个晚上把文件扫描弄完了。
使用FATFS,支持长文件名。

我的方法是建一个大的链表,分目录和文件表,目录和文件也都是有对应的。
结构体如下:


/**********************USE DEFINE************************************/
#define FILE_LIST_PRE                /*File struct previous point*/
#define FILE_LIST_DIR                /*File struct dir point*/

#define LAYER_NUM                2                        /*supply max layer number*/
#define FILES_NUMBER        1000                /*supply max file number*/
#define DIR_NUMBER                50                        /*supply max dir number*/

#define MUSIC_MP3_SUPPLY                        /*supply mp3 file*/
#define MUSIC_WAV_SUPPLY                        /*supply wav file*/
#define MUSIC_FLAC_SUPPLY                        /*supply flac file*/
#define MUSIC_APE_SUPPLY                        /*supply ape file*/
#define ALL_FILE_SUPPLY                                /*supply all file*/
/**********************************************************/

typedef struct node{
#ifdef FILE_LIST_PRE
        struct node *pre;                        /*previous file*/
#endif
        char *f_name;                        /*file name*/
        struct node *next;                /*next file*/
#ifdef FILE_LIST_DIR
        void *dir;
#endif
}FILE_BUF_STRUCT;


typedef struct DIR{
        char *f_dir_name;                                                                /*dir name*/
        FILE_BUF_STRUCT  *f_point;                                                /*current file point*/
        FILE_BUF_STRUCT *f_first_point;                                        /*fist file point*/
        unsigned short files_number;                                                /*current dir's file number*/
        struct DIR *father;                                                                /*father dir*/
        struct DIR *son;                                                                        /*son dir*/
        struct DIR *current_son;                                                                /*current dir*/
        struct DIR *pre;                                                                        /*previous dir*/
        struct DIR *next;                                                                        /*next dir*/
}DIR_LIST_STRUCT;


typedef struct{
        unsigned long file_index;
        unsigned long dir_index;
        unsigned long dir_number;
        unsigned long files_number;
        DIR_LIST_STRUCT dir_list[DIR_NUMBER];               
        FILE_BUF_STRUCT file_list[FILES_NUMBER];
}LIST_STRUCT;

每个目录有父目录指针,子目录指针,同级别目录指针,文件指针,目录名(绝对地址)。
每个文件指针有父目录指针,同目录下文件前和后指针,文件名。

这样的话从目录还是从文件搜索都非常方便,如果不是RAM限制的话支持的目录和文件数目没有限制。
现在最大支持1000个文件和50个目录,再加上文件目录名的存储buf已经用到30多K了。
贴一张结果图片:



根目录也算目录,所以+1
搜索应该是有2个文件无效,所以舍去了2.
结构体list_name_buf是专门用来存目录和文件名的buf,看起来已经用了10多K了,这个如果用动态内存分配的话改一下也很简单。
定义了支持哪些文件的宏,如果不支持自动滤过不放到链表中。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入54汤圆

 楼主| 发表于 2013-12-30 10:00:37 | 显示全部楼层
虽然现在还没出声,不过打算先打下外壳。
本来在网上找一些铝合金的,但是基本上没有匹配的,都要另外打孔。
选了2个正要准备付款的时候,瞄了一眼边上移动硬盘的外壳,这不正可以用吗。淘宝上一搜,最便宜的18块钱一个。

边上是塑料的,开孔方便。MINI USB是现成的。准备使用TF卡插槽

显示方面如果开口的话很影响美观,准备就放在里面了,反正这个壳打开也很方便。
按键想了很久,准备就侧面装一开关机键,在铝上开孔装按键也太影响美观了。操作方面使用线控,淘宝上能很方便买到线控转接器。
线控加上语音提示,这样像设置这些也能盲操作了,本来听歌的话大部分时间也是盲操作的,不可能一直捧着来听。

再加上红外遥控,这样应该就OK了。

昨天本来是在想要不要加个蓝牙模块再跟手机连接手机上装个APP来操作。但想下一来工程太大,二来不知道哪里不对劲。
=============================
这样计划下来,侧边塑料就要开几个孔:
MINI USB->现成有的
指示灯->现成有的
TF卡
耳机
开关机键,因为是塑料的,都很方便,到时候不行就上电烙铁。

这个壳子内部是刚好放个2.5寸标准硬盘   10*7*0.95(cm),再加上原来电路板的空间,足够了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入54汤圆

 楼主| 发表于 2013-12-30 19:56:10 | 显示全部楼层
晚上用示波器来测试,终于发现问题。。
LRCK的排阻虚焊了,焊好后立马出声了。看来周末折腾了好久在WM8740的设置上面是浪费时间啊,还好后面放弃转做文件搜索了。

还有另外一个问题也折腾了一天。就是LCD的问题
我用的LCD是128*64的UC1701驱动
是在项目中有用到的,直接代码移植过来,也是使用DMA,但是毕竟芯片不一样,有些地方有改动。
然后一直测试都不行,都怀疑到DMA是不是有问题,总感觉发送的字节不对。
到晚上用示波器一量,发现CS会提前1个字节释放。瞬间明白了,DMA产生中断的时候是计数器为0了,但此时发送缓冲中还有一个字节正在发送呢。
立马改下代码,回头看项目中的代码,也终于明白了为什么要加上等待发送完成了。

出0入54汤圆

 楼主| 发表于 2013-12-30 20:01:54 | 显示全部楼层
顺便测了下电流。
关机时在0.1uA以下,毕竟是全关闭了。
正常工作开到音量正常,250mA,不算LCD的背光。
还是高一点,后期再把开关电源效率优化一下估计会更理想一些。

出0入0汤圆

发表于 2013-12-31 14:22:41 | 显示全部楼层
我也一直想做个播放器,先从最简单的开始熟悉文件系统,sd卡,目前准备用STM32F051+PCM1770弄一个播放WAV文件的

出0入54汤圆

 楼主| 发表于 2013-12-31 15:32:38 | 显示全部楼层
本帖最后由 lusson 于 2013-12-31 15:38 编辑
rootxie 发表于 2013-12-31 14:22
我也一直想做个播放器,先从最简单的开始熟悉文件系统,sd卡,目前准备用STM32F051+PCM1770弄一个播放WAV文 ...


可以的,欢迎交流啊。

我移植的FATFS,其实是用的别人的底层,目前SD读取还没用DMA,还是用的软件循环发送。
==============================
昨天晚上加今天上班时间偶尔弄一下。
目前进展是播放暂停上一曲下一曲都可以了,拔掉耳机能检测到几秒后自动关机。播放就是顺序播放。

把我的主循环的代码贴出来。其实就是轮循。task分成2ms和16ms的task,每个slot是2ms,在一个slot时间里所有2ms task执行完就执行16ms task,每个16ms task执行完都会查询下slot时间是否到,如果到就执行2ms task,如此循环。
实际上有点借用了目前项目中的机制,但我这个更简单一些,而且全部用c语言来实现的。




  1.             while(1){
  2.                 if ( slot_flag == 1 ){
  3.                         slot_flag = 0;
  4.                         /********************2ms task*********************/
  5.                         for (short_task_loop = 0;point_short_task[short_task_loop] != main_short_task_end;short_task_loop++){
  6.                                 point_short_task[short_task_loop]();
  7.                         }
  8.                        
  9.                         if ( (long_task_count * SLOT_TIME) >= LONG_TASK_TIME ){
  10.                                 if ( point_long_task[long_task_loop] == main_long_task_end){
  11.                                 /***********************if long task end,mainloop restart************************/
  12.                                         long_task_count = 0;
  13.                                         long_task_loop = 0;
  14.                                 }
  15.                         }else{
  16.                                 long_task_count ++;
  17.                         }
  18.                 }else{
  19.                 /************************16ms task*********************************/
  20.                         if ( point_long_task[long_task_loop] != main_long_task_end ){
  21.                                 point_long_task[long_task_loop]();
  22.                                 long_task_loop ++;
  23.                         }
  24.                 }
复制代码


分别定义2个函数指针数组。如果有新添加的模块只要把task添加到数组里去就OK了。

出0入54汤圆

 楼主| 发表于 2013-12-31 15:45:33 | 显示全部楼层
另外使用原来的FATFS,容易发生mount失败的问题。
查询了下,在初始化时加上多发了几十个DUMMY字节,另外上电后延时5秒初始化SD。
Mount的时候加了重试,总共重试10次,实际测试时重试3次才能成功。

出0入0汤圆

发表于 2013-12-31 15:45:49 | 显示全部楼层
本帖最后由 Auir 于 2013-12-31 15:54 编辑

纯从技术角度上非常鼓励楼主啊, 赞一个。 但是希望各位hifi爱好者也支持一下我们国产IC的方案,以后考虑音频方案的时候,也考虑考虑我们。我们这套方案性能远超stm32。


这是我们用ASAP1826T做得播放器。  如果  阿莫 或 音响厂家 感兴趣,可以提供bin文件,源代码,PCB文件等等。
这个帖子里附带了原理图。

1. U盘模式下,支持24bit/192kHz的FLAC ,WAV播放,24bit/48kHz的APE播放;
2.  wifi模式下,支持24bit/96kHZ,16bit/192kHZ的FLAC,WAV播放,24bit/48kHZ的APE播放
3. 支持多房间系统。


项目        说明
ios版本        ● iOS 4.2 及以上
● iPhone,iPad,iPod Touch,iPad Mini
ITunes版本        ● iTunes 10.2 及以上
● PC,iMac
Android版本        ● Android 2.2 及以上
● 安卓系统的手机和pad
网络设置        ● 华飞音盒支持点对点无线连接模式( SoftAp模式 )
● 华飞音盒支持接入现有无线网络中( Sta模式 )
● 支持WPS
支持音频格式        ● MP3、FLAC、WAV、WMA、AAC、AC3、APE
支持Airplay / DLNA 操作        ● 播放,暂停,Seek,音量控制,上一首,下一首
支持Airplay 程序        ● 苹果音乐,苹果视频
● QQ Music
● iTunes
支持DLNA程序        ● 兼容第三方通过DLNA 认证的播放器,比如:
   ■ BubbleUpnp
   ■ Samsung 音乐播放器
   ■ QQ Music
■ Skifta
支持浏览器        ● PC:IE9/10, Chrome, Firefox
● iOS/MAC OS: Safari
Web服务器支持操作        ● 设置设备在Sta模式下接入的无线网络
● 设置设备Ap用户名,密码
● 设置设备名称
● 更新设备固件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入54汤圆

 楼主| 发表于 2013-12-31 16:07:47 | 显示全部楼层
Auir 发表于 2013-12-31 15:45
纯从技术角度上非常鼓励楼主啊, 赞一个。 但是希望各位hifi爱好者也支持一下我们国产IC的方案,以后考虑音 ...

在HIFIDIY论坛看过。好像不是特别受欢迎。
其实音响这东西功能不在于多而在于精。
像我们这些代码民工的话做这东西也是出于一份热爱,对你这个可能还会有兴趣
但对于纯粹的发烧友的话你这个估计不太受欢迎,毕竟大部分的他们都不会写代码。

出0入0汤圆

发表于 2013-12-31 16:23:23 | 显示全部楼层
lusson 发表于 2013-12-31 15:45
另外使用原来的FATFS,容易发生mount失败的问题。
查询了下,在初始化时加上多发了几十个DUMMY字节,另外上 ...

你的SD卡是SDIO模式还是SPI模式?
重试是不是挑卡问题?

出0入54汤圆

 楼主| 发表于 2013-12-31 17:14:14 | 显示全部楼层
rootxie 发表于 2013-12-31 16:23
你的SD卡是SDIO模式还是SPI模式?
重试是不是挑卡问题?

是SPI的。看到之前的SDIO有BUG,就没用,准备下一版试一下SDIO,毕竟已经是STM32F105。

重试不是挑卡问题。应该是时间问题。
如果之前已经初始化过并且通讯过,然后我调试复位,这时候SD卡没有断电,这种情况再初始化是100%可以的。

出0入0汤圆

发表于 2013-12-31 18:29:52 | 显示全部楼层
lusson 发表于 2013-12-31 17:14
是SPI的。看到之前的SDIO有BUG,就没用,准备下一版试一下SDIO,毕竟已经是STM32F105。

重试不是挑卡问题 ...

以前有个帖子,MISO信号线上最好添加一个20pF的电容,另外通信线上需加上拉,你可以试试!

出0入54汤圆

 楼主| 发表于 2014-1-2 07:55:12 | 显示全部楼层
rootxie 发表于 2013-12-31 18:29
以前有个帖子,MISO信号线上最好添加一个20pF的电容,另外通信线上需加上拉,你可以试试!

...

有接上拉电阻 ,SPI的4个口都接了。
这个应该是跟SD卡上电要准备有关系 。

出0入0汤圆

发表于 2014-1-2 08:13:47 | 显示全部楼层
lusson 发表于 2013-12-30 20:01
顺便测了下电流。
关机时在0.1uA以下,毕竟是全关闭了。
正常工作开到音量正常,250mA,不算LCD的背光。

lz的工作电流真小!

我的是正负6v给lpf和耳放供电  有2.5寸屏幕 电流飙到480ma了
插在电脑usb里面虽然不用电池供电 但是也基本充不了电 得用墙上适配器来充

出0入54汤圆

 楼主| 发表于 2014-1-2 08:50:45 | 显示全部楼层
majianjia1991 发表于 2014-1-2 08:13
lz的工作电流真小!

我的是正负6v给lpf和耳放供电  有2.5寸屏幕 电流飙到480ma了

我怎么觉得还是大了点呢,我还没加LCD呢。
我的预期是200mA,到时候把SD也发成DMA,把主频降一降看下。现在是差不多80M.WM8740的模拟部分用的5V供电,如果用3.3V也能再降十多mA

出0入0汤圆

发表于 2014-1-2 11:55:56 | 显示全部楼层
关注中。。。。。。

出0入0汤圆

发表于 2014-1-2 13:12:33 | 显示全部楼层
看下,正在用AT91SAM7S64做播方器。代码方面还没头绪啊。。。PCB焊接中。。。

出0入54汤圆

 楼主| 发表于 2014-1-2 17:21:24 | 显示全部楼层
newc 发表于 2014-1-2 13:12
看下,正在用AT91SAM7S64做播方器。代码方面还没头绪啊。。。PCB焊接中。。。 ...

Wav 很简单的,读出数据再往iis模块顺序送数据就好了,其他的就是敲代码了

出0入0汤圆

发表于 2014-1-3 08:45:24 | 显示全部楼层
楼主的I2S模块和SD卡模块的程序,是用的ST的官方固件库么??

出0入0汤圆

发表于 2014-1-3 09:24:07 | 显示全部楼层
lusson 发表于 2014-1-2 17:21
Wav 很简单的,读出数据再往iis模块顺序送数据就好了,其他的就是敲代码了
...

初步是这么想的。

出0入54汤圆

 楼主| 发表于 2014-1-3 09:25:59 | 显示全部楼层
dudududu 发表于 2014-1-3 08:45
楼主的I2S模块和SD卡模块的程序,是用的ST的官方固件库么??

不知道你说的用的固件库指的什么意思。

不是直接用寄存器操作,用的库的那些初始化。用的3.5的库。STM32F105的PLL2 PLL3只有3.5的库才开始支持。

出0入0汤圆

发表于 2014-1-4 10:31:24 | 显示全部楼层
楼主怎么不用彩屏呢,12864太小了,很难做的好看界面

出0入54汤圆

 楼主| 发表于 2014-1-4 11:41:43 | 显示全部楼层
mowin 发表于 2014-1-4 10:31
楼主怎么不用彩屏呢,12864太小了,很难做的好看界面

只是自己做来玩下,随便弄就好了,彩屏数据太大,太占CPU了。用这个屏幕加上滚动可以了。这个屏是SPI的,DMA操作,基本上不占CPU

出0入0汤圆

发表于 2014-1-4 12:23:56 | 显示全部楼层
可玩玩小OLED.

出0入0汤圆

发表于 2014-1-4 12:26:04 | 显示全部楼层
newc 发表于 2014-1-2 13:12
看下,正在用AT91SAM7S64做播方器。代码方面还没头绪啊。。。PCB焊接中。。。 ...

7S64的I2S最高支持16位数据,现在看来也够用但升级无望。24位音频也比较多了。。。我画过一块板7S64+CS43L42,调着调着后来放弃。

出0入0汤圆

发表于 2014-1-4 12:26:47 | 显示全部楼层
lusson 发表于 2014-1-4 11:41
只是自己做来玩下,随便弄就好了,彩屏数据太大,太占CPU了。用这个屏幕加上滚动可以了。这个屏是SPI的, ...

期待你的作品,弄好晒些图吧

出0入54汤圆

 楼主| 发表于 2014-1-4 12:51:28 | 显示全部楼层
mowin 发表于 2014-1-4 12:26
期待你的作品,弄好晒些图吧

好的。准备下一版 PCB,不过不知道年内能不能出来。

出0入0汤圆

发表于 2014-1-4 13:30:05 | 显示全部楼层
mowin 发表于 2014-1-4 12:26
7S64的I2S最高支持16位数据,现在看来也够用但升级无望。24位音频也比较多了。。。我画过一块板7S64+CS43 ...

16位的,应该是够用了。先试试效果。后续可以再换芯片。AT91SAM7S64,资源比较平均,而且没听说有什么BUG,单芯片就可以完成了。

出0入0汤圆

发表于 2014-1-11 21:43:47 | 显示全部楼层
也想制作个wav 但是刚开始学stm32 从头开始啊!!希望楼主能详细的讲解下制作调试过程!

出0入21汤圆

发表于 2014-1-12 10:38:03 | 显示全部楼层
重做了4层PCB,将之前做的播放器进行了细节的改进





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入54汤圆

 楼主| 发表于 2014-1-12 15:01:05 | 显示全部楼层
kunnsd 发表于 2014-1-12 10:38
重做了4层PCB,将之前做的播放器进行了细节的改进

漂亮啊。
相对之前做了什么修正吗?

我也重新做板了,上面有AD1896  CPLD(MAX II)  STM32F407

我是想用CPLD来输出IIS时钟,STM32的IIS做从,这样的话对MCU的时钟就没有要求,随便换哪种MCU都行。
CPLD的话就是选择44.1或是48K的时钟,再分频出LRCK BITCK,以前只学过一点点,我估计用画原理图的方式 就能做出来。

AD1896的话到时候看效果要不要加。

然后WM8740用了2片,各一个声道。
==========================

不过板子弄得太急了,发出去后再检查 了下发现有点问题。我的MCU的管脚是在原来STM32F105  64Pin基础上改成STM32F407的100Pin,晚上看芯片手册才发现4系列和1系列有几个管脚不一样。

等下一版再改进了。这一版做出来准备找朋友帮忙调下音,毕竟这方面我不专业 。

出0入21汤圆

发表于 2014-1-12 15:10:18 | 显示全部楼层
lusson 发表于 2014-1-12 15:01
漂亮啊。
相对之前做了什么修正吗?

其实改进的不是很多,将电源改成了轻触式,简化了模拟电源,将模拟部分的电源电压由原来的正负8v降到了正负5v,DAC换成了WM8741,引脚兼容WM8740,只是控制软件要稍做调整。
LPF的运放换成了LM4562,去掉了DAC和LPF之间的耦合电容,在嘉立创打样了4层板,板子的工艺非常好。
今天实测了模拟电源的噪声,用泰克DPO2012将输入耦合调成AC,灵敏度2mv/div,短路探头显示230uv/rms本地噪声,实测正负电源示波器显示噪声不高于700uv/rms,暂停播放时耳机输出端噪声示波器显示大约500uv左右,属于高频噪声,耳机不响应,耳朵更不可闻

出0入21汤圆

发表于 2014-1-12 15:14:36 | 显示全部楼层
lusson 发表于 2014-1-12 15:01
漂亮啊。
相对之前做了什么修正吗?


新得了只PHIATON的PS500,阻抗32欧,我觉得还是很不错的,灵敏度也较高,很适合我们做的这种随身播放器使用。
题外话,我觉得WM8741不太适合用在随身听上,功耗太大,只模拟电源就要消耗5V 55mA,摸起来很热,比WM8740费电多了

出0入54汤圆

 楼主| 发表于 2014-1-12 15:18:37 | 显示全部楼层
kunnsd 发表于 2014-1-12 15:10
其实改进的不是很多,将电源改成了轻触式,简化了模拟电源,将模拟部分的电源电压由原来的正负8v降到了正 ...

外壳问题比较难解决啊。
4层板要200起步啊,我还是算了。先搞2层看下吧。

去掉耦合电容是把反相端电压也提高到2.5V吧。

你看官网里的2片的LPF,感觉比1片的还简单啊。

出0入54汤圆

 楼主| 发表于 2014-1-12 15:22:33 | 显示全部楼层
kunnsd 发表于 2014-1-12 15:14
新得了只PHIATON的PS500,阻抗32欧,我觉得还是很不错的,灵敏度也较高,很适合我们做的这种随身播放器使 ...

功耗能接受 吧,就得弄大点的电池了,我买了个4500mAH的装壳里。

另外我准备下一版把MCU和CPLD的电压降到1.8V来用,这样功耗应该可以低很多。降压DC/DC效率也会高很多。
还有就是MCU带电待机的话电源电路也能很简单了。(待机时停DC/DC,用线性降到1.8V就好了)

出0入21汤圆

发表于 2014-1-12 15:24:03 | 显示全部楼层
lusson 发表于 2014-1-12 15:18
外壳问题比较难解决啊。
4层板要200起步啊,我还是算了。先搞2层看下吧。

做这种播放器就纯属兴趣,并非理智的设计,所以基本是不考虑成本的,这几年在这上面投资的买好几台市场上的神器了

出0入21汤圆

发表于 2014-1-12 15:25:32 | 显示全部楼层
lusson 发表于 2014-1-12 15:22
功耗能接受 吧,就得弄大点的电池了,我买了个4500mAH的装壳里。

另外我准备下一版把MCU和CPLD的电压降 ...

我的这个PCB和上一版的尺寸完全一样,可以用相同的铝外壳,就是开孔很恶心

出0入21汤圆

发表于 2014-1-12 15:27:00 | 显示全部楼层
lusson 发表于 2014-1-12 15:22
功耗能接受 吧,就得弄大点的电池了,我买了个4500mAH的装壳里。

另外我准备下一版把MCU和CPLD的电压降 ...

其实CPLD耗不了多少电,主要是后面的放大器用到的双电源是很耗电的,准备搞几片ES9018玩玩

出0入54汤圆

 楼主| 发表于 2014-1-12 15:52:28 | 显示全部楼层
kunnsd 发表于 2014-1-12 15:27
其实CPLD耗不了多少电,主要是后面的放大器用到的双电源是很耗电的,准备搞几片ES9018玩玩 ...

ES9018好像比较贵啊。

CPLD不怎么耗电,MCU耗电啊。407全速得100mA往上了。

我外壳拿的移动电源壳,开孔部分是塑料的。就是屏的按键不好解决
我打算妥协,屏放里面,不开孔了。
按键的话除了开关机,其他用线控(AD键盘)。

出0入0汤圆

发表于 2014-1-12 16:13:35 | 显示全部楼层
本帖最后由 xieyudi 于 2014-1-12 16:16 编辑

我以前用F103+带耳机驱动的DA做了一个. I2S做Slave, DMA双缓冲.
SD卡用SDIO 4bit模式, 因为24M的时钟都比较稳定, 挂上文件系统都还能有6~7M/s的速度, 余量很大, 就直接用的循环.
比较感兴趣这个模拟部分.

出0入54汤圆

 楼主| 发表于 2014-1-12 16:56:58 | 显示全部楼层
xieyudi 发表于 2014-1-12 16:13
我以前用F103+带耳机驱动的DA做了一个. I2S做Slave, DMA双缓冲.
SD卡用SDIO 4bit模式, 因为24M的时钟都比较 ...

STM做IIS从的话,谁做主啊?
IIS现在用了双缓冲,DMA.
SD用的SPI模式,用的查询方式。
在主循环中2ms查询一切IIS的某个缓冲是否为空,为空则读数据到这个缓冲。
新的原理图传上来,SCH是AD10格式,我没软件转成PDF。

模拟部分其实datasheet上都有。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-1-12 18:55:54 | 显示全部楼层
我次奥,神贴留名

又见大侠大作了

屌炸天了

我等只能搞搞耳放了~~~~

出0入0汤圆

发表于 2014-1-13 18:00:24 | 显示全部楼层
本帖最后由 xieyudi 于 2014-1-13 18:04 编辑
lusson 发表于 2014-1-12 16:56
STM做IIS从的话,谁做主啊?
IIS现在用了双缓冲,DMA.
SD用的SPI模式,用的查询方式。


谢谢

我先用的WM8740, 一个外部有源晶震(11.2896M)+74计数器产生各部件所需要的脉冲(采样时钟*32, 采样时钟*2, 所以应该是计数器做主, 单片机和DAC做从). 后来一直都是音量大于某个值后就是噪音, 发送一直增大的数据发现数据大于8000h就会回到0. (后来发现是I2S数据损坏, 当时以为是DAC坏掉了).
后来换了个低功耗的DAC(WM89XX, 手机平板上用的那种), 里边自带分频电路得到(采样时钟*32, 采样时钟*2)从DAC出来, 用于驱动DMA. DAC做主, 单片机做从, 这个DAC带2套输出, 通过配置用了另一套的输出级做浮地. 时钟当然还是DAC, 单片机各一套.

先开始还是有原来那个问题, 后来发现是由于导线过长导致最高位损失, 缩短导线后(10cm的杜邦先缩短到5cm, 好像是)正常.

具体的不太记得了, 很久以前的事了.

出0入54汤圆

 楼主| 发表于 2014-1-13 19:37:10 | 显示全部楼层
xieyudi 发表于 2014-1-13 18:00
谢谢

我先用的WM8740, 一个外部有源晶震(11.2896M)+74计数器产生各部件所需要的脉冲(采样时钟*32, 采样 ...

哈哈,这样也可以搞,不错啊。CPLD都可以省了,就是灵活性没那么高。

之前有人说F103的IIS从有BUG,不过具体 也没详细看。

出0入0汤圆

发表于 2014-1-14 09:40:13 | 显示全部楼层
lusson 发表于 2014-1-13 19:37
哈哈,这样也可以搞,不错啊。CPLD都可以省了,就是灵活性没那么高。

之前有人说F103的IIS从有BUG,不过 ...

F103的I2S从模式要额外加上适当的信号调理电路,我试过能用,稳定性也还凑合。当然,编程体验来讲,比NXP/ATMEL的I2S差太远了

出0入0汤圆

发表于 2014-1-14 11:11:04 | 显示全部楼层
我的STM32F051+PCM1770 WAV播放器出声了,优美而动听,下一步用一个RAM大点,主频高点的准备搞一个PCM1794玩一玩!至少也能解码APE的

出0入54汤圆

 楼主| 发表于 2014-1-14 11:43:01 | 显示全部楼层
rootxie 发表于 2014-1-14 11:11
我的STM32F051+PCM1770 WAV播放器出声了,优美而动听,下一步用一个RAM大点,主频高点的准备搞一个PCM1794 ...

APE...
我觉得你可以以FLAC为目标好一点。

另外 PCM1794没有音量控制吧,这个是不是麻烦一点。选个有音量控制的是不是方便一点。

出0入0汤圆

发表于 2014-1-14 11:51:14 | 显示全部楼层
lusson 发表于 2014-1-14 11:43
APE...
我觉得你可以以FLAC为目标好一点。

你所言甚是,APE解码貌似有点难度
貌似AD1955 PCM1794都没有声音控制,你买器件的链接能否发给我下,谢谢!

出0入54汤圆

 楼主| 发表于 2014-1-14 11:58:13 | 显示全部楼层
rootxie 发表于 2014-1-14 11:51
你所言甚是,APE解码貌似有点难度
貌似AD1955 PCM1794都没有声音控制,你买器件的链接能否发给我下,谢谢 ...

AD1955有声音控制的。
我买哪个器件的链接啊?我分了好几家买的
STM32 CPLD在嘉立创打样板时顺便买的。

出0入0汤圆

发表于 2014-1-14 12:32:41 | 显示全部楼层
lusson 发表于 2014-1-14 11:58
AD1955有声音控制的。
我买哪个器件的链接啊?我分了好几家买的
STM32 CPLD在嘉立创打样板时顺便买的。

请教下,你那个图,2片WM8740 1片AD1896?这么做为了提高信噪比还是神马?

出0入54汤圆

 楼主| 发表于 2014-1-14 12:40:05 | 显示全部楼层
rootxie 发表于 2014-1-14 12:32
请教下,你那个图,2片WM8740 1片AD1896?这么做为了提高信噪比还是神马?


AD1896是采样率转换芯片,时钟异步,这样就可以用好一点的晶振提供时钟给AD1896再输出IIS信号,IIS时钟也就稳定了
那时候是考虑STM32的IIS主输主时钟不稳定加了这个芯片,如果是用从模式,IIS的时钟由CPLD产生的话就不会了,这时候这个芯片可有可无,当然听说加这个把采样率提升会提升声音密度,但不知真假

2片WM8740只是想试下2片和1片有什么区别,反正这芯片也不贵。

出0入0汤圆

发表于 2014-1-14 13:46:40 | 显示全部楼层
Dac  就不要做数字音量控制了,压缩动态

出0入0汤圆

发表于 2014-1-14 19:28:21 | 显示全部楼层
问一下,你那个放大电路正负15伏 大概消耗多少电流?20mA总共够了吗?

出0入0汤圆

发表于 2014-1-14 19:49:32 来自手机 | 显示全部楼层
不错不错!!

出0入54汤圆

 楼主| 发表于 2014-1-15 08:24:37 | 显示全部楼层
rootxie 发表于 2014-1-14 19:28
问一下,你那个放大电路正负15伏 大概消耗多少电流?20mA总共够了吗?

你是问我吗?我没用正负15V啊。
DC/DC是用的可调的,现在工作在正负6V左右。

20mA电流肯定不够啊,还要给耳放呢

出0入54汤圆

 楼主| 发表于 2014-1-15 08:26:12 | 显示全部楼层
kunnsd 发表于 2014-1-12 15:27
其实CPLD耗不了多少电,主要是后面的放大器用到的双电源是很耗电的,准备搞几片ES9018玩玩 ...

最新进展。
周六发出去的板子周二到了。
焊了一个晚上,目前情况如下:



工程要重新建了,原来的是F103,库都不一样。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-1-15 08:40:04 | 显示全部楼层
本帖最后由 rootxie 于 2014-1-15 08:49 编辑

我的WAV播放器也调试好了(只差红外接收控制功能未调试)
没有UI(8KRAM实在太小,pin脚也太少),只能NEXT按键选择下一首,开始按键有暂停功能,关闭按键关闭播放,返回第一首,然后通过3个灯红绿黄来指示状态 串口打印错误信息
STM32F051C8+PCM1770+SD
板子5×5cm(这么小也是没办法为了省20大洋)
锂电池供电,带充电管理
附上图片
这一版本最大的错误就是SD卡差了一根线,导致飞了7-8根线,在后面看不出来
目前播放时最大功耗大概45mA,450mAh能用10个小时,音质将就着听听,但是切歌仍存在微小的噗噗声(上下电复位及发送0数据时间已经按照PCM1770手册设置,还是存在轻微的噗噗噗)
下一版本准备仿一个类似楼主的HIFI级别,看看效果怎么样!到时候带上界面。。。。估计又是几个月后的事情了!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-1-15 08:57:09 | 显示全部楼层
另外发现一件有趣的事情,STM32F0的SPI最大18MHz,设置成24MHz,跑得也很欢啊!SD卡SPI模式最大支持25MHz

出0入0汤圆

发表于 2014-1-15 09:26:16 | 显示全部楼层
楼上这个播放器,是相当省电啊

出0入0汤圆

发表于 2014-1-15 09:33:16 | 显示全部楼层
另外楼主的AD1896哪里搞的??多少钱一片,我也想搞一片!!
TI也有类似功能的芯片,不过耗电巨大了些,六十几ma,AD1896就好一些,96k的话20ma,随身可以接受!!
另外说一下,使用AD1896做SRC,好处不仅仅是使用一颗好的时钟就可以提供稳定的I2Sclk,升频以后,首先所有数据源都被固定在同一个采样率上,这样设计LPF就只需要考虑这个采样率就可以了,另外,采样率提高了,相当于把带外噪声推到更高的频率,于是,制作模拟LPF的时候,压力就可以小很多!!
事实上,SRC是不能够无中生有的增加更多的音乐细节,那些说细节增多了的,估计就是原本的LPF设计不过关,导致听感上的变化而已

出0入0汤圆

发表于 2014-1-15 09:34:49 | 显示全部楼层
dudududu 发表于 2014-1-15 09:33
另外楼主的AD1896哪里搞的??多少钱一片,我也想搞一片!!
TI也有类似功能的芯片,不过耗电巨大了些,六 ...

ADI官网可以免费申请2pcs,一般人我不告诉他!

出0入0汤圆

发表于 2014-1-15 10:00:41 | 显示全部楼层
dudududu 发表于 2014-1-15 09:33
另外楼主的AD1896哪里搞的??多少钱一片,我也想搞一片!!
TI也有类似功能的芯片,不过耗电巨大了些,六 ...

前面加一级AD1896有实际改善的空间吗?
我觉得像AD1955这类芯片能发挥个80%基本就步入HIFI入门了!

出0入54汤圆

 楼主| 发表于 2014-1-15 10:03:27 | 显示全部楼层
dudududu 发表于 2014-1-15 09:33
另外楼主的AD1896哪里搞的??多少钱一片,我也想搞一片!!
TI也有类似功能的芯片,不过耗电巨大了些,六 ...

淘宝上有卖,20多块钱一片。如果需要的话可以发链接给你,我的WM8740什么的全在他那买的。8740是11块多一片。买2片也一样价格
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-20 16:19

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

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