DSP課程設計 音頻信號頻譜分析

上傳人:優(yōu)*** 文檔編號:40847587 上傳時間:2021-11-17 格式:DOC 頁數:35 大小:1.50MB
收藏 版權申訴 舉報 下載
DSP課程設計 音頻信號頻譜分析_第1頁
第1頁 / 共35頁
DSP課程設計 音頻信號頻譜分析_第2頁
第2頁 / 共35頁
DSP課程設計 音頻信號頻譜分析_第3頁
第3頁 / 共35頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《DSP課程設計 音頻信號頻譜分析》由會員分享,可在線閱讀,更多相關《DSP課程設計 音頻信號頻譜分析(35頁珍藏版)》請在裝配圖網上搜索。

1、 CHANGSHA UNIVERSITY OF SCIENCE & TECHNOLOGY DSP課程設計 題目: DSP ——音頻信號頻譜分析 學生姓名: 翦杰 學 號: 200757170119 班 級: 07-01 專 業(yè): 電子信息工程 指導教師: 黃亞飛、肖鴻 實習起止時間: 2010年12月27日至2011年1月7日 1 / 35 題目 DSP —音頻信號頻譜分析 學生

2、姓名: 翦杰 學 號: 200757170119 班 級: 電子信息工程07-01 所在院(系): 電氣與信息工程 指導教師: 肖鴻、黃亞飛 完成日期: 2011年1月7日 音頻信號頻譜分析 摘要 隨著信息技術革命的深入和計算機技術的飛速發(fā)展,數字信號處理技術已經逐漸發(fā)展成為一門關鍵的技術學科。而DSP芯片的出現則為數字信號處理算法的實現提供了可能。這一方面極大地促進了數字信號處理技術的進一步發(fā)展;另一方面,它也

3、使數字信號處理的應用領域得到了極大的拓展。在國外DSP芯片已經被廣泛地應用于當今技術革命的各個領域;在我國,DSP技術也正以極快的速度被應用到科技和國民經濟的各個領域。本次課程設計介紹了音頻信號頻譜分析的原理以及其所涉及的硬件結構和軟件設計,該設計是基于快速傅立葉變換(FFT)的方法對采集的音頻信號進行頻譜分析,得到音頻信號的頻率及功率,FFT算法采用TLC320AD50編寫DSP程序實現?,F可以完成256點的FFT運算,頻率分辨率達到100Hz,輸入信號電壓(峰峰值)可以達到100mV到4V。 關鍵詞:音頻信號;快速傅立葉變換;頻譜分析;分辨率

4、 目 錄 1 緒論……………………………………………….………………………………………..1 1.1 課題背景........................................................................................................................1 1.2 課題目的.....................................................................................................

5、...................1 2 硬件電路............................................................................................ ..... ..... ......................3 2.1 系統(tǒng)框圖......................................................................................... ..............................3 2.2 信號處理部分

6、..................................................................................................... ..........3 2.2.1 信號疊加電路.................................................................................. ......... ........3 2.2.2 低通濾波器.......................................................

7、.................................. ...............3 2.2.3 50Hz陷波電路......................................................................... ...........................4 2.2.4 電平轉換電路... ......... ............................................... .......................... ............4

8、2.2.5 信號采集部分............ ........................................................................ ...............4 2.3 時鐘信號產生電路.. ... .......................................... ................................. ..................13 3 軟件設計...........................................................

9、... ..... .... ...................................... ............14 3.1 DSP初始化................................................................... ... ..........................................14 3.2 AD50初始化...................................................................................... . ..

10、.....................14 3.3 設置DSP中斷..... ... ................................................................................... ...............14 3.4 數據存儲... .... ... ................................................ ....................................... ...... .........14 3.5 數據輸出.... .... ...

11、 ..................................................... ......................................... ........14 3.6 FFT算法... .... ... ............................................................ ................................... .........14 4 總結 ................................................

12、................................................. ...................................17 參考文獻................................................................................... ...............................................19 附錄…………………………………………………………......…………….……... ………20 1 緒論

13、 1.1 課題背景 目前,在微電子技術發(fā)展的帶動下,DSP芯片的發(fā)展日新月異,DSP的功能日益強大,性能價格比不斷上升,開發(fā)手段不斷改進。DSP芯片已經完全走下了“貴族”的圣壇。DSP芯片已經在通信與電子系統(tǒng)、信號處理系統(tǒng)、自動控制、雷達、軍事、航空航天、醫(yī)療、家用電器、電力系統(tǒng)等許多領域中得到了廣泛的應用,而且新的應用領域在不斷地被發(fā)掘。 TI、AD、AT&T、Motorola和Lucent等公司是DSP芯片的主要生產商。其中TI公司的TMS320系列的DSP占據了全球DSP市場的50%左右。該系列產品在我國同樣被用戶廣泛使用,市場份額更高,超過90%。 鑒于多數DSP芯片和高速A/D

14、、D/A芯片工藝為貼片封裝,對一般用戶來說工廠制版成本較高、手工工藝難制版、效果差等的困難,本系統(tǒng)設計了一套基于DSP芯片的最小系統(tǒng)板,并擴展了A/D、D/A實現語音信號的采集和回放,制作語音處理平臺。設計的核心芯片采用TI公司的TMS320VC5402PGE100進行設計,其最高處理速度能達到100MIPS(每秒執(zhí)行100百萬條指令),性能優(yōu)越、性價比高,適合大多數用戶和教學科研。 基于DSP的運用領域和前景,結合我的專業(yè)跟個人愛好,本次畢業(yè)設計所選課題為DSP語音采集回放處理平臺。以TMS320C5402DSP為核心,對外部語音信號進行采集,并對所采集信號進行語音處理,最后通過外

15、部設備回放。該系統(tǒng)適合對單語音信號進行處理。由于設計過程中采用的A/D、D/A芯片是TI公司的TLC320AD50,所以最高采樣速率為22.05KHZ。為了驗證本次設計的正確性和可用性,對采集的語音信號進行FIR濾波,濾除50HZ交流信號,并抑制頻率在3600HZ以上的語音信號。所設計的濾波器是帶通濾波器,通帶為200HZ—3400HZ,經過實驗驗證,得到了預期的濾波效果。證明本次單通道語音信號處理平臺設計的正確性,可用性。 1.2 課題目的 DSP課程設計是對《數字信號處理》、《DSP原理及應用》等課程的較全面練習和訓練,是實踐教學中的一個重要環(huán)節(jié)。 通過本次課程設計,綜合運用數字信號

16、處理、DSP技術課程以及其他有關先修課程的理論和生產實際知識去分析和解決具體問題,并使所學知識得到進一步鞏固、深化和發(fā)展。初步培養(yǎng)學生對工程設計的獨立工作能力,掌握電子系統(tǒng)設計的一般方法。通過課程設計完成基本技能的訓練,如查閱設計資料和手冊、程序的設計、調試等,提高學生分析問題、解決問題的能力。 本題目通過TLC320AD50采集音頻信號(f.max<10kHz),編寫DSP的FFT處理程序(自定頻譜分辨力),獲得幅頻特性之后,在點陣液晶(128*64)中大致顯示出幅頻圖。并在液晶中用文字顯示頻率幅值前三的頻率值。 1、DSP與TLC320AD50接口電路的原理圖繪制; 2、DSP控制

17、TLC320AD50的程序編寫與調試; 3、TLC320AD50進行語音模擬量到數字信號的轉換,實現聲音的采集,在CCS軟件中分析信號的幅頻特性; 4、編寫DSP的FFT處理程序; 5、控制點陣液晶,實現繪圖功能,將幅頻圖顯示出來; 6、按要求編寫課程設計報告書,正確、完整的闡述設計和實驗結果; 7、在報告中繪制程序的流程圖,并文字說明。 2 硬件電路 2.1 系統(tǒng)框圖 本系統(tǒng)的硬件電路主要由信號預處理模塊、信號采集模塊、信號頻譜分析模塊、時鐘觸發(fā)信號、系統(tǒng)控制模塊和鍵盤顯示模塊6部分組成。

18、系統(tǒng)組成框圖如圖2.1所示。 圖2.1 系統(tǒng)組成框圖 2.2 信號處理部分 信號預處理具體電路主要由信號合成、阻抗匹配、0.5f的低通濾波、50H的陷波器和信號抬高等部分組成,如圖2.2所示。 圖2.2 信號處理框圖 2.2.1 信號疊加電路 信號疊加電路采用反向求和電路,將3信號求和的輸出,運放采用OP37。 2.2.2 低通濾波器 由于要求音頻信號為10KHz以下,為了使信號得到更高的純度,則需對不用的高頻信號進行濾出,從而提高系統(tǒng)測量精度。通過

19、濾波器的快速設計方法設計出12KHz的低通濾波器。 2.2.3 50Hz陷波電路 在音頻信號中,工頻50HZ信號對系統(tǒng)的影響最大,因此,在信號處理中加入50HZ的陷波電路。計算工公式為:f=1/2πRC。 2.2.4 電平轉換電路 由于ADC只能采集正電壓,則需對信號進行抬高,分析計算得電路需加3V的直流電平。 2.2.5 信號采集部分 語音信號模數/數模轉換選擇TLC320AD50(以下簡稱AD50)芯片,AD50使用過采樣(over sampling)∑—Δ技術提供從數字信號到模擬信號(DA)和模擬信號到數字信號(AD)的高分辨率低速信號轉換。該器件包括兩個串行的同步轉換通道(

20、用于各自的數據傳輸),在DA之前有一個插人濾波器(interpolationfilter),在AD之后有一個抽取濾波器(decimdtionfilter),由此可降低AD50自身的噪聲。此外,AD50還具有片內時序和控制功能。   AD50特點如下。    輸入信號。單端信號輸人,幅度在1~4V之間。    輸出信號。單端信號輸出,幅度在1~4V之間。    單一 5V電源供電,也可以使用5V模擬電源和3V數字電源同時供電。    最大工作功耗為100mW。    通用16位數據格式,也可以采用2的補碼數據格式。    內部基準電壓。    AD為64倍采樣,DA為25

21、6倍采樣。    支持各種V.34協議的采樣速率。    具有多種可選的采樣頻率。    支持商業(yè)級音響應用。    工作溫度范圍從-40~850。   AD50的引腳分布如圖2.3所示((1)為DW封裝的引腳分布,(2)為PT封裝的引腳分布)。   圖2.3 AD50的引腳分布   AD50的各個引腳的說明如表2-1所示。   表2-1 AD50的引腳說明 續(xù)表   在AD50正常工作前,必須對它進行正確的初始化。初始化操作的主要工作是配置AD50的4個控制寄存器CR1、CR2、CR3和CR4??刂萍拇嫫鞯淖x寫是通過二次通信來實現。在二次通信

22、中,D0~D7為寫人控制寄存器的數據或者從控制寄存器讀出的數據,D8~D12的內容決定選擇哪個控制寄存器,D13位決定是讀操作還是寫操作。由D8~D13位確定的所有情況如表2-2所示。   表2-2AD50的D8~D13位確定的所有操作情況   控制寄存器1中各個控制位的功能說明如表2-3所示。   表2-3控制寄存器1的各個控制位的功能說明   控制寄存器2中各個控制位的功能說明如表2-4所示。   表2-4 控制寄存器2的各個控制位的功能說明   控制寄存器3中各個控制位的功能說明如表2-5所示。   表2-5 控制寄存器3的各個控制位的功能說明  

23、 控制寄存器4中各個控制位的功能說明如表2-6、2-7所示。   表2-6 控制寄存器4的各個控制位的功能說明   表2-7 控制寄存器4的第4~第6位對應的N值   AD50控制寄存器的設置必須在二次通信中完成。AD50有硬件和軟件兩種方式啟動二次通信,下面介紹硬仵方式啟動AD50的二次通信過程。硬件啟動過程如下:C5409通過其內部寄存器將XF引腳變?yōu)楦唠娖?,從而控制AD50的FC引腳到高電平,然后向緩沖串口寫一個16位的控制字,低8位是AD50的控制寄存器初始化值,高8位選擇所要初始化的控制寄存器及操作。整個過程的時序如圖2.4所示。   圖2.4 硬件啟動A

24、D50二次通信時序   AD50的工作過程可分為AD通道工作過程和DA通道工作過程。AD通道把模擬信號轉換成數字信號,并以2進制補碼形式表示。當幀同步信號有效時(FS為低電平),16位(或者15位)數字信號在SCLK的上升沿輸出到DOUT引腳,一位數據對應一個SCLK周期。傳輸時序如圖2.5所示。   圖2.5 AD50的AD通道數據傳輸時序   AD50的DA通道把送人的數字信號轉換成模擬信號。在SCLK的作用下,數字信號通過DIN引腳進人DA通道,每個SCLK的下降沿輸人一位數字信號。DA將輸入的數字信號轉換成模擬信號輸出,DA通道的傳輸時序如圖2.6所示。   圖

25、2.6 AD50的DA通道數據傳輸時序   AD50的前后端信號處理包括兩個處理電路:輸人模擬信號的處理電路和依據輸出模擬信號的處理電路。這兩個處理電路的主要作用是將信號進行處理,使之更加適合AD和DA的要求。   為了達到更好的信號處理效果,AD50的模擬信號輸人一般采用差分輸人方式,即使用兩個運算放大器,將單端輸入信號轉換成差分輸人信號,電路連接如圖2.7所示。   圖2.7 AD50單端信號轉換成差分信號 由圖可知,單端輸人信號經過兩個22μF的隔直電容,送人運算放大器的反相端,輸出反相信號IMP;IMP再輸人到另一個信號的反相端,輸出同相信號INP,從而形成差分輸人

26、信號INP和IMP。圖中的運算放大器選擇的是TI公司的TLC4502,也可以選用其他可替代的運算放大器芯片。 除了使用上述的運算放大器外,也可以使用變壓器將單端信號轉換成差分信號輸人到AD50,如圖2.8所示。   圖2.8 使用變壓器將單端信號轉換成差分信號 圖中推薦的值為50Ω,Rin為22Ω,Cin為10μF,這些元件的值也可以根據具體的信號進行調整,一般清況下電阻值在10~100Ω之間,電容值在10~200pF之間。   AD50的DA輸出為差分信號,可以直接驅動600Ω的負載。DA輸出處理電路如圖2.9所示。   圖2.9 AD50的DA后端輸出信號

27、處理   AD50的去耦合電容的連接如圖2.10所示。   圖2.10 AD50的去耦合電容的連接   AD50的模擬電源和數字電源可以使用一個電感連接在一起,連接方法如圖2.11所示。   圖2.11 AD50模擬和數字電源的連接 2.3 時鐘信號產生電路 通過計算,對模擬信號的采樣速率為25.6KHz,則需產生25.6KHZR的方波.作為A/D轉換數據的速率??刹捎脝纹呻娐泛瘮蛋l(fā)生器ICL8038。ICL8038工作頻率范圍在幾Hz到幾百KHZ之間,可以同時輸出三角波、方波和正統(tǒng)波,滿足設計要求。

28、 3 軟件設計 3.1 DSP的初始化 包括定時器0的初始化,以確保TOUT0引腳能輸出正確的時鐘信號到AD50,使AD50能根據該時鐘信號進行采樣。初始化緩沖串口時,應使DSP工作于主設備方式,CLKR0和FSX0引腳設為輸出。DSP初始化完成后,在DSP的TOUT0,CLKR0,FSX0這3個引腳可以看到連續(xù)輸出的脈沖。 3.2 AD50的初始化 此時主要是設置DSP的XF引腳輸出為高,以啟動AD50的二次通信,在正確設置AD50的4個控制寄存器以后,AD50開始采樣數據。此時檢測AD50的DOUT引腳能,能發(fā)現引腳有連續(xù)的信號輸出。 3.3 設置

29、DSP中斷 DSP的中斷負責從緩沖串口讀取數據,可以在CCS中查看讀取的數據是否正確,如果每次讀取的都是0或者同一個數據,說明AD50沒有正常工作,此時需檢查DSP或者AD50是否初始化成功。 3.4 數據存儲 DSP從緩沖串口讀取數據存放到RAM,連續(xù)存放500或者1000個數據,可以通過CCS的畫圖功能看到采集到的數據。這時主要判斷采樣頻率是否正確、有沒有數據丟失等。 3.5 數據輸出 將RAM中的數據直接送到AD50的D/A單元,轉換成模擬信號后輸出。這時從AD50的模擬信號輸出端可以看到和輸入端一樣的信號。 3.6 FFT算法 本系統(tǒng)軟件設計主要實現FFT算法和各頻率和

30、對應功率的分析和顯示,由于DSP語言表達和運算能力比較強且具有很好的可移植性和硬件控制能力,則采用DSP語言實現。總體程序流程圖如圖3.1所示。 圖3.1 總體程序流程圖 本設計中FFT根據DFT的基二分解方法,在第L(L表示從左到右的運算級數,L=1,2,3…M)級中,每個蝶形的兩個輸入數據相距B(L-1)個點,同一旋轉因子對應著間隔為2L點的2(M-L)個蝶形。從輸入端開始,逐級進行,在進行L級運算時,依次求出2(L-1)不同的旋轉因子,每求出一個旋轉因子,就計算完它對應的所有的2(M-L)個蝶形。因此用三重循環(huán)程序實現FFT變換。同時采用原址計算,可節(jié)省

31、大量的存儲單元。FFT算法的程序框圖如圖3.2所示。 圖3.2 FFT算法的程序框圖 系統(tǒng)用于實現語音信號的采集和播放,收到數據后,AD50對數據進行模數轉換,變成數字語音信號后存儲于內部RAM,然后輸出到AD50,AD50進行數模轉換后輸出到相應的后端處理電路,最后由后端電路將輸入的語音信號顯示。 4 總結 在這次課程設計中,我遇到了許多問題,這些問題是我們初學者經常會遇到的問題。通過老師的指導,和自己的思考,總結如下: 問題1:單步可以運行,連續(xù)運行時總回0地址。 解決

32、辦法:Watchdog沒有關,連續(xù)運行復位DSP回到0地址。 問題2:OUT文件不能load到片內flash中。 解決辦法:Flash不是RAM,不能用簡單的寫指令寫入,需要專門的程序寫入。CCS和CSourceDebugger中的load命令,不能對flash寫入。OUT文件只能load到片內RAM,或片外RAM中。 問題3:在flash中如何加入斷點解決辦法:在flash中可以用單步調試,也可以用硬件斷點的方法在flash中加入斷點,軟件斷點是不能加在ROM中的。硬件斷點,設置存儲器的地址,當訪問該地址時產生中斷。 問題4:中斷向量 解決辦法:C2000的中斷向量不可重定位,因此

33、中斷向量必須放在0地址開始的flash內。在調試系統(tǒng)時,代碼放在RAM中,中斷向量也必須放在flash內。 問題5:DSP初始化 解決辦法:DSP在RESET后,許多的寄存器的初值一般同用戶的要求不一致,例如:等待寄存器,SP,中斷定位寄存器等,需要通過初始化程序設置為用戶要求的數值。初始化程序的主要作用:1)設置寄存器初值。2)建立中斷向量表。3)外圍部件初始化。 GEL文件的功能: GEL文件的功能同emuinit.cmd的功能基本相同,用于初始化DSP。但它的功能比emuinit的功能有所增強,GEL在CCS下有一個菜單,可以根據DSP的對象不同,設置不同的初始化程序。以TMS3

34、20LF2407為例: #defineSCSR10x7018;定義scsr1寄存器 #defineSCSR20X7019;定義scsr2寄存器 #defineWDKEY0x7025;定義wdkey寄存器 #defineWDNTR0x7029;定義wdntr寄存器 StartUp();開始函數 { GEL_MapReset();;存儲空間復位GEL_MapAdd(0x0000,0,0x7fff,1,1);定義程序空間從0000-7fff可讀寫 GEL_MapAdd(0x8000,0,0x7000,1,1);定義程序空間從8000-f000可讀寫 GEL_MapAdd(0

35、x0000,1,0x10000,1,1);定義數據空間從0000-10000可讀寫 GEL_MapAdd(0xffff,2,1,1,1);定義i/o空間0xffff可讀寫 GEL_MapOn();存儲空間打開 GEL_MemoryFill(0xffff,2,1,0x40);在i/o空間添入數值40h *(int*)SCSR1=0x0200;給scsr1寄存器賦值 *(int*)SCSR2=0x000C;給scsr2寄存器賦值,在這里可以進行mp/mc方式的轉換 *(int*)WDNTR=0x006f;給wdntr寄存器賦值 *(int*)WDKEY=0x055;給wdkey寄存器

36、賦值 *(int*)WDKEY=0x0AA;給wdkey寄存器賦值 cmd文件: 由3部分組成: 1)輸入/輸出定義:.obj文件:鏈接器要鏈接的目標文件;.lib文件:鏈接器要鏈接的庫文件;.map文件:鏈接器生成的交叉索引文件;.out文件:鏈接器生成的可執(zhí)行代碼;鏈接器選項。 2)MEMORY命令:描述系統(tǒng)實際的硬件資源。 3)SECTIONS命令:描述"段"如何定位。 通過近兩周的課程設計,我學到了許多知識,使我實現了從茫然到基本的認識到比較熟練的運用DSP的轉變。剛開始自己編的程序運行就錯誤很多,當時都沒信心能把這個課程設計完成,但什么都要自己面對的。后來在老師的指導和

37、自己的思考下,我把程序統(tǒng)統(tǒng)都重新寫了一遍,并反復修改,最后通過編譯。在后面的時間里,我順利完成了課程設計。 參考文獻 [1] 鄒彥. DSP原理及應用[M]. 北京:電子工業(yè)出版社,2005,1. [2] 戴明楨.TMS320C54xDSP結構、原理及應用[M].北京航空航天大學出版社,2001,8. [3] 胡圣堯. DSP原理及應用[M].東南大學出版社,2008.7. [4] 清源科技.TMS320C54xDSP應用程序設計教程[M].機械工業(yè)出版社,2004,1. [5] 清源科技.TMS320C54x硬件開發(fā)教程[M].機械工業(yè)出版社,2003

38、,1. 附錄A音頻信號頻譜分析完整程序 ex12.asm ************************************************ * FileName: ex12.asm * * Description: 音頻信號頻譜分析實驗 * * Copyright(C) SanZhi Electronic, Author Zpin * *******************

39、***************************** .title "ex12" BSP .set 1 ;當前使用McBsp1 ;McBsp 內存映射寄存器 SPSA0 .set 038h SPSD0 .set 039h DRR10 .set 021h DRR20 .set 020h DXR10 .set 023h DXR20 .set 022h SPSA1 .set 048h SPSD1 .set 049h DRR11 .set 041h DRR21

40、.set 040h DXR11 .set 043h DXR21 .set 042h ;McBsp Subaddressed Registers SPCR1 .set 00h SPCR2 .set 01h RCR1 .set 02h RCR2 .set 03h XCR1 .set 04h XCR2 .set 05h SRGR1 .set 06h SRGR2 .set 07h MCR1 .set 08h MCR2 .set 09h RCERA .set 0ah RCERB .set 0bh XCERA

41、 .set 0ch XCERB .set 0dh PCR .set 0eh .if BSP = 0 SPSA .set SPSA0 SPSD .set SPSD0 RDRR .set DRR10 RDXR .set DXR10 .endif .if BSP = 1 SPSA .set SPSA1 SPSD .set SPSD1 RDRR .set DRR11 RDXR .set DXR11 .endif WR_SUB_REG .macro val,addr ;寫McBsp控制寄存器 stm addr,SP

42、SA nop stm val,SPSD nop .endm RD_SUB_REG .macro addr,acc ;讀McBsp控制寄存器 stm #:addr:,SPSA nop ldm SPSD,acc nop nop nop .endm WAITTRX .macro ;等待串口中斷 WAITR? RD_SUB_REG SPCR1,A and #1<<1, A bc WAITR?, AEQ

43、 .endm PROGREG .macro progword ;與AD50二次通訊 stm #01h,RDXR WAITTRX stm #:progword:,RDXR WAITTRX .endm wait .macro STM #0008h, AR0 RPT *AR0 NOP .endm .mmregs .global _c_int00 .sect ".v

44、ectors" RESET bd _c_int00 stm #2000h,SP .space 19*4*16 BRINT0 b recv nop nop BXINT0 b trans nop nop .space 4*4*16 BRINT1 b recv nop nop BXINT1 b trans nop nop .space 4*4*16 .text _c_int00 ld #0h,DP stm #2000h,SP ssbx INTM ssbx SXM

45、 st #2491h,SWWSR st #0ffe0h,PMST st #0f007h,CLKMD stm #4000h,AR1 stm #4000h,AR2 mcbsp_init ;初始化McBsp串口 rsbx CPL nop ; cpl latency nop ; cpl latency nop ; cpl lat

46、ency ld #0, DP ssbx INTM ssbx SXM WR_SUB_REG #0000H,SPCR1 WR_SUB_REG #0200H,SPCR2 WR_SUB_REG #000CH,PCR WR_SUB_REG #0000H,SPCR1 WR_SUB_REG #0000H,SPCR2 WR_SUB_REG #0040H,RCR1 ;16 BITs WR_SUB_REG #0004H,RCR2 ;Ignore FS after the

47、first WR_SUB_REG #0040H,XCR1 ;16 BITs WR_SUB_REG #0004H,XCR2 ;Ignore FS after the first ld 100,A wait andm #0ff3fh, 54h ;set interrupts to come from serial ports not DMA ;by clearing bits 6 and 7 in DMPREC stm #0,RDXR WR_SUB_REG #0001H,SPCR1 ;啟動McBsp串口

48、 WR_SUB_REG #0201H,SPCR2 ld 100,A wait aic_init stm #0h,IMR orm #0c00h,IMR stm #0ffffh,IFR PROGREG 0000001100000001b ;76543210 PROGREG 0000010000010000b ;76543210 ;PROGREG 0104H ;二次通訊初始化AD50 ;PROGREG 0280H ;PROGREG 0301h

49、 ;PROGREG 045Ah ld RDRR,A ld RDRR,A stlm A,RDXR stlm A,RDXR rsbx INTM nop nop nop js nop nop nop b js recv ldm RDRR,A ;讀取ADC采樣數據 ld #0d000h,b sub ar1,b bc record,beq ;判斷錄音是否結束 ;ld a,b ;ld #0,a stl a,*ar1+ ;未結束->錄音 ;ld b

50、,a b play ;已結束->放音 record ld #0d000h,b sub ar2,b bc load,bneq ;錄制數據放完,再從頭放起 stm #4000h,ar2 load ld *ar2+,a ;加載錄制數據 play and #0fffeh,a ;放音 stlm A,RDXR rete trans rsbx XF rete .end EX12.MAK /************* Code Composer V1 Project Data ***

51、***************** The following section contains data generated by Code Composer to store project information like build options, source filenames and dependencies. [command filename] experi.cmd 1 [Project Root] D:\dsp_user_soft\sanzhi\12語音錄放 [build options] 3 Linker = "-o ex1.

52、out -x " Assembler = "-s " Compiler = "-g -as -frD:\dsp_user_soft\sanzhi\ " [source files] ex12.asm 880946490 1 -18158 [dependencies] 0 -802 [version] 2.0 */ -o ex1.out -x "ex12.obj" "experi.cmd" /******** End of Project Data Generated by Code Composer ********/ Exx.ASM BS

53、P .set 0 ; 5409 DSK audio in/out codec uses McBSP0 SAMPLERATE .set 8 .mmregs SPCR1_VAL .set 0000h SPCR2_VAL .set 0200h RCR1_VAL .set 040h RCR2_VAL .set 004h XCR1_VAL .set 040h XCR2_VAL .se

54、t 004h PCR_VAL .set 0Ch MCBSP0_TO_CODEC0 .set 0xFE MCBSP1_TO_CODEC1 .set 0xFD CODEC1_FC_ON .set 0x8 CODEC0_FC_ON .set 0x4 CPLD_CTRL2 .set 0x4 * McBSP Memory Mapped Registers SPSA0 .set 038h SPSD0 .set 039h DRR10 .set 021h DXR10

55、 .set 023h SPSA1 .set 048h SPSD1 .set 049h DRR11 .set 041h DXR11 .set 043h * McBSP Subaddresed Registers SPCR1 .set 00h SPCR2 .set 01h RCR1 .set 02h RCR2 .set 03h XCR1

56、 .set 04h XCR2 .set 05h SRGR1 .set 06h SRGR2 .set 07h PCR .set 0Eh ;; Choose appropriate sub-address registers and DRR/DXR .if BSP = 0 SPSA .set SPSA0 SPSD .set SPSD0 RDRR .set 21H ; McBSP0

57、 data receive register 1 RDXR .set 23H ; McBSP0 data transmit register 1 MCBSP_TO_CODEC .set MCBSP0_TO_CODEC0 IMASK .set (1 << 4) .endif WR_MCBSP_SUB_REG .macro addr,val stm addr,SPSA nop

58、 stm val,SPSD nop .endm RD_MCBSP_SUB_REG .macro addr,acc stm #:addr:,SPSA nop ldm SPSD,acc nop

59、 nop nop .endm WAITTRX .macro ; Wait for serial port to Rx word WAITR? RD_MCBSP_SUB_REG SPCR1,A and #1<<1, A bc WAITR?, AEQ .endm PROGREG .macro progword stm #0

60、1h,RDXR WAITTRX stm #:progword:,RDXR WAITTRX .endm wait .macro STM #0008h, AR0 ;AR0 points to ACCL RPT *AR0 ;repeat the # of times specified in ACCL NOP ;do nothing in the delay loop .endm .global R

61、ESET,AIC_INIT,WAIT_INT,_CPU_to_codec_ch1,READ_SAMPLES .text .mmregs .def _main p0_serialflag .set 060h p0_serialint .set 061h SYSTEM_STACK .set 04000h .text _main ld #0, DP ssbx INTM ssbx SXM st #0, p

62、0_serialint st #2491h, SWWSR ;2 wait except for on-chip data st #0ffe0h, PMST ; MP/MC = 1, IPTR = 1ff st #0f007h,clkmd st #1, p0_serialflag ;************************************************************************* ;* audio_init: ;**************************

63、*********************************************** _DSS_init rsbx CPL nop ; cpl latency nop ; cpl latency nop ; cpl latency ld #0, DP ssbx INTM ssbx SXM WR_MCBSP_SUB_REG SPCR1,

64、 #SPCR1_VAL WR_MCBSP_SUB_REG SPCR2, #SPCR2_VAL WR_MCBSP_SUB_REG PCR, #PCR_VAL WR_MCBSP_SUB_REG SPCR1, #0h ; reset McBSP0 WR_MCBSP_SUB_REG SPCR2, #0h ;; write McBSP registers WR_MCBSP_SUB_REG RCR1, #RCR1_VAL WR_MCBSP

65、_SUB_REG RCR2, #RCR2_VAL WR_MCBSP_SUB_REG XCR1, #XCR1_VAL WR_MCBSP_SUB_REG XCR2, #XCR2_VAL LD #100 ,A WAIT ;; set interrupts to come from serial ports not DMA ;; by clearing bits 6 and 7 in DMPREC andm #0ff3fh, 54h

66、 ;; clear xmit register -- why? stm #0, RDXR ;; now enable McBSP transmit and receive WR_MCBSP_SUB_REG SPCR1,#SPCR1_VAL | 1 WR_MCBSP_SUB_REG SPCR2,#SPCR2_VAL | 1 LD #100 ,A WAIT _AIC_INIT STM #0, IMR orm #IMASK, IMR ;only receive-int is served. ; orm #08h, IMR stm #0ffffh, IFR

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

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服 - 聯系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網版權所有   聯系電話:18123376007

備案號:ICP2024067431-1 川公網安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網,我們立即給予刪除!