搜索
bottom↓
楼主: lusson

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

  [复制链接]

出0入21汤圆

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

我觉得升频可以在FPGA/CPLD中实现,将44.1k或48k采样率的信号每两个数据中线性的插入3的数据,得到176.4k/192k的信号,88.2k/96k每两个数据中线性的插入1个数据,得到176.4k/192k的信号,这样DAC就可以一直工作在176.4k或192k上了,可以降低LPF的要求

出0入21汤圆

发表于 2014-1-15 11:13:49 | 显示全部楼层
lusson 发表于 2014-1-15 08:26
最新进展。
周六发出去的板子周二到了。
焊了一个晚上,目前情况如下:

楼主既然用到了CPLD我觉得就不要用STM32的IIS了,把IIS放在CPLD中,用FSMC刷数据就行了,把CPLD当成外存储器用就行了,省的在STM32的IIS上折腾

出0入54汤圆

 楼主| 发表于 2014-1-15 11:35:49 | 显示全部楼层
kunnsd 发表于 2014-1-15 11:13
楼主既然用到了CPLD我觉得就不要用STM32的IIS了,把IIS放在CPLD中,用FSMC刷数据就行了,把CPLD当成外存 ...

CPLD不太会,以前看过一点早就忘记了,还要临时学呢。
目前分频器把算用画原理图的方式来做就好了。

不过你的建议是可以,看来要把CPLD再学一下。

出0入0汤圆

发表于 2014-1-15 12:08:06 | 显示全部楼层
lusson 发表于 2014-1-15 11:35
CPLD不太会,以前看过一点早就忘记了,还要临时学呢。
目前分频器把算用画原理图的方式来做就好了。

你最新的原理图方便分享下吗?我想看一下CPLD的处理方式

出0入54汤圆

 楼主| 发表于 2014-1-15 12:18:20 | 显示全部楼层
rootxie 发表于 2014-1-15 12:08
你最新的原理图方便分享下吗?我想看一下CPLD的处理方式

79楼的就是了。、
CPLD我也没想好怎么接,估计到时候 得飞线

出0入0汤圆

发表于 2014-1-15 13:51:27 | 显示全部楼层
本帖最后由 majianjia1991 于 2014-1-15 14:07 编辑
lusson 发表于 2014-1-12 15:52
ES9018好像比较贵啊。

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


LZ看功率时,只需要看内核的消耗和几个用得到的外设,比如I2S,DMA,SDIO, SPI等,这几个需要全速跑的,还有一些ADC之类适当降低速度。
我这整机实测只有130多mA 此时工作状态的有LCD,背光最暗5%,SPI flash。USB3300,ADXL345待机。模拟电路不工作,时钟电路不工作。

背光最亮。放太阳下自动调的


看播放44k 16bit时,半音量推63欧的耳机。供电正负6V。
运放电路是PCM1792里面的电路,滤波我自己调过,然后加了两个BUF634,工作在半宽下。


192k 32bit时 功耗相差不大,所以就没发出来。

电流使用linear的库仑计测的,内置电阻的那种,充电芯片是电池充满3800mAh到4.1V停止,保护电池的那种。电池我设定放到3.3V停止。
实际外出使用可以在7~8个小时。

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2014-1-15 13:55:29 | 显示全部楼层
本帖最后由 majianjia1991 于 2014-1-15 14:04 编辑
lusson 发表于 2014-1-12 15:22
功耗能接受 吧,就得弄大点的电池了,我买了个4500mAH的装壳里。

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


一些DC-DC模块有burst模式,
这种模式下功耗在1~10ma时可以有70%以上的效率,不需要外接LDO。
我这我是设计成不开机的话,完全断电的,只有电池上面的保护板在耗电。插上USB或者按下轻触电源开关就可以开机

我的播放器上面用的就是这种TI的DCDC,支持这种模式。噪声很大,但是给数字电路供电没有问题。

出0入54汤圆

 楼主| 发表于 2014-1-15 16:28:27 | 显示全部楼层
majianjia1991 发表于 2014-1-15 13:55
一些DC-DC模块有burst模式,
这种模式下功耗在1~10ma时可以有70%以上的效率,不需要外接LDO。
我这我是设 ...

还是先不想下一版了,把手头这一版做好先,上面有MCU和CPLD,够我玩一段时间了。目前的电源也是设计的关机全断电。

出0入0汤圆

发表于 2014-1-15 17:26:16 | 显示全部楼层
rootxie 发表于 2014-1-15 10:00
前面加一级AD1896有实际改善的空间吗?
我觉得像AD1955这类芯片能发挥个80%基本就步入HIFI入门了! ...

实际改善当然是有的,不过也是要正确的设计电路以及参数;
1955要是发挥了80%+,不是HIFI入门,是已经很不错了;
至于ADI官网,我上次申请了两片AD1955,芯片倒是给了,不过官方人员打了好几桶电话来询问项目咨询,进度什么的,让我很内疚,没敢在继续申请了;
还是TI好,今天申请,明天就到手了,从来不问

出0入0汤圆

发表于 2014-1-16 22:16:43 | 显示全部楼层
dudududu 发表于 2014-1-15 17:26
实际改善当然是有的,不过也是要正确的设计电路以及参数;
1955要是发挥了80%+,不是HIFI入门,是已经很 ...

STM32F4的I2S SLAVE数据会错位吗?这么挫?

出0入0汤圆

发表于 2014-1-17 08:29:05 | 显示全部楼层
rootxie 发表于 2014-1-16 22:16
STM32F4的I2S SLAVE数据会错位吗?这么挫?

貌似坛子里有大神实际测试过,说从机模式I2S是有问题的

出0入0汤圆

发表于 2014-1-17 08:30:40 | 显示全部楼层
lusson 发表于 2014-1-15 10:03
淘宝上有卖,20多块钱一片。如果需要的话可以发链接给你,我的WM8740什么的全在他那买的。8740是11块多一 ...

求个连接,另外,你使用了么,能否确认是真货??
淘宝上的,我总是有些不放心啊,特别是运放这类芯片

出0入0汤圆

发表于 2014-1-17 08:33:35 | 显示全部楼层
dudududu 发表于 2014-1-17 08:29
貌似坛子里有大神实际测试过,说从机模式I2S是有问题的

哦 shit,那不是白瞎这么好的片子了,还能解码用,STM32F4的Host模式又这么垃圾 无语了!
我原先的方案是STM32F4+AT91SAM7S64来做,ARM7给双时钟由前面的来控制,ATMEL的I2S确实做得不错,可惜RAM太小

出0入0汤圆

发表于 2014-1-17 11:09:44 | 显示全部楼层
rootxie 发表于 2014-1-17 08:33
哦 shit,那不是白瞎这么好的片子了,还能解码用,STM32F4的Host模式又这么垃圾 无语了!
我原先的方案是 ...

所以嘛,我是想着F4输出I2S,然后来个AD1896或者SRC4193,强行SRC到96k采样率,使用一颗24.576好点的时钟给SRC芯片,这样再输出的I2S质量就有保证了,并且固定采样率,对于后面的DAC和模拟电路来说,也是莫大的好事。

出0入0汤圆

发表于 2014-1-17 11:49:41 | 显示全部楼层
楼主我想问一下你的LT1930和LT1931之类在哪家淘宝店买的,最近在用OP07之类的东西,做个电流电压表,用到,但是找这些不太方便,方便告知一下么

出0入0汤圆

发表于 2014-1-17 12:01:16 | 显示全部楼层
rootxie 发表于 2014-1-17 08:33
哦 shit,那不是白瞎这么好的片子了,还能解码用,STM32F4的Host模式又这么垃圾 无语了!
我原先的方案是 ...

主模式不垃圾啊,外部输入时钟,内部只是4,8,16之类的分频

出0入0汤圆

发表于 2014-1-17 12:07:29 | 显示全部楼层
majianjia1991 发表于 2014-1-17 12:01
主模式不垃圾啊,外部输入时钟,内部只是4,8,16之类的分频

如果一种时钟,没办法兼容44.1k 48k 96k 192k 的主频啊,怎么搞方便点?

出0入0汤圆

发表于 2014-1-17 12:15:25 | 显示全部楼层
本帖最后由 rootxie 于 2014-1-17 12:17 编辑

我想到一种方法,不知道可行不?
主MCU STM32F4 控制SD卡, 采用SDIO,保证速度,另外多余的频率可以用来解码,不知道解码APE是否充裕?
从MCU AT91SAM7S负责控制DAC的I2S,DAC的控制设置还是由主MCU控制,从MCU平常工作在内部晶振4M模式下,外部晶振输入2种,兼容不同音频,一旦开始播放音频,主MCU通过I/O控制模拟开关切换,然后通信告知从MCU,从MCU开始设置时钟,等待音频数据,另外不晓得模拟开关切换会给时钟带来多大恶劣影响!
主MCU和从MCU的通信方式采用I/O和SPI,SPI乒乓给从MCU提供音频数据(速度肯定够了1MB/s基本没问题,都是DMA模式)
主MCU还用来控制LCD,刷GUI,检测按键,红外,点灯,打印串口,可以考虑添加个操作系统,方便编程

出0入54汤圆

 楼主| 发表于 2014-1-17 12:17:31 | 显示全部楼层
qiqirachel 发表于 2014-1-17 11:49
楼主我想问一下你的LT1930和LT1931之类在哪家淘宝店买的,最近在用OP07之类的东西,做个电流电压表,用到, ...

已经发了
我在这家买齐了很多IC,重要的是1片价格也是那样,直接拍就OK了

出0入54汤圆

 楼主| 发表于 2014-1-17 12:19:11 | 显示全部楼层
rootxie 发表于 2014-1-17 12:15
我想到一种方法,不知道可行不?
主MCU STM32F4 控制SD卡, 采用SDIO,保证速度,另外多余的频率可以用来解 ...

模拟开关应该OK,我买的在10nS级的。其实就是几个门电路来的

出0入54汤圆

 楼主| 发表于 2014-1-17 12:22:23 | 显示全部楼层
现在有个问题
AD1896输出是固定 32bit.我明明设置了16bit输出。不是补0到32bit了

出0入0汤圆

发表于 2014-1-17 12:26:57 | 显示全部楼层
高手都出现了,围观。

出0入0汤圆

发表于 2014-1-17 12:45:17 | 显示全部楼层
rootxie 发表于 2014-1-17 12:07
如果一种时钟,没办法兼容44.1k 48k 96k 192k 的主频啊,怎么搞方便点?

我是用时钟芯片PLL1707做的时钟,可以自由切换22.5792与24.576. 设计失误,STM32F4那边用了模拟开关,DAC那边直接输入,同一路时钟,似乎没有影响。

出0入0汤圆

发表于 2014-1-17 13:21:50 | 显示全部楼层
lusson 发表于 2014-1-17 12:17
已经发了
我在这家买齐了很多IC,重要的是1片价格也是那样,直接拍就OK了 ...

你推荐的这家店很好啊,我有准备耳放,仿索尼的,电压放大LME49860(TI申请的样品)
在去这家掏一个TPA6120,看起来应该很不错的样子

出0入0汤圆

发表于 2014-1-17 13:27:49 | 显示全部楼层
majianjia1991 发表于 2014-1-17 12:45
我是用时钟芯片PLL1707做的时钟,可以自由切换22.5792与24.576. 设计失误,STM32F4那边用了模拟开关,DAC ...

是有影响,可能你的耳朵听不出来罢了 呵呵

出0入54汤圆

 楼主| 发表于 2014-1-17 13:58:59 | 显示全部楼层
qiqirachel 发表于 2014-1-17 13:21
你推荐的这家店很好啊,我有准备耳放,仿索尼的,电压放大LME49860(TI申请的样品)
在去这家掏一个TPA6120 ...

我觉得是还可以。我也买了2片6120。。
不过现在换成了AD 8Pin的耳放了,节省体积

出0入54汤圆

 楼主| 发表于 2014-1-17 15:25:00 | 显示全部楼层
求助一下。
FATFS已经使用SDIO跑起来了。
但是卡在I2S这里了。
我使用的是I2S3。使用DMA传送,目前还没有用双DMA指针。
I2S跑起来了,CLK和WS时钟都是对的,不过I2S_DATA引脚(PB4)波型不对。一开始是高电平非常低,只有0.7V左右,直接配置为IO输出也是这样。我怀疑是CPLD没程序拉低的,所以把这个脚跟CPLD连接断开,但I2S输出还是不对。但作为普通IO可以输出高低电平了。
目前该脚配置如下:
  1.         GPIO_InitStructure.GPIO_Pin                    = GPIO_Pin_4;
  2.         GPIO_InitStructure.GPIO_Mode                   = GPIO_Mode_AF;
  3.         GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  4.         GPIO_InitStructure.GPIO_Speed                  = GPIO_Speed_50MHz;
  5.         GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  6.         GPIO_Init ( GPIOB, &GPIO_InitStructure );
  7.         GPIO_PinAFConfig(GPIOB,GPIO_PinSource4,GPIO_AF_I2S3ext);
复制代码


以上把最后一句修改成:
        
  1. GPIO_PinAFConfig(GPIOB,GPIO_PinSource4,GPIO_AF_SPI3);
复制代码

效果也是一样的。

出0入0汤圆

发表于 2014-1-17 16:10:24 | 显示全部楼层
lusson 发表于 2014-1-17 15:25
求助一下。
FATFS已经使用SDIO跑起来了。
但是卡在I2S这里了。

下面那个配置没错的话 问题应该不在这里。

出0入0汤圆

发表于 2014-1-17 16:11:15 | 显示全部楼层
rootxie 发表于 2014-1-17 13:27
是有影响,可能你的耳朵听不出来罢了 呵呵

我木耳        

出0入0汤圆

发表于 2014-1-17 17:48:25 | 显示全部楼层
rootxie 发表于 2014-1-17 12:15
我想到一种方法,不知道可行不?
主MCU STM32F4 控制SD卡, 采用SDIO,保证速度,另外多余的频率可以用来解 ...

呵呵,兄弟,你这个搞的太麻烦了,事实上,用一颗时钟,STM32F4内部的PLL是可以正确输出各种频率的(44.1、48、88.2、96、176.4、192)
之前我是用手一个一个推算,看看怎么分频倍频最接近实际采样率,发现计算量太大,于是搞个EXCEL,写了一小段 VBA,让电脑帮忙算,试了一些常见的晶振,最后,我神奇的发现11.0592完全可以搞定,而且误差为零

出0入0汤圆

发表于 2014-1-17 18:09:37 | 显示全部楼层
dudududu 发表于 2014-1-17 17:48
呵呵,兄弟,你这个搞的太麻烦了,事实上,用一颗时钟,STM32F4内部的PLL是可以正确输出各种频率的(44.1 ...

11.0592MHz即可?方便将计算的系数传上来不?

出0入54汤圆

 楼主| 发表于 2014-1-17 20:09:31 | 显示全部楼层
majianjia1991 发表于 2014-1-17 16:10
下面那个配置没错的话 问题应该不在这里。

IO弄错了。
I2S3的SD应该是PB5
PB4是叫I2S_ext_SD..
不知道怎么个用法

出0入0汤圆

发表于 2014-1-17 20:33:29 | 显示全部楼层
lusson 发表于 2014-1-17 20:09
IO弄错了。
I2S3的SD应该是PB5
PB4是叫I2S_ext_SD..

这是双工的I2S输入线

出0入54汤圆

 楼主| 发表于 2014-1-17 21:31:27 | 显示全部楼层
majianjia1991 发表于 2014-1-17 20:33
这是双工的I2S输入线

现在有声音了。
不过声音不对。
感觉声音是左右声道抵消后的声音。。。
试了下跳过AD1896也是一样的。
晚上再调调。。

还有一个问题,关电源时冲机声比较大。。

出0入0汤圆

发表于 2014-1-17 21:34:47 | 显示全部楼层
rootxie 发表于 2014-1-17 18:09
11.0592MHz即可?方便将计算的系数传上来不?

明天上班抽时间发上来,本来截图上传来着,但是公司网络把附件拦截了,郁闷

出0入0汤圆

发表于 2014-1-17 21:35:42 | 显示全部楼层
lusson 发表于 2014-1-17 21:31
现在有声音了。
不过声音不对。
感觉声音是左右声道抵消后的声音。。。

没有搞个继电器,延时链接耳机和提前断开耳机么?

出0入21汤圆

发表于 2014-1-17 21:36:29 | 显示全部楼层
我强烈推荐将IIS放在CPLD内,把CPLD当作外部存储器用DMA+FSMC送数据,在CPLD上接上双时钟

出0入0汤圆

发表于 2014-1-17 21:43:14 | 显示全部楼层
kunnsd 发表于 2014-1-17 21:36
我强烈推荐将IIS放在CPLD内,把CPLD当作外部存储器用DMA+FSMC送数据,在CPLD上接上双时钟 ...

魏兄,那CPLD还要扩展SRAM吗?

出0入0汤圆

发表于 2014-1-17 22:04:53 | 显示全部楼层
感谢分享~~

出0入54汤圆

 楼主| 发表于 2014-1-17 22:15:52 | 显示全部楼层
kunnsd 发表于 2014-1-17 21:36
我强烈推荐将IIS放在CPLD内,把CPLD当作外部存储器用DMA+FSMC送数据,在CPLD上接上双时钟 ...

嗯。一步一步来。
不过要FSMC刷的话现在没连接,不知道用SPI传送够不够。

出0入54汤圆

 楼主| 发表于 2014-1-17 22:16:39 | 显示全部楼层
dudududu 发表于 2014-1-17 21:35
没有搞个继电器,延时链接耳机和提前断开耳机么?

没,没想那么 多。
不过自己听的话能接受。关机前先把耳机拿掉就好了

出0入21汤圆

发表于 2014-1-17 22:19:15 | 显示全部楼层
rootxie 发表于 2014-1-17 21:43
魏兄,那CPLD还要扩展SRAM吗?

挂SRAM当然最好,不挂也行,就是FSMC频繁操作,当然也就不能很好的体现DAM的效果

出0入54汤圆

 楼主| 发表于 2014-1-17 22:40:16 | 显示全部楼层
lusson 发表于 2014-1-17 21:31
现在有声音了。
不过声音不对。
感觉声音是左右声道抵消后的声音。。。

看来是声道没设置成功。
我是用2片WM8740,所以需要各设置成左右单声道 ,如果没设置成功就是现在这效果。
设置这个通过寄存器位M4的DIF1和DIF0来设置,当中有一段描述,需要先解锁M4寄存器。是通过M2的BIT5-BI8写1来解锁,不过现在写了也还不行。再啃datasheet

以下是datasheet描述:
To control the WM8740 in software differential mode register M4 must be written to. A ‘key’ register
write must be made to register M2 to allow access to register M4 which is ‘locked’ as default. Bits B5
to B8 of register M2 must be set to ‘1’ (0x01e0).
With register M4 ‘unlocked’, bits B4 and B5 may be used to set the required differential output mode;
normal stereo, reversed stereo, mono left or mono right, as shown in Table 18.

出0入54汤圆

 楼主| 发表于 2014-1-17 22:53:22 | 显示全部楼层
已经设置了还不起作用。
看来应该是我把硬件选择差分模式的引脚DIFFHW按照以前单片的接法接到地去了。
datasheet中有一句有描述:
Note: DIFFHW mode pin may be used to achieve the same result by hardware means

明天把这个引脚接高电平试下看。不折腾了。

出0入0汤圆

发表于 2014-1-18 10:01:54 | 显示全部楼层
lusson 发表于 2014-1-17 22:16
没,没想那么 多。
不过自己听的话能接受。关机前先把耳机拿掉就好了  ...

这个看来必须有。。我的里面也没设计这个电路。开始播放的时候“啪”的一声,播放完成后又“蹦”一下

出0入54汤圆

 楼主| 发表于 2014-1-18 10:28:02 | 显示全部楼层
majianjia1991 发表于 2014-1-18 10:01
这个看来必须有。。我的里面也没设计这个电路。开始播放的时候“啪”的一声,播放完成后又“蹦”一下 ...

开机的声音很小,关机的声音很大。。

-----------------------------------------------------
目前进展。把DIFFHW拉高之后能正常出声了。。。
不过又有新的问题出现了。。
单声道模式音量不受控制?现在是最大输出。

出0入0汤圆

发表于 2014-1-18 10:39:56 | 显示全部楼层
lusson 发表于 2014-1-17 22:40
看来是声道没设置成功。
我是用2片WM8740,所以需要各设置成左右单声道 ,如果没设置成功就是现在这效果 ...

不是同一组I2S给两片8740,然后分别设置两片8740为单声道左和单声道右么??

出0入0汤圆

发表于 2014-1-18 10:40:31 | 显示全部楼层
majianjia1991 发表于 2014-1-18 10:01
这个看来必须有。。我的里面也没设计这个电路。开始播放的时候“啪”的一声,播放完成后又“蹦”一下 ...

我的播放器加了两个小继电器

出0入54汤圆

 楼主| 发表于 2014-1-18 10:59:02 | 显示全部楼层
dudududu 发表于 2014-1-18 10:39
不是同一组I2S给两片8740,然后分别设置两片8740为单声道左和单声道右么?? ...

是同一组I2S给2片8740。
但是软件设置一直不成功。按照datasheet上的把M2的bit5-bit8设置为1再设置M4,也不成功。

看到datasheet上有这一句:
Note: DIFFHW mode pin may be used to achieve the same result by hardware means.

就想是不是硬件也要设置为差分模式。

目前结果来看进入了硬件设置模式,所有软件操作都无效了。

不过设置硬件还是软件模式不是应该是PIN24 MODE引脚吗

出0入0汤圆

发表于 2014-1-18 11:10:43 | 显示全部楼层
rootxie 发表于 2014-1-17 18:09
11.0592MHz即可?方便将计算的系数传上来不?

晶振  11.0592     

MCLK 使能                                                                       
采样率        /M        VOC输入频率        *N                VOC输出频率        /R        PLL_I2S_CLK        I2S_DIV        ODD                FS                        误差
44.1                6         1.8432                196                361                        2        180.6336                8                0                44.100000         0.000000%
48                6         1.8432                 200                369                        2        184.3200                7                1                48.000000         0.000000%
88.2                6         1.8432                 196                361                        2        180.6336                4                0                88.200000         0.000000%
96                6         1.8432                 200                369                        3        122.8800                2                1                96.000000         0.000000%
176.4        6         1.8432                 196                361                        2        180.6336                2                0                176.400000         0.000000%
192                9         1.2288                 320                393                        2        196.6080                2                0                192.000000         0.000000%

MCLK 失能  16BIT
44.1                6         1.8432                 196                 361                         4         90.3168                 32                 0                44.100000         0.000000%
48                6         1.8432                 200                 369                         4         92.1600                 30                 0                48.000000         0.000000%
88.2                6         1.8432                 196                 361                         4         90.3168                 16                 0                88.200000         0.000000%
96                6         1.8432                 200                 369                         4         92.1600                 15                 0                96.000000         0.000000%
176.4        6         1.8432                 196                 361                         4         90.3168                 8                 0                176.400000         0.000000%
192                6         1.8432                 200                 369                         4         92.1600                 7                 1                192.000000         0.000000%

MCLK 失能  32BIT
44.1                6         1.8432                 196                 361                         4         90.3168                 16                 0                44.100000         0.000000%
48                6         1.8432                 200                 369                         4         92.1600                 15                 0                48.000000         0.000000%
88.2                6         1.8432                 196                 361                         4         90.3168                 8                 0                88.200000         0.000000%
96                6         1.8432                 200                 369                         4         92.1600                 7                 1                96.000000         0.000000%
176.4        6         1.8432                 196                 361                         4         90.3168                 4                 0                176.400000         0.000000%
192                6         1.8432                 200                 369                         2         184.3200                 7                 1                192.000000         0.000000%


STM32F4的I2S时钟,在使能MCLK输出时,FS = I2SxCLK / [256*(2*I2SDIV)+ODD)],I2SDIV最小值为2,ODD为0,所以对于192k采样率,I2S_CLK = 192000*256*(2*2+0)= 196.608MHz;datasheet里面有定义I2S PLL输出频率不超过192MHz,也就是说,在使能MCLK的时候,想要播放192k文件,需要小超频一下,个人猜测以STM2F4的体质,没啥大问题
不过话又说回来,F4的I2S质量还是不太理想,所以最好是外界一个SRC什么的,这样就可以改善I2S质量,同时不需要F4输出MCLK,于是就可以降低I2S_CLK,也就完全不需要超频了;
还有一点,datasheet里面有说到VOC的输入频率要在1NHz~2MHz之间,并且建议取2MHz,这样可以使得jitter最小,但是使用11.0592的晶振嘛,就只能1.8432了。

出0入0汤圆

发表于 2014-1-18 11:12:29 | 显示全部楼层
我去,编辑页面对得很整齐的,怎么一发上来就全歪了

出0入0汤圆

发表于 2014-1-18 11:27:22 | 显示全部楼层
本帖最后由 dudududu 于 2014-1-18 11:29 编辑
lusson 发表于 2014-1-18 10:59
是同一组I2S给2片8740。
但是软件设置一直不成功。按照datasheet上的把M2的bit5-bit8设置为1再设置M4,也 ...


我还没有开始搞8740,不过看datasheet上的描述,个人认为 6pin应该不接,内部下拉至低电平,这样就不是differential mono mode,这时候,24pin的高低电平才是选择硬件控制/软件控制,如果6pin 接高电平,就是differential mono mode,此时24pin高电平表示rihgt mono mode,低电平表示left mono mode,也就是软件控制无法被选中,于是软件控制失效,实际上不知道是不是这样的。
而且,貌似4pin也是不能高电平的,高电平就是8 x fs mode,也是属于硬件模式。

出0入54汤圆

 楼主| 发表于 2014-1-18 11:29:20 | 显示全部楼层
dudududu 发表于 2014-1-18 11:27
我还没有开始搞8740,不过看datasheet上的描述,个人认为 6pin应该不接,内部下拉至低电平,这样就不是di ...

嗯。
刚再看了遍,应该就是你说的这样。
首先是看DIFFHW和MODE8X,如果这两个有效的话就是硬件模式。如果这两个无效再来看MODE引脚,如果为高就为软件模式,为低就为硬件模式。。

出0入0汤圆

发表于 2014-1-18 11:30:29 | 显示全部楼层
lusson 发表于 2014-1-18 11:29
嗯。
刚再看了遍,应该就是你说的这样。
首先是看DIFFHW和MODE8X,如果这两个有效的话就是硬件模式。如果 ...

那你试试,如果真是这样,那么我就可以少走点弯路

出0入54汤圆

 楼主| 发表于 2014-1-18 12:02:37 | 显示全部楼层
dudududu 发表于 2014-1-18 11:30
那你试试,如果真是这样,那么我就可以少走点弯路

哎,终于搞定了。。
我发现WM公司的datasheet真的是真真假假啊。

之前在网上找过资料,说是DIFF[1:0]有问题,datasheet上顺序是按00,10,01,11来排序的,实际应该是00 01 10 11,刚才验证了下,的确是这样的。

然后就是M0-M4寄存器地址。
M0-M3都是顺序的0,1,2,3。结果到了M4跳成了6。我自作聪明的以为这是有问题的,应该为4。但现实是,M4的地址还真是6。。。。。。。。。

出0入0汤圆

发表于 2014-1-18 13:41:07 | 显示全部楼层
lusson 发表于 2014-1-18 12:02
哎,终于搞定了。。
我发现WM公司的datasheet真的是真真假假啊。

很好,我记下了
怎么样,听起来爽不??

出0入54汤圆

 楼主| 发表于 2014-1-18 17:52:39 | 显示全部楼层
dudududu 发表于 2014-1-18 13:41
很好,我记下了
怎么样,听起来爽不??

这个我还真不好评论啊。。
先把软件完善了再说。
不过用示波器测试的话开关电源干扰比较大。有几十mV.。不过都是2M的,不知道有没有影响 。。

出0入54汤圆

 楼主| 发表于 2014-1-18 19:25:07 | 显示全部楼层
声音感觉比我单片的要好,能让我静下来听。。
不过发生一个插曲。
下班想把代码拷到U盘带回家。想右键压缩后再发送的,然后我神奇的按了SHIFT+D。。。缓过神来停止来不及了
还好今天改的东西不多,不然我就要郁闷了。

出0入0汤圆

发表于 2014-1-18 21:04:48 | 显示全部楼层
lusson 发表于 2014-1-18 19:25
声音感觉比我单片的要好,能让我静下来听。。
不过发生一个插曲。
下班想把代码拷到U盘带回家。想右键压缩 ...

shift+d 不是一个好习惯

出0入54汤圆

 楼主| 发表于 2014-1-19 18:10:37 | 显示全部楼层
本帖最后由 lusson 于 2014-1-19 18:13 编辑
dudududu 发表于 2014-1-18 21:04
shift+d 不是一个好习惯


的确是个不好的习惯 。只是担心硬盘空间不够用习惯了。昨天对应了一些隐含的BUG,删掉了代码,今天到很晚才查出来。

目前只对应了WAV文件,可以播44.1和48还有96,不过96的文件没测试。今天本来想对应MP3的,但加进去一编绎一堆的错误,想想就算了。大不了把MP3转回WAV来播放。
FLAC暂时也不加了,先就这样听着。看稳定后调整下LPF。

硬件参数是:
MCU  SFM32F407VI              1MB FLASH 192KB RAM       使用25M有源晶振提供时钟


  104 740 bytes of readonly  code memory
   88 360 bytes of readonly  data memory
   60 462 bytes of readwrite data memory

以上是编绎的结果。其实RAM可以不用这么大,我是在里面建了个链表,把所有的文件信息存起来了,这个就占了50KB吧。

TF卡使用SDIO
I2S使用I2S3

SRC  AD1896,输出是96K(使用24.576M有源晶振)
DAC   WM8740*2,都设置在单声道工作模式。
LPF     AD8472
耳放   AD8397

电源:
  MCU   LT1930升降压+LDO稳压   3.3V
  其他数字   LDO稳压3.3V
  DAC 模拟部分为   LT1930升压到6V  LDO(MCP1702)稳压到5V
  LPF和耳放:LT1930升到6V(和前面的DAC的6V是同一个)  LT1931升到-6V

显示:暂时无。
控制指示:LED
控制:线控(国际标准)    功能:单击音量+-      双击上一曲下一曲    长按切换播放模式。中间键长按开机,再长按关机。短按播放/暂停

目前测下来功耗已经有400多mA了,使用的4500mAh的电池。

软件部分估计先这样对应,下一步准备学一下verilog HDL....

内部图:
外部图:

本帖子中包含更多资源

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

x

出0入54汤圆

 楼主| 发表于 2014-1-19 18:22:34 | 显示全部楼层
所有接口在第一张图右边,我不太想影响美观,所以金属外壳上就没去开孔了。
从上到下依次是TF卡  LED  MINI USB接口  耳机(带线控)接口        都是塑料 ,所以开孔还好,我只用了刀子加电铬铁就搞定,虽然有点丑。大概还能放下一个立式按键开关的位置。

出0入0汤圆

发表于 2014-1-19 20:15:58 | 显示全部楼层
lusson 发表于 2014-1-19 18:22
所有接口在第一张图右边,我不太想影响美观,所以金属外壳上就没去开孔了。
从上到下依次是TF卡  LED  MINI ...

楼主上高清大图吧,模模糊糊看着不爽啊

出0入54汤圆

 楼主| 发表于 2014-1-19 20:36:34 | 显示全部楼层
qiqirachel 发表于 2014-1-19 20:15
楼主上高清大图吧,模模糊糊看着不爽啊

相机没带回来 。扔公司 了。。。等明天吧

出0入0汤圆

发表于 2014-1-19 21:22:03 | 显示全部楼层
本帖最后由 dudududu 于 2014-1-19 21:24 编辑

不错的说,两个8740做单声道模式输出,那么耳机部分是平衡驱动还是单端驱动呢?
我的和你的硬件基本一样,就是没有SRC,直接MCU输出I2S给两个8740,不过电源部分我的是电池直接供给模拟部分,数字部分用LDO稳压,用了三节电池,两节串联成±3.7V给模拟部分,一节专门给数字电路.

出0入54汤圆

 楼主| 发表于 2014-1-19 21:40:56 | 显示全部楼层
dudududu 发表于 2014-1-19 21:22
不错的说,两个8740做单声道模式输出,那么耳机部分是平衡驱动还是单端驱动呢?
我的和你的硬件基本一样,就是 ...

我也想过你这种 方式 。
不过电池充电太麻烦了就没搞了。

我现在又遇到新的问题了。
使用FATFS读16G卡靠后的音乐文件出错,正在查是哪里的问题。

出0入54汤圆

 楼主| 发表于 2014-1-19 21:49:22 | 显示全部楼层
本帖最后由 lusson 于 2014-1-19 21:55 编辑
lusson 发表于 2014-1-19 21:40
我也想过你这种 方式 。
不过电池充电太麻烦了就没搞了。


已经找到问题原因了。
是我从移植过来的SD卡读块有问题。
入口地址是32位的,他在入口时把FATFS传过来的地址乘了512.
然后在里面判断是大容量卡时再除以了512.
但实际上这个剩512时已经超出32位了。。。

把入口地址改成unsigned long long。。。问题解决。
我也是从论坛某个兄弟那拿过来的。通知他去

出0入54汤圆

 楼主| 发表于 2014-1-20 08:36:05 | 显示全部楼层
qiqirachel 发表于 2014-1-19 20:15
楼主上高清大图吧,模模糊糊看着不爽啊

图来了,不过没三脚架,所以只能调大光圈调高感光度来照了。。




本帖子中包含更多资源

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

x

出0入54汤圆

 楼主| 发表于 2014-1-21 10:20:24 | 显示全部楼层
最新测试CPU测试结果:
每2ms查询一次需不需要读取数据,每次读取4KByte。

目前测试下来是每次读取4KByte耗时850us,折算下来是4.56MByte/秒。
每24ms(44.1kHz 16bit)需要读取一次。
按目前的性能来算的话能支持到192kHz 24bit.
以上使用的都是WAV文件测试结果

另外开始的扫描文件,目前是8个目录 173个文件,耗时300ms。

目前CPU占用率大概在5%。
如果换成16bit 192kHz的话CPU占用率大概会到40%

这样看用M3超一点频是不是也能应付

出0入0汤圆

发表于 2014-1-22 09:53:55 | 显示全部楼层
lusson 发表于 2014-1-21 10:20
最新测试CPU测试结果:
每2ms查询一次需不需要读取数据,每次读取4KByte。

请教一下,你的STM32F4 的I2S是工作在主模式还是从模式,如果是从模式,那MCLK由时钟来切换,会不会带来额外的相位误差?
AD1896到底有神马作用,看了半天没明白。难道是把44.1k 48k的统一转成96k的?

出0入0汤圆

发表于 2014-1-22 09:55:13 | 显示全部楼层
另外还是感觉差一个LCD屏,少了些播放器的感觉!

出0入54汤圆

 楼主| 发表于 2014-1-22 10:22:10 | 显示全部楼层
rootxie 发表于 2014-1-22 09:53
请教一下,你的STM32F4 的I2S是工作在主模式还是从模式,如果是从模式,那MCLK由时钟来切换,会不会带来 ...

目前工作在主模式。MCLK不输出。使用25M有源晶振,48K 96K没有误差。44.1K有0.011%误差,我觉得能接受。

AD1896除了来升频之外,就是可以生成MCLK,这个MCLK就是提供给AD1896的时钟,需要另外的有源或无源晶振来提供,这样MCU就不用提供MCLK了。
很多芯片的I2S输出也不带MCLK的,比如BT模块,USB转I2S等。


LCD的话看个人播放喜好了。我一般的习惯是把喜欢听的歌扔进去,按目录放好。然后就随机播放了,很少会直接选中中首歌来听。
所以能有下一曲上一曲随机播放顺序播放目录播放功能就够了。

出0入0汤圆

发表于 2014-1-22 10:48:33 | 显示全部楼层
lusson 发表于 2014-1-22 10:22
目前工作在主模式。MCLK不输出。使用25M有源晶振,48K 96K没有误差。44.1K有0.011%误差,我觉得能接受。
...

请教下,我一直有疑问,如果主模式不提供MCLK,由专门时钟来提供,那会不会带来MCLK的相位误差,这个相位差,会不会导致AD1896输出的BCLK带来相位问题?还是MCLK的相位没影响?
其实调理电路运放的低通滤波器 由于不同的衰减,导致带来额外的相位噪声,高端的HIFI设备都会做数字信号处理来弥补这个相位差。

出0入54汤圆

 楼主| 发表于 2014-1-22 11:09:23 | 显示全部楼层
rootxie 发表于 2014-1-22 10:48
请教下,我一直有疑问,如果主模式不提供MCLK,由专门时钟来提供,那会不会带来MCLK的相位误差,这个相位 ...

AD1896做了重采样。重采样是以AD1896的MCLK来同步的,即异步。所以不存在你说的相位误差问题

出0入54汤圆

 楼主| 发表于 2014-1-23 22:22:52 | 显示全部楼层
kunnsd 发表于 2014-1-15 11:13
楼主既然用到了CPLD我觉得就不要用STM32的IIS了,把IIS放在CPLD中,用FSMC刷数据就行了,把CPLD当成外存 ...

我打算使用最简单的方法来用CPLD,你看下可不可行。

CPLD设置成SPI主,MCU设置为SPI从。
然后从MCU读数据,读一位往 I2S上发送一位。这样的话是不是非常简单了?我的想法可行吗?

感觉这个和I2S从差不多了。主要是听说STM32F4的I2S从还有问题啊。不然的话直接使用I2S从也是非常简单的事了。

出0入54汤圆

 楼主| 发表于 2014-1-24 08:25:02 | 显示全部楼层
lusson 发表于 2014-1-23 22:22
我打算使用最简单的方法来用CPLD,你看下可不可行。

CPLD设置成SPI主,MCU设置为SPI从。

算了,觉悟了。
还是实在有空的时候再来弄这个东西吧。
还是去整个成品比如D50来先听着吧。

出0入0汤圆

发表于 2014-1-24 08:41:14 | 显示全部楼层
lusson 发表于 2014-1-23 22:22
我打算使用最简单的方法来用CPLD,你看下可不可行。

CPLD设置成SPI主,MCU设置为SPI从。

我觉得,STM32F4 I2S主模式 + AD1896的方案已经很完美了,还要折腾CPLD啊!!

出0入54汤圆

 楼主| 发表于 2014-1-24 08:55:27 | 显示全部楼层
dudududu 发表于 2014-1-24 08:41
我觉得,STM32F4 I2S主模式 + AD1896的方案已经很完美了,还要折腾CPLD啊!!

STM32F4的时钟PLL产生的毕竟不稳定啊,虽然说经过AD1896转了,但是前面的输入肯定会带来损失吧。。

我是打算用CPLD来做比较通用的的转换。
使用比较常见的接口比如 SPI转成IIS,这样MCU就可以随意了,只要SPI速度能跟得上,使用8位机也OK。

暂时先不搞了,把LPF调一下就好了。目前我用的贴片电容还是X7R的,估计影响会比较大。。

出0入0汤圆

发表于 2014-1-24 15:33:11 | 显示全部楼层
lusson 发表于 2014-1-22 10:22
目前工作在主模式。MCLK不输出。使用25M有源晶振,48K 96K没有误差。44.1K有0.011%误差,我觉得能接受。
...

事实上,手册中给的分配系数,都是默认把PLL的输入时钟限制在1MHz或者2MHz的固定频率上,如果不考虑此限制条件,让PLL的输入时钟在1MHz~2MHz之间,那么可以得到更加准确的音频时钟,比如
使用25MHz的晶振的话,44.1k16bit最小误差可以做到 0.0000252964490775511%
使用25MHz的晶振的话,44.1k32bit最小误差可以做到 0.00111886860007144%
但是会出现一个问题,就是44.1k的最佳M值和48k以及96k不一样,调节M值那么系统时钟也会跟着变化,可能影响别的外设工作,不过我们还是可以把M值固定在44.1k最佳的地方,48k和96k虽然不能无误差,但是误差也可以很小,毕竟44.1k的使用机会更多

16bit 具体分频系数如下:
时钟                  /M                           *N                            /R                        = I2S_CLK                      *32 /(DIV   *  2      +   ODD)         =  FS                         error
25MHz               18                           253                           3                        117.12963MHz                           41                       1                44.100011                0.000025%
25MHz               18                           261                           2                        181.25MHz                                59                        0               48.00053                  0.001103%
25MHz               18                           261                           2                        181.25MHz                                29                        1               96.001059                 0.001103%

32bit 具体分频系数如下:
时钟                  /M                           *N                            /R                        = I2S_CLK                      *64 /(DIV   *  2      +   ODD)         =  FS                         error
25MHz               25                           429                           4                        107.25MHz                                19                        0                44.099507                0.001118%
25MHz               25                           384                           5                        76.8MHz                                    12                        1               48.00000                  0.00%
25MHz               25                           424                           3                        141.333MHz                               11                        1               96.014493                0.015097%

不过,还是建议更换为24MHz的晶振,可以完美支持44.1、48、96,如果是11.0592,就可以完美支持8.0、11.025、22.05、32、44.1、47.25、48、50、88.2、96、176.4、192 所有的格式
11.0592真的是个神奇的晶振,原来以为只适合用来搞精准的串口波特率,没想到子啊音频领域也是如此神奇                                        

出0入54汤圆

 楼主| 发表于 2014-1-24 16:47:22 | 显示全部楼层
dudududu 发表于 2014-1-24 15:33
事实上,手册中给的分配系数,都是默认把PLL的输入时钟限制在1MHz或者2MHz的固定频率上,如果不考虑此限 ...

我考虑的不只是频率的精准,还有抖动。

PLL2的抖动是250ppm

出0入0汤圆

发表于 2014-1-24 18:06:49 | 显示全部楼层
lusson 发表于 2014-1-24 16:47
我考虑的不只是频率的精准,还有抖动。

PLL2的抖动是250ppm

有这么大么??手册上不是说±200ps么?

出0入54汤圆

 楼主| 发表于 2014-1-24 19:31:21 | 显示全部楼层
dudududu 发表于 2014-1-24 18:06
有这么大么??手册上不是说±200ps么?

我记错了。。
应该是:
Master I2S clock jitter
±280ps
Average frequency of 12.288 MHz
90ps
WS I2S clock jitter
Cycle to cycle at 48 KHz on 1000 samples
400ps

主pll倒是200ps。。

出0入0汤圆

发表于 2014-1-24 20:35:06 | 显示全部楼层
算啦,我一概无视了,没办法,精简结构啊!!
其实,可以考虑以下ESS9018这个芯片,抗jitter能力非常强悍,而且是3.3V供电,模拟性能也堪称目前之最,我一直觉得这货用在便携上很合适,就是太特么贵了,好几百一颗

出0入0汤圆

发表于 2014-1-24 22:16:10 | 显示全部楼层
楼主太强大了!

出0入0汤圆

发表于 2014-1-25 08:09:45 | 显示全部楼层
ESS有专美为移动设备新推出一颗ES9018M2K,就是9018的低压版,看宣传功耗才40mw,1.2V/3.3V供电,127db的SNR,-120DB的THD,很是爽啊,目前X宝上有得卖,120¥一颗,就是没有PDF资料
坛子里人才济济,有谁可以搞到资料的,便携播放器的福音啊

出0入0汤圆

发表于 2014-1-27 10:54:20 | 显示全部楼层
你的原理图STM32F407是不是元件符号做得有问题啊?感觉很多脚和手册对不上?是直接用了stm32103V系列的吗?

出0入54汤圆

 楼主| 发表于 2014-1-27 11:04:33 | 显示全部楼层
rootxie 发表于 2014-1-27 10:54
你的原理图STM32F407是不是元件符号做得有问题啊?感觉很多脚和手册对不上?是直接用了stm32103V系列的吗? ...

答对了。。。
一开始没注意103和407的区别。。
导致最后有3个引脚需要跳线。。

出0入54汤圆

 楼主| 发表于 2014-2-23 14:26:23 | 显示全部楼层
本帖最后由 lusson 于 2014-2-23 14:27 编辑

汇报一下最近进展。

已经把CPLD使用上了,I2S时序全部由CPLD产生。CPLD和MCU使用SPI通讯,CPLD内建了8BYTE的缓存。
另外24BIT的对齐部分也由CPLD来做,MCU和CPLD传输使用8bit一次,所以24bit的wav文件就不用再程序补齐到32bit了。
MCU使用的内部16M时钟提供了。

CPLD使用的EPM240,就这样已经差不多用满了。

目前已经出声,还有一些细节的地方需要处理。

出0入0汤圆

发表于 2014-2-23 15:09:44 | 显示全部楼层
lusson 发表于 2014-1-15 10:03
淘宝上有卖,20多块钱一片。如果需要的话可以发链接给你,我的WM8740什么的全在他那买的。8740是11块多一 ...

强帖留名

出0入0汤圆

发表于 2014-2-23 15:13:08 | 显示全部楼层
lusson 发表于 2014-2-23 14:26
汇报一下最近进展。

已经把CPLD使用上了,I2S时序全部由CPLD产生。CPLD和MCU使用SPI通讯,CPLD内建了8BYTE ...

这个就有点小高端了,CPLD我是玩不转了;
我计划就用MCU的i2s,后面要么经过一级SRC到DAC,要么就直接使用ES9018,这货的抗jitter能力超强,内部有强大的SRC和两个PLL,且指标目前最高,低压低功耗,很适合移动平台;
就是太贵了点,并且低功耗版本的芯片目前还没有资料流出来
如果会搞CPLD,那么会搞FPGA么?可以看看直接用一颗资源多一点的FPGA,把SD卡接口部分也做在里面...............好吧,貌似这样就真的不能移动了.

出0入54汤圆

 楼主| 发表于 2014-2-23 15:21:18 | 显示全部楼层
dudududu 发表于 2014-2-23 15:13
这个就有点小高端了,CPLD我是玩不转了;
我计划就用MCU的i2s,后面要么经过一级SRC到DAC,要么就直接使用ES9 ...

年前断断续续看了1个星期的Verilog HDL
然后年后10号上班到现在断断续续的看书写程序,程序基本1个星期写好啊,不过目前只是出声了,还有很多细节要完善。

所以我觉得不算难,至少我目前的应用用不到很高深的知识,也可能是跟我数字电路逻辑思维相对好一点有关系。(自恋一下
FPGA的话涉及的东西就多多了吧。。等闲下来也可以研究一下。

魏SIR那个就是直接用FPGA做的啊,另外功耗也是要考虑的。

出0入54汤圆

 楼主| 发表于 2014-2-23 15:23:42 | 显示全部楼层
dudududu 发表于 2014-2-23 15:13
这个就有点小高端了,CPLD我是玩不转了;
我计划就用MCU的i2s,后面要么经过一级SRC到DAC,要么就直接使用ES9 ...

不知道心理作用还是
感觉比这前那一版(使用AD1896升频)解析力好,细节多一点。

出0入0汤圆

发表于 2014-2-23 15:29:57 | 显示全部楼层
在stm32f4discovery上试验wav播放,也遇到了i2s需要的时钟频率的问题,后来设计了个折中的办法:读取文件确定采样率,然后修改PLLI2S的参数,就是这样了:
void SET_I2S_PLL(uint32_t rate)
        {
                uint8_t  PLL_I2SR;
                uint16_t PLL_I2SN;
                if(rate==44100)
                        {       
                                PLL_I2SN=271;
                                PLL_I2SR=2;       
                        }
                else if(rate==48000)
                        {
                                PLL_I2SN=258;
                                PLL_I2SR=3;               
                        }
                else if(rate==96000)
                        {
                                PLL_I2SN=344;
                                PLL_I2SR=2;               
                        }
                else        // sound in blackhole.......
                        {
                                PLL_I2SN=256;
                                PLL_I2SR=5;               
                        }
                PLLI2S_FEQ_SET(PLL_I2SR,PLL_I2SN);
        }

void PLLI2S_FEQ_SET(uint8_t PLLI2SR,uint16_t PLLI2SN)
{
  /*Disable I2S module for clock config */
  I2S_Cmd(CODEC_I2S, DISABLE);
  /* Disable PLLI2S (or void RCC_PLLI2SCmd(FunctionalState NewState) )*/
  RCC->CR &= ~RCC_CR_PLLI2SON;
  /* PLLI2S clock used as I2S clock source */
  /* It is highly recommended to change this bit only after reset and before enabling the I2S module.*/
  RCC->CFGR &= ~RCC_CFGR_I2SSRC;
  /* Configure PLLI2S */
  RCC->PLLI2SCFGR = (PLLI2SN << 6) | (PLLI2SR << 28);
  /* Enable PLLI2S */
  RCC->CR |= RCC_CR_PLLI2SON;
  /* Wait till PLLI2S is ready */
  while((RCC->CR & RCC_CR_PLLI2SRDY) == 0){}
}

出0入54汤圆

 楼主| 发表于 2014-2-23 15:37:29 | 显示全部楼层
XA144F 发表于 2014-2-23 15:29
在stm32f4discovery上试验wav播放,也遇到了i2s需要的时钟频率的问题,后来设计了个折中的办法:读取文件确 ...

我之前也是这样做的。
不过在设置PLLI2S之前需要先关掉它,我测试时还需要延时一下。可能是需要等待关闭吧。
然后再设置分频比,再开启。

出0入0汤圆

发表于 2014-2-23 21:36:48 | 显示全部楼层
lusson 发表于 2014-2-23 15:21
年前断断续续看了1个星期的Verilog HDL
然后年后10号上班到现在断断续续的看书写程序,程序基本1个星期写 ...

说道功耗,CPLD的工作电流怎样??

出0入54汤圆

 楼主| 发表于 2014-2-23 23:09:35 | 显示全部楼层
dudududu 发表于 2014-2-23 21:36
说道功耗,CPLD的工作电流怎样??

看手册上写全速是55mA,没有实测,等有空再测一下吧。
这个功耗好像跟频率有关,C5级别可以到200M,我最高只用了50M,所以实际电流要测一下。

出0入0汤圆

发表于 2014-2-25 18:58:09 | 显示全部楼层
我的板子也打样回来了,STM32F407+AD1896+AD1955  ,现在就跑了个RT-THREAD点灯和串口打印,已经300mA电流了(后端运放都连着),估计500mA止不住啊,功耗实在是吓人。

出0入54汤圆

 楼主| 发表于 2014-2-25 19:51:10 | 显示全部楼层
rootxie 发表于 2014-2-25 18:58
我的板子也打样回来了,STM32F407+AD1896+AD1955  ,现在就跑了个RT-THREAD点灯和串口打印,已经300mA电流 ...

哪个IC耗电啊?
STM32F407全速也不到100mA啊。
是不是DC/DC效率太低了。

出0入0汤圆

发表于 2014-2-25 20:07:30 | 显示全部楼层
本帖最后由 rootxie 于 2014-2-25 20:12 编辑
lusson 发表于 2014-2-25 19:51
哪个IC耗电啊?
STM32F407全速也不到100mA啊。
是不是DC/DC效率太低了。


还没查呢,到时候全部焊完 再细查!焊接的时候用刀头焊接0805的电容,好些都焊接短路了,查了我好久,真是郁闷!

附上前些天焊接图

今天又焊了不少,基本上差不多了,改天再上图!

本帖子中包含更多资源

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

x

出0入54汤圆

 楼主| 发表于 2014-2-25 22:22:19 | 显示全部楼层
rootxie 发表于 2014-2-25 20:07
还没查呢,到时候全部焊完 再细查!焊接的时候用刀头焊接0805的电容,好些都焊接短路了,查了我好久,真 ...

手工焊的就是没那么好看啊,你的贴片阻容放得真近。
有外壳吗?

出0入0汤圆

发表于 2014-2-25 22:28:59 | 显示全部楼层
lusson 发表于 2014-2-25 22:22
手工焊的就是没那么好看啊,你的贴片阻容放得真近。
有外壳吗?

尺寸跟这位网友的差不多,经他指点 也买了这个外壳,不过看起来有点厚,而且是铝壳 还不知道怎么钻孔呢
http://www.amobbs.com/thread-5567068-1-1.html
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-24 09:32

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

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