AT89C51SND制作MP3的问题

[复制链接]
 楼主| duan281110040 发表于 2010-8-3 22:04 | 显示全部楼层 |阅读模式
大家好,我使用AT89C51SND单片机做一个MP3,可是资料里有些不懂,具体如下:
MP3时钟频率设置
static void MP3FsInit(unsigned char NDIV, unsigned int RDIV, unsigned char MPCD, unsigned char AUCD)
{        
        PLLNDIV = 0;
        PLLRDIV = 0;
        MP3CLK  = 0;
        AUDCLK  = 0;

        PLLNDIV         = 0x7f & NDIV;         
        PLLCON        |= (0x3 & RDIV) << 6;   
        PLLRDIV         = (0x3ff & RDIV) >> 2;
        MP3CLK  |= MPCD;               
        AUDCLK  |= AUCD;                    

}

调用MP3FsInit函数:
switch ((MP3_Framehead[2] & 0x0C) >> 2)
                   {
                                case 0x00:MP3FsInit (24, 126, 3, 5); break;                 //Fs=44.1kHz
                                case 0x01 : MP3FsInit(124, 575, 3, 4); break;                //Fs=48kHz
                                case 0x02 : MP3FsInit(124, 511, 3, 9); AUDCON0 = 0x76; break;//Fs=32kHz
                                default : break;
                   }               
其中MP3FsInit (24, 126, 3, 5),Fs=44.1kHz ,但是据MP3FsInit 函数得N=24,R=222,MPCD=3,AUCD=5再根据公式:PLLclk=OSCclk*(R+1)/(N+1), 而OSCclk为20M(采用的是20M外部晶振),得到PLLclk=178.4M. 根据MP3clk=PLLclk/(MPCD+1) 公式得MP3的CLK=44.6M;根据AUDclk=PLLclk/(AUCD+1) ,AUDclk=29.73M。
Fs是怎么算出来等于44.4Khz?
lhkjg 发表于 2010-8-15 13:22 | 显示全部楼层
会不会是注解没有修改的缘故?不懂,没有搞过,但是办理顶一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

10

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部