嵌入式應(yīng)用系統(tǒng)設(shè)計課程論文模板_第1頁
嵌入式應(yīng)用系統(tǒng)設(shè)計課程論文模板_第2頁
嵌入式應(yīng)用系統(tǒng)設(shè)計課程論文模板_第3頁
嵌入式應(yīng)用系統(tǒng)設(shè)計課程論文模板_第4頁
嵌入式應(yīng)用系統(tǒng)設(shè)計課程論文模板_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

PAGE沈陽理工大學(xué)《嵌入式計算機(jī)產(chǎn)品案例》課程論文題目基于ARM的音頻系統(tǒng)設(shè)計姓名王軍超學(xué)號1203060433院別信息科學(xué)與工程專業(yè)通信工程2014年4月12日

1概述1.1嵌入式系統(tǒng)的技術(shù)背景

在許多領(lǐng)域中廣泛應(yīng)用的嵌入式計算系統(tǒng)(簡稱為嵌入式系統(tǒng)),是在更大的電子器件中嵌入的重復(fù)完成特定功能的計算系統(tǒng),它經(jīng)常不被器件的使用者所識別,但在各種常用的電子器件中能夠找到這些嵌入式系統(tǒng)。例如,消費(fèi)類電子產(chǎn)品中的手機(jī)、尋呼機(jī)、數(shù)字相機(jī)、攝像機(jī)、錄像機(jī)、個人數(shù)字助理等,家用電器中的微波爐、洗衣機(jī)、烤箱、門禁系統(tǒng)、照明系統(tǒng)等,商用裝置中的卡片讀入器、掃描儀、打印機(jī)等。1.2數(shù)字音頻系統(tǒng)的應(yīng)用數(shù)字音頻信號是對模擬信號的一種量化,典型方法是對時間坐標(biāo)按相等的時間間隔做采樣,對振幅做量化。單位時間內(nèi)的采樣次數(shù)稱為采樣頻率。這樣一段聲波就可以被數(shù)字化后變成一串?dāng)?shù)值,每個數(shù)值對應(yīng)相應(yīng)抽樣點(diǎn)的振幅值,按順序?qū)⑦@些數(shù)字排列起來就是數(shù)字音頻信號了。這是ADC(模擬-數(shù)字轉(zhuǎn)換)過程。DAC(數(shù)字-模擬轉(zhuǎn)換)過程相反,將連續(xù)的數(shù)字按采樣時候的頻率順序轉(zhuǎn)換成對應(yīng)的電壓。2系統(tǒng)的硬件設(shè)計2.1系統(tǒng)設(shè)計方案音頻ADC/DAC通俗一點(diǎn)來講就是錄音(音頻ADC)和放音(音頻DAC)。放音是數(shù)字音頻信號轉(zhuǎn)換成模擬音頻信號,以推動耳機(jī)、功放等模擬音響設(shè)備,而錄音則是要將麥克風(fēng)等產(chǎn)生的模擬音頻信號轉(zhuǎn)換成數(shù)字音頻信號,并最終轉(zhuǎn)換成計算機(jī)可以處理的通用音頻文件格式。2.2S3C2410的IIS模塊S3C2410的IIS總線簡介IIS總線是近年出現(xiàn)的一種面向多媒體計算機(jī)的音頻總線,該總線專責(zé)于音頻設(shè)備之間的數(shù)據(jù)傳輸,為數(shù)字立體聲提供一個序列連接至標(biāo)準(zhǔn)編碼解碼器。S3C2410的IIS總線接口可以用實(shí)現(xiàn)對外部8/16位立體聲音頻數(shù)字信號編碼解碼電路的接口功能。它支持IIS總線數(shù)據(jù)格式和MSB-justified數(shù)據(jù)格式。IIS總線接口為FIFO操作提供DMA傳輸模式,代替中斷模式,它可以同時傳送或接收數(shù)據(jù)。Mode1程序:staticvoidInit1341(charmode){//PortInitialize////PORTBGROUP//Ports:GPB4GPB3GPB2//Signal:L3CLOCKL3DATAL3MODE//Setting:OUTPUTOUTPUTOUTPUT//[9:8][7:6}[5:4]//Binary:01,0101//rGPBDAT=rGPBDAT&~(L3M|L3C|L3D)|(L3M|L3C);//啟動條件L3M=H,L3C=HrGPBUP=rGPBUP&~(0x7<<2)|(0x7<<2);//禁止上拉電阻GPB[4:2]rGPBCON=rGPBCON&~(0x3f<<4)|(0x15<<4);//GPB[4:2]=Output(L3CLOCK):Output(L3DATA):Output(L3MODE) //L3Interface_WrL3Addr(0x14+2); //地址設(shè)置(000101xx+10)_WrL3Data(0x60,0); //數(shù)據(jù)輸入0,1,10,000,0_WrL3Addr(0x14+2); //STATUS(000101xx+10)FsIdx=mode?RecStatus.FsIdx:PlayStatus.FsIdx;if(CodecPara[FsIdx].ofs)_WrL3Data(0x18,0);else _WrL3Data(0x28,0); _WrL3Addr(0x14+2); //STATUS(000101xx+10)_WrL3Data(0xc1,0); //1,0,0,0,0,0,01 //DAC增益控制為6dB,ADC增益為dB。 //Recordif(mode){ //mode為1時選擇錄音狀態(tài) _WrL3Addr(0x14+2); //STATUS(000101xx+10)// _WrL3Data(0xa2,0); //1,0,1,0,0,0,10 //狀態(tài)1,DAC增益為0dB,ADC增益為6dB。 _WrL3Data(0xe3,0);//狀態(tài)1,DAC增益為6dB,ADC增益為0dB。打開使//錄音時可從耳機(jī)聽到聲音// _WrL3Addr(0x14+0); //DATA0(000101xx+00)// _WrL3Data(0x3f,0); //00,111111Volumecontrol(6bits)// _WrL3Data(0x00,0); //00,000000Volumecontrol(6bits)0dB _WrL3Addr(0x14+0); //DATA0(000101xx+00) _WrL3Data(0x7b,0); //01,1110,11:Data0,BassBoost18~24dB,Treble6dB // _WrL3Addr(0x14+0); //DATA0(000101xx+00) _WrL3Data(0xc4,0); //11000,100:Extendedaddr(3bits),100// _WrL3Data(0x90,0); //100,100,00:DATA0,EnableAGC,00,inputamplifiergainchannel2(2bits) _WrL3Data(0xf0,0); //111,100,00:DATA0,EnableAGC,00,inputamplifiergainchannel2(2bits)// _WrL3Addr(0x14+0); //DATA0(000101xx+00) _WrL3Data(0xc0,0); //11000,000:Extendedaddr(3bits),000 _WrL3Data(0xe4,0); //111,00000:MA=0dB _WrL3Data(0xc1,0); //11000,001:Extendedaddr(3bits),001 _WrL3Data(0xe4,0); //111,00000:MB=0dB// _WrL3Addr(0x14+0); //DATA0(000101xx+00) _WrL3Data(0xc2,0); //11000,010:Extendedaddr(3bits),010// _WrL3Data(0x59,0); //010,110,01:DATA0,MICAmplifierGain27dB,inputchannel1select(inputchannel2off) _WrL3Data(0xf9,0); //111,110,11:DATA0,MICAmplifierGain27dB,input1XMA+input2XMB}}3.4錄音模塊程序:voidRecordTest(void){ intsize,i,j,err; WAVEFORMATEXfmt; WAVEHDRhdr[2048]; HWAVEINhwi=1; fmt.nSamplesPerSec=fsTable[3]; fmt.wBitsPerSample=16; fmt.wFormatTag =WAVE_FORMAT_PCM; fmt.nChannels =2; fmt.nBlockAlign=fmt.wBitsPerSample*fmt.nChannels/8; fmt.nAvgBytesPerSec =fmt.nSamplesPerSec*fmt.nBlockAlign; download_addr=0x30800000;//_NONCACHE_STARTADDRESS; download_len=size=2*1024*1024; for(i=0;i<download_len;i+=4)*(U32*)(download_addr+i)=0; i=0; while(size>0) { hdr[i].lpData=(LPSTR)(download_addr+0x2c+i*BUF_SIZE); hdr[i].dwBufferLength=(size>BUF_SIZE)?BUF_SIZE:size; size-=BUF_SIZE; i++; } *(U16*)(download_addr+0x14)=fmt.wFormatTag; *(U16*)(download_addr+0x16)=fmt.nChannels; *(U32*)(download_addr+0x18)=fmt.nSamplesPerSec; *(U32*)(download_addr+0x1c)=fmt.nAvgBytesPerSec; *(U16*)(download_addr+0x20)=fmt.nBlockAlign; *(U16*)(download_addr+0x22)=fmt.wBitsPerSample; *(U32*)(download_addr+0x28)=download_len; err=waveInOpen(&hwi, 0, &fmt, 0, 0, 0); printf("\nerr=%x\n",err); for(j=0;j<i;j++) if(waveInAddBuffer(hwi,&hdr[j],0)) puts("Addbuffererror!"); printf("Added%dbufferforrecord\n",i); //puts("PressanytoRecord\n"); //getch(); puts("Nowbeginrecording,PressEsctoexit\n"); waveInStart(hwi); while(1) { U8key; key=getkey(); if(key==ESC_KEY) break; } waveInClose(hwi); REC_OK=0xff; PlayMusicTest(); REC_OK=0;}3.5放音模塊程序:voidPlayMusicTest(void){ intsize,i,j,err; WAVEFORMATEXfmt; WAVEHDRhdr[2048]; HWAVEOUThwo; U8pause=0; U8mute=0; U32volume; unsignedchar*buf; if(REC_OK==0) { download_addr=DFT_DOWNLOAD_ADDR; buf=(unsignedchar*)download_addr; for(i=0;i<243552;i++)buf[i]=WindowsXP_Wav[i]; download_len=243552; } size=*(U32*)(download_addr+0x28); i=0; while(size>0) { hdr[i].lpData=(LPSTR)(download_addr+0x2c+i*BUF_SIZE); hdr[i].dwBufferLength=(size>BUF_SIZE)?BUF_SIZE:size; size-=BUF_SIZE; i++; } fmt.wFormatTag =WAVE_FORMAT_PCM; fmt.nChannels =*(U16*)(download_addr+0x16); fmt.nSamplesPerSec =*(U32*)(download_addr+0x18); fmt.nAvgBytesPerSec =*(U32*)(download_addr+0x1c); fmt.nBlockAlign =*(U16*)(download_addr+0x20); fmt.wBitsPerSample =*(U16*)(download_addr+0x22); printf("SampleRate=%d,Channels=%d,%dBitsPerSample,size=%d\n", fmt.nSamplesPerSec,fmt.nChannels,fmt.wBitsPerSample,*(U32*)(download_addr+0x28)); hwo=0; err=waveOutOpen(&hwo, 0, &fmt, 0, 0, 0); printf("\nerr=%x\n",err); for(j=0;j<i;j++) waveOutWrite(0, &hdr[j],0); puts("Nowplayingthefile\n"); puts("PressEsctoexit,'+'toincvolume,'-'todecvolume,'y'tomute,Enterto'pause'\n"); waveOutGetVolume(0, &volume); while(1) { U8key=getch(); if(key==ESC_KEY) break; if(key==ENTER_KEY) { pause^=1; if(pause&1) waveOutPause(0); else waveOutRestart(0); } if(key=='y'||key=='Y') { mut

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論