头像被屏蔽

21

主题

2

好友

128

积分

禁止发言 当前离线

UID
119698
帖子
206
精华
0
经验
128 点
金钱
112 ¥
注册时间
2009-7-22
发表于 2014-7-23 09:12 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

56

主题

12

好友

6091

积分
     

青铜剑侠 当前离线

小熊猫

Rank: 8Rank: 8

UID
59487
帖子
7499
精华
0
经验
6091 点
金钱
5748 ¥
注册时间
2008-10-20
发表于 2014-7-23 12:01 | 显示全部楼层
12M晶体换成11.2896M

30

主题

1

好友

946

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
59764
帖子
486
精华
3
经验
946 点
金钱
501 ¥
注册时间
2008-10-22

新人进步

发表于 2014-7-23 12:51 来自手机端 | 显示全部楼层
mclk输出不能开,开了的话,你换11.2896也没用
头像被屏蔽

21

主题

2

好友

128

积分

禁止发言 当前离线

UID
119698
帖子
206
精华
0
经验
128 点
金钱
112 ¥
注册时间
2009-7-22
 楼主| 发表于 2014-7-23 17:10 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽

21

主题

2

好友

128

积分

禁止发言 当前离线

UID
119698
帖子
206
精华
0
经验
128 点
金钱
112 ¥
注册时间
2009-7-22
 楼主| 发表于 2014-7-23 17:11 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽

6

主题

0

好友

590

积分

禁止发言 当前离线

UID
719944
帖子
792
精华
0
经验
590 点
金钱
578 ¥
注册时间
2014-6-29
发表于 2014-7-23 18:28 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

30

主题

1

好友

946

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
59764
帖子
486
精华
3
经验
946 点
金钱
501 ¥
注册时间
2008-10-22

新人进步

发表于 2014-7-24 09:55 | 显示全部楼层

RE: STM32的wav播放器,速度较快

zenghuipeng 发表于 2014-7-23 17:10
mck必须开啊,后端是wm8805的spdif的输出板,没有额外的晶振。

以前试过I2S解码板,mck可以不开,使用 ...

你仔细看看stm32技术书,虽然他讲的情况是8m晶振,mclk启动的时候,除了8khz,其他频率,没一个准的,mclk一关闭全部都准了
头像被屏蔽

21

主题

2

好友

128

积分

禁止发言 当前离线

UID
119698
帖子
206
精华
0
经验
128 点
金钱
112 ¥
注册时间
2009-7-22
 楼主| 发表于 2014-7-24 16:08 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

8

主题

0

好友

203

积分

业余侠客 当前离线

Rank: 4

UID
94615
帖子
264
精华
0
经验
203 点
金钱
193 ¥
注册时间
2009-4-7
发表于 2014-7-24 21:31 | 显示全部楼层
STM32的I2S外设有BUG,如果做产品还是放弃吧。
我现在是总线上挂FPGA,晶振直接输入到FPGA,FPGA内完成I2S和SPDIf信号生成,这样STM32工作时钟和输出的MCLK和采样率没任何关系了,哪怕用内部RC都可以。

30

主题

1

好友

946

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
59764
帖子
486
精华
3
经验
946 点
金钱
501 ¥
注册时间
2008-10-22

新人进步

发表于 2014-7-25 10:36 来自手机端 | 显示全部楼层
zenghuipeng 发表于 2014-7-24 16:08
我看到另外一个帖子里面的哥们也说了,MCLK是不能开的,开了就不准。
但为什么MCLK不开就准了呢?  BCK  ...

因为负责mclk分频的电路不是整除分频,貌似公式里有-1的,怎样,听完想不想抽st一耳光?

30

主题

1

好友

946

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
59764
帖子
486
精华
3
经验
946 点
金钱
501 ¥
注册时间
2008-10-22

新人进步

发表于 2014-7-25 10:39 来自手机端 | 显示全部楼层
zenghuipeng 发表于 2014-7-24 16:08
我看到另外一个帖子里面的哥们也说了,MCLK是不能开的,开了就不准。
但为什么MCLK不开就准了呢?  BCK  ...

强行同步mclk是愚蠢的行为,把你那m32设置成slave,然后用cpld分时钟吧。

13

主题

10

好友

792

积分

贵宾 当前离线

Rank: 3Rank: 3

UID
9409
帖子
658
精华
0
经验
792 点
金钱
323 ¥
注册时间
2006-5-15

社区贡献 论坛贵宾

发表于 2014-7-25 12:37 | 显示全部楼层
STM32F4 的I2S锁相环只要使用得当是没有问题的, 即便使用探索板上的8MHz晶体也可以在打开或关闭MCLK情况下得出挺接近的频率, 44.1K的计算误差只是63ppm, 对比一般晶体的误差是200ppm, 48K的计算误差更是完美的0ppm

若是使用某一个合适频率的晶体, 花一点时间计算也可以得出 44.1K, 48K, 88.2K, 96K, 176.4K 和 192K 在计算上零误差的参数, 只是在192K打开MCLK时得稍微超频使用这枚芯片, 不过只是超频2.4%, 不是问题, 详情可以去参考俺的探索板彩屏播放器的帖子, 提供了固件下载方便测试.


#elif defined osc_8MHz
  #ifdef CODEC_MCLK_ENABLED                /* 为了排列整齐不用 switch 或 else if, 每行统一使用 if */
//8MHz晶体 USB误差0.00%        M=5, N=210, 1.6MHz, 系统时钟 = 168MHz, N=192..432; R=2..7; DIV=2..256; odd=0..1
          if(AudioFreq==44100)        RCC->PLLI2SCFGR = (254 << 6) | (6 << 28);        /* DIV=2, ODD=1, 误差 0.0063% */
          if(AudioFreq==88200)        RCC->PLLI2SCFGR = (254 << 6) | (3 << 28);        /* DIV=2, ODD=1, 误差 0.0063% */
          if(AudioFreq==176400)         RCC->PLLI2SCFGR = (226 << 6) | (2 << 28);        /* DIV=2, ODD=0, 误差 0.0920% */
          if(AudioFreq==48000)        RCC->PLLI2SCFGR = (192 << 6) | (5 << 28);        /* DIV=2, ODD=1, 误差 0.0000% */
          if(AudioFreq==96000)        RCC->PLLI2SCFGR = (384 << 6) | (5 << 28);        /* DIV=2, ODD=1, 误差 0.0000% */
          if(AudioFreq==192000)         RCC->PLLI2SCFGR = (246 << 6) | (2 << 28);        /* DIV=2, ODD=0, 误差 0.0976% 2.4%超过锁相环最高工作频率192MHz*/
  #elif CODEC_MCLK_DISABLED
//8MHz晶体 USB误差0.00%         M=5, N=210, 1.6MHz, 系统时钟 = 168MHz
          if(AudioFreq==44100)        RCC->PLLI2SCFGR = (254 << 6) | (6 << 28);        /* DIV=5, ODD=0, 误差 0.0063% */
          if(AudioFreq==88200)        RCC->PLLI2SCFGR = (254 << 6) | (6 << 28);        /* DIV=2, ODD=1, 误差 0.0063% */
          if(AudioFreq==176400)         RCC->PLLI2SCFGR = (254 << 6) | (3 << 28);        /* DIV=2, ODD=1, 误差 0.0063% */
          if(AudioFreq==352800)         RCC->PLLI2SCFGR = (226 << 6) | (2 << 28);        /* DIV=2, ODD=0, 误差 0.0920% */
          if(AudioFreq==48000)        RCC->PLLI2SCFGR = (192 << 6) | (5 << 28);        /* DIV=5, ODD=0, 误差 0.0000% */
          if(AudioFreq==96000)        RCC->PLLI2SCFGR = (192 << 6) | (5 << 28);        /* DIV=2, ODD=1, 误差 0.0000% */
          if(AudioFreq==192000)         RCC->PLLI2SCFGR = (384 << 6) | (5 << 28);        /* DIV=2, ODD=1, 误差 0.0000% */
          if(AudioFreq==384000)         RCC->PLLI2SCFGR = (246 << 6) | (2 << 28);        /* DIV=2, ODD=0, 误差 0.0976% 2.4%超过锁相环最高工作频率192MHz*/
  #endif

11

主题

0

好友

100

积分
     

论坛游民 当前离线

Rank: 3Rank: 3

UID
611890
帖子
388
精华
0
经验
100 点
金钱
86 ¥
注册时间
2013-8-25
发表于 2014-7-25 18:08 来自手机端 | 显示全部楼层
高手啊,我也想做一个,请问我如果从现在从零开始学,到做出来这个东西要多长时间呢?
头像被屏蔽

21

主题

2

好友

128

积分

禁止发言 当前离线

UID
119698
帖子
206
精华
0
经验
128 点
金钱
112 ¥
注册时间
2009-7-22
 楼主| 发表于 2014-7-30 22:11 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽

21

主题

2

好友

128

积分

禁止发言 当前离线

UID
119698
帖子
206
精华
0
经验
128 点
金钱
112 ¥
注册时间
2009-7-22
 楼主| 发表于 2014-7-30 22:14 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽

21

主题

2

好友

128

积分

禁止发言 当前离线

UID
119698
帖子
206
精华
0
经验
128 点
金钱
112 ¥
注册时间
2009-7-22
 楼主| 发表于 2014-7-30 22:14 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc.

返回顶部