版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> DSP設(shè)計(jì)報(bào)告</b></p><p> 題目CPU內(nèi)部AD轉(zhuǎn)換</p><p> 學(xué) 院: 物理與信息工程學(xué)院 </p><p> 專 業(yè): 測(cè) 控 </p><p><b> 2013年1月2日</b></
2、p><p><b> 目 錄</b></p><p> 一:設(shè)計(jì)目的…………………………………..........…………3</p><p> 二:實(shí)驗(yàn)設(shè)備..……………………………………………3</p><p> 三:實(shí)驗(yàn)原理.……………………………………………...……4</p><p>
3、; 四:實(shí)驗(yàn)說(shuō)明..…………………………………………………7</p><p> 五:實(shí)驗(yàn)數(shù)據(jù)…………………………………..……………10</p><p> 六:心得與體會(huì)……………………………………………11</p><p> A/D實(shí)驗(yàn)(CPU)</p><p><b> 一:設(shè)計(jì)目的</b></p&g
4、t;<p> 1. 熟悉CPU內(nèi)部AD轉(zhuǎn)換的基本原理。</p><p> 2. 掌握TMS320F2812的內(nèi)部ADC功能模塊的指標(biāo)和常用方法。</p><p><b> 二、實(shí)驗(yàn)設(shè)備</b></p><p> 計(jì)算機(jī),CCS3.3版本軟件,DSP仿真器,E300實(shí)驗(yàn)箱,2812CPU板(新的),信號(hào)線,示波器</p
5、><p><b> 三、實(shí)驗(yàn)原理與任務(wù)</b></p><p><b> 1、實(shí)驗(yàn)原理:</b></p><p> TMS320F2812DSP自帶16路12位單極性ADC轉(zhuǎn)換器,并且內(nèi)置雙采樣保持器??焖俎D(zhuǎn)換時(shí)間運(yùn)行在25MHz。16個(gè)通道可配置為兩個(gè)獨(dú)立的8通道模塊以便為事件管理器A和B服務(wù)。兩個(gè)獨(dú)立的8通道模塊可以
6、級(jí)聯(lián)組成一個(gè)16通道模塊。雖然有多個(gè)輸入通道和兩個(gè)序列器,但是ADC模塊只有一個(gè)轉(zhuǎn)換器。</p><p> 下圖給出了F2812的ADC模塊框圖。</p><p> 兩個(gè)8通道模塊具有一對(duì)系列轉(zhuǎn)換和自動(dòng)序列化的能力,通過(guò)模擬多路復(fù)用器,每個(gè)模塊都可以選擇可用的8個(gè)通道中的任何一個(gè)通道。在級(jí)聯(lián)模式下,自動(dòng)序列發(fā)生器可作為一個(gè)單一的16通道序列發(fā)生器。在每個(gè)序列發(fā)生器上,一旦轉(zhuǎn)換結(jié)束,已選
7、擇的通道值就保存在各個(gè)通道的結(jié)果寄存器ADCRESULT中。</p><p> 自動(dòng)序列化允許系統(tǒng)對(duì)同一通道轉(zhuǎn)換多次,允許用戶執(zhí)行過(guò)采樣算法。這較傳統(tǒng)的單一采樣轉(zhuǎn)換結(jié)果增加了更多的解決方案。</p><p> 輸入模擬電壓的數(shù)字值為:</p><p> 數(shù)字值=4095×(輸入模擬電壓值)/3</p><p> 多觸發(fā)源啟動(dòng)
8、序列轉(zhuǎn)換(SOC)包括:</p><p> ●S/W:軟件直接啟動(dòng);</p><p> ●EVA/B:事件管理器A/B(EVA/B內(nèi)有多個(gè)事件源);</p><p> ●S/W:外部引腳。</p><p> 具體的原理和相關(guān)內(nèi)容,請(qǐng)讀者參閱相關(guān)的文檔和書籍。</p><p><b> 2、實(shí)驗(yàn)任務(wù)一
9、:</b></p><p> 通過(guò)信號(hào)發(fā)生器,產(chǎn)生方波和正玄波,由DSP自帶AD將數(shù)據(jù)采集到DSP內(nèi),經(jīng)過(guò)CCS自帶的graph功能,運(yùn)行程序,觀察測(cè)試結(jié)果。</p><p><b> 3、程序框圖</b></p><p><b> 4、主要程序:</b></p><p> #i
10、nclude "DSP281x_Device.h" // DSP281x Headerfile Include File</p><p> #include "DSP281x_Examples.h" // DSP281x Examples Include File</p><p> interrupt void adc_isr(voi
11、d);</p><p> Uint16 LoopCount;</p><p> Uint16 ConversionCount;</p><p> Uint16 input1[256];</p><p> Uint16 input2[256];</p><p> Uint16 Mixing[256];</
12、p><p> void main(void) </p><p><b> {</b></p><p> InitSysCtrl();</p><p><b> EALLOW;</b></p><p> SysCtrlRegs.PLLCR.all=0x8;</p&g
13、t;<p> SysCtrlRegs.HISPCP.all = 0x3; </p><p><b> EDIS; </b></p><p><b> DINT;</b></p><p> InitPieCtrl();</p><p> IER = 0x0000;<
14、/p><p> IFR = 0x0000;</p><p> InitPieVectTable(); </p><p><b> EALLOW; </b></p><p> PieVectTable.ADCINT = &adc_isr;</p><p><
15、b> EDIS; </b></p><p> InitAdc(); </p><p> PieCtrlRegs.PIEIER1.bit.INTx6 = 1;</p><p> IER |= M_INT1; </p><p> EINT; </p><p> ERTM
16、; </p><p> LoopCount = 0;</p><p> ConversionCount = 0; </p><p> AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; </p><p> AdcRegs.ADCMAXCONV.all = 0x0001; &l
17、t;/p><p> AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0;</p><p> AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x2;</p><p> AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1 = 1; </p><p> AdcRegs.ADCTRL2.
18、bit.INT_ENA_SEQ1 = 1; </p><p> EvaRegs.T1CMPR = 0x0380; </p><p> EvaRegs.T1PR = 0x07FF; </p><p> EvaRegs.GPTCONA.bit.T1TOADC = 1; </p>
19、<p> EvaRegs.T1CON.all = 0x1042; </p><p><b> for(;;)</b></p><p><b> {</b></p><p> LoopCount++;</p><p><b> }</b>&
20、lt;/p><p><b> }</b></p><p> interrupt void adc_isr(void)</p><p><b> {</b></p><p> input1[ConversionCount] = AdcRegs.ADCRESULT0 >>4;</
21、p><p> input2[ConversionCount] = AdcRegs.ADCRESULT1 >>4;</p><p> Mixing[ConversionCount] = input1[ConversionCount] + input2[ConversionCount];</p><p> if(ConversionCount == 256
22、) </p><p><b> {</b></p><p> ConversionCount = 0;//加軟件斷點(diǎn)</p><p><b> }</b></p><p> else ConversionCount++; </p><p> AdcRegs.ADC
23、TRL2.bit.RST_SEQ1 = 1; </p><p> AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1; </p><p> PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; </p><p><b> return;</b></p>
24、;<p><b> }</b></p><p><b> 四、實(shí)驗(yàn)說(shuō)明:</b></p><p> 1、本實(shí)驗(yàn)是用DSP自帶的ADC轉(zhuǎn)換器采集信號(hào)源的信號(hào)。并將采集到的信號(hào)儲(chǔ)存到指定的內(nèi)存區(qū)域。由于ADC是單極性的,所以從信號(hào)源過(guò)來(lái)的雙極性信號(hào)經(jīng)過(guò)偏置電路轉(zhuǎn)換成單極性信號(hào)然后由ADC采樣。</p><p&g
25、t; 2、實(shí)驗(yàn)中相關(guān)語(yǔ)句說(shuō)明:</p><p> /*************************頭文件*********************************/</p><p> #include "DSP281x_Device.h" // DSP281x Headerfile Include File</p><p&g
26、t; #include "DSP281x_Examples.h" // DSP281x Examples Include File</p><p> // Prototype statements for functions found within this file.</p><p> interrupt void adc_isr(void);</p
27、><p> 采用中斷方式來(lái)處理AD轉(zhuǎn)換,也就是在AD轉(zhuǎn)換完后可以產(chǎn)生中斷,然后由DSP處理。</p><p> // Global variables used in this example:</p><p> Uint16 LoopCount;</p><p> Uint16 ConversionCount; AD轉(zhuǎn)換的次數(shù)</
28、p><p> Uint16 input1[256];</p><p> Uint16 input2[256];</p><p> Uint16 Mixing[256];</p><p> void main(void) </p><p><b> {</b></p><p
29、> InitSysCtrl();</p><p><b> EALLOW;</b></p><p> SysCtrlRegs.PLLCR.all=0x8;</p><p> SysCtrlRegs.HISPCP.all = 0x3; // HSPCLK = SYSCLKOUT/6</p><p><
30、b> EDIS;</b></p><p><b> DINT;</b></p><p> 初始化外設(shè)中斷控制器</p><p> InitPieCtrl();</p><p> 禁止中斷,同時(shí)清中斷標(biāo)記和中斷允許。</p><p> IER = 0x0000;<
31、/p><p> IFR = 0x0000;</p><p> 初始化外設(shè)中斷控制器向量表。</p><p> InitPieVectTable(); </p><p> 將中斷服務(wù)程序地址填入中斷向量表。 </p><p> EALLOW; // This is needed to write to E
32、ALLOW protected register</p><p> PieVectTable.ADCINT = &adc_isr;</p><p> EDIS; // This is needed to disable write to EALLOW protected registers</p><p> 初始化ADC,該程序在后面有詳細(xì)介紹。
33、</p><p> InitAdc(); // For this example, init the ADC</p><p> 以下程序開AD轉(zhuǎn)換中斷。</p><p> PieCtrlRegs.PIEIER1.bit.INTx6 = 1;</p><p> IER |= M_INT1; // Enable CPU Interrup
34、t 1</p><p> EINT; // Enable Global interrupt INTM</p><p> ERTM; // Enable Global realtime interrupt DBGM</p><p> LoopCount = 0;</p><p> Conversion
35、Count = 0; </p><p><b> 設(shè)置AD轉(zhuǎn)換參數(shù):</b></p><p> AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; 16通道采樣模式,排序器1,2進(jìn)行級(jí)聯(lián)</p><p> AdcRegs.ADCMAXCONV.all = 0x0001; // SEQ1中有兩個(gè)通
36、道采樣</p><p> AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0; // ADCINA0 在SEQ1中第一個(gè)采樣</p><p> AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x2; // ADCINA2 在SEQ1中第二個(gè)采樣</p><p> AdcRegs.ADCTRL2.bit.EVA_SO
37、C_SEQ1 = 1; // 啟動(dòng)SEQ1采樣</p><p> AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1; // 允許SEQ1采樣中斷</p><p> 參見(jiàn)資料Spru060d,</p><p> 以下設(shè)置定時(shí)器1的比較寄存器的值</p><p> EvaRegs.T1CMPR = 0x0380
38、; // Setup T1 compare value</p><p><b> 設(shè)置周期寄存器的值</b></p><p> EvaRegs.T1PR = 0x07FF; // Setup period register</p><p> 將定時(shí)器1用于AD轉(zhuǎn)換的定時(shí)</
39、p><p> EvaRegs.GPTCONA.bit.T1TOADC = 1; // Enable EVASOC in EVA</p><p> 允許定時(shí)器1進(jìn)入比較模式。</p><p> EvaRegs.T1CON.all = 0x1042; // Enable timer 1 compare (upcount mode)&l
40、t;/p><p><b> 等待AD轉(zhuǎn)換時(shí)間。</b></p><p><b> for(;;)</b></p><p><b> {</b></p><p> LoopCount++;</p><p><b> }</b>&
41、lt;/p><p><b> }</b></p><p> AD轉(zhuǎn)換 中斷服務(wù)程序</p><p> interrupt void adc_isr(void)</p><p><b> {</b></p><p> 將采集來(lái)的值進(jìn)行保存</p><
42、p> input1[ConversionCount] = AdcRegs.ADCRESULT0 >>4;</p><p> input2[ConversionCount] = AdcRegs.ADCRESULT1 >>4;</p><p> Mixing[ConversionCount] = input1[ConversionCount] + input
43、2[ConversionCount]; </p><p> if(ConversionCount == 256) </p><p> {最多采集256個(gè)數(shù)。</p><p> ConversionCount = 0;//加軟件斷點(diǎn)</p><p><b> }</b></p><p>
44、 else ConversionCount++;</p><p> // Reinitialize for next ADC sequence</p><p> 以下使SEQ1可以重新進(jìn)行中斷,和采樣。</p><p> AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; // Reset SEQ1</p><
45、;p> AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1; // Clear INT SEQ1 bit</p><p> PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; // Acknowledge interrupt to PIE </p><p><b> return;</b>&l
46、t;/p><p><b> }</b></p><p> 在文件dsp281x_Adc.c中定義</p><p> void InitAdc(void)</p><p><b> {</b></p><p><b> 內(nèi)部參考基準(zhǔn)上電</b><
47、;/p><p> AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3;// Power up bandgap/reference circuitry</p><p><b> 模擬電路上電。</b></p><p> AdcRegs.ADCTRL3.bit.ADCPWDN = 1;// Power up rest o
48、f ADC</p><p> //DELAY_US(ADC_usDELAY2); // Delay after powering up ADC</p><p><b> }</b></p><p><b> 五、實(shí)驗(yàn)數(shù)據(jù)</b></p><p><b&g
49、t; 六、心得體會(huì):</b></p><p> 通過(guò)這些實(shí)驗(yàn)的設(shè)計(jì)與操作,我們深深體會(huì)到DSP的理論知識(shí)與實(shí)踐相結(jié)合的重要性。在老師的指導(dǎo)下,我們完成了DSP的所有實(shí)驗(yàn),并學(xué)會(huì)了CCS 3.1版軟件,DSP仿真器,E300實(shí)驗(yàn)箱,2812CPU板等的基本操作,掌握了外部斷的處理方法、數(shù)據(jù)存儲(chǔ)實(shí)驗(yàn)、CUP定時(shí)器中斷方式控制程序流程A/D轉(zhuǎn)換模塊的使用、撥碼開關(guān)、了解DSP開發(fā)系統(tǒng)的組成和結(jié)
50、構(gòu)、掌握F2812的CPU定時(shí)器的控制方法,同時(shí)非常感謝老師和同學(xué)們的幫助。</p><p> 1、實(shí)驗(yàn)指導(dǎo)書中已給出一部分內(nèi)容的完整代碼,需要自己思考改動(dòng)的地方不多,因此實(shí)驗(yàn)難度不大。 </p><p> 2、硬件是基礎(chǔ),做實(shí)驗(yàn)時(shí)要首先檢查硬件設(shè)備是否可用,保證后續(xù)實(shí)驗(yàn)的可檢測(cè)性。特別是要確定程序能輸入到實(shí)驗(yàn)箱中。 </p><p> 3
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- ad轉(zhuǎn)換器課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)----ad轉(zhuǎn)換
- 單片機(jī)課程設(shè)計(jì)ad轉(zhuǎn)換
- dsp數(shù)字信號(hào)處理課程設(shè)計(jì)報(bào)告---基于tlv1571的ad轉(zhuǎn)換
- 課程設(shè)計(jì)---逐次漸近型ad轉(zhuǎn)換器
- 微機(jī)原理課程設(shè)計(jì)報(bào)告書--ad轉(zhuǎn)換
- 計(jì)數(shù)型ad轉(zhuǎn)換器課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)---ad轉(zhuǎn)換系統(tǒng)設(shè)計(jì)
- dsp數(shù)字信號(hào)處理課程設(shè)計(jì)報(bào)告-- ad接口設(shè)計(jì)
- dsp課程設(shè)計(jì)--基于dsp的spi接口da轉(zhuǎn)換系統(tǒng)設(shè)計(jì)
- ad課程設(shè)計(jì)
- 基于單片機(jī)的系統(tǒng)課程設(shè)計(jì)---ad轉(zhuǎn)換
- dsp課程設(shè)計(jì)
- dsp課程設(shè)計(jì)---dsp芯片簡(jiǎn)介
- dsp課程設(shè)計(jì)報(bào)告
- dsp課程設(shè)計(jì)實(shí)驗(yàn)
- 微機(jī)皮帶課程設(shè)計(jì)ad
- dsp課程設(shè)計(jì)報(bào)告
- dsp課程設(shè)計(jì)實(shí)驗(yàn)
- 課程設(shè)計(jì)--進(jìn)制轉(zhuǎn)換
評(píng)論
0/150
提交評(píng)論