線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:988
推到 Plurk!
推到 Facebook!

AT89C51SND制作MP3的問題

尚未結案
duan1234
一般會員


發表:3
回覆:2
積分:1
註冊:2010-06-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-08-03 20:46:29 IP:112.194.xxx.xxx 訂閱
大家好,我使用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?

系統時間:2024-04-27 2:36:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!