- 积分
- 792
- 在线时间
- 8183 小时
- 最后登录
- 2024-6-19
- 阅读权限
- 120
- 精华
- 0
 
- UID
- 9409
- 帖子
- 658
- 精华
- 0
- 经验
- 792 点
- 金钱
- 323 ¥
- 注册时间
- 2006-5-15
|
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 |
|