嵌入式D-A接口實驗_第1頁
嵌入式D-A接口實驗_第2頁
嵌入式D-A接口實驗_第3頁
嵌入式D-A接口實驗_第4頁
嵌入式D-A接口實驗_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2.5 D/A 接口實驗一、實驗?zāi)康?學(xué)習(xí) D/A 轉(zhuǎn)換原理 掌握 MAX504 D/A 轉(zhuǎn)換芯片的使用方法 掌握不帶有 D/A 的 CPU 擴展 D/A 功能的主要方法 了解 D/A 驅(qū)動程序加入內(nèi)核的方法二、實驗內(nèi)容學(xué)習(xí) D/A 接口原理,了解實現(xiàn) D/A 系統(tǒng)對于系統(tǒng)的軟件和硬件要求。閱讀 MAX504芯片文檔,掌握其使用方法。三、預(yù)備知識 有 C 語言基礎(chǔ) 掌握在 Linux 下常用編輯器的使用 掌握 Makefile 的編寫和使用 掌握 Linux 下的程序編譯與交叉編譯過程四、實驗設(shè)備及工具硬件:UP-TECH S2410/P270 DVP 嵌入式實驗平臺、PC 機 Pentium 500 以上, 硬盤 10G 以上。 軟件:PC 機操作系統(tǒng) REDHAT LINUX 9.0MINICOMARM-LINUX 開發(fā)環(huán)境五、實驗原理1、D/A 轉(zhuǎn)換器D/A 轉(zhuǎn)換器的內(nèi)部電路構(gòu)成無太大差異,一般按輸出是電流還是電壓、能否作乘法運算等 進行分類。大多數(shù) D/A 轉(zhuǎn)換器由電阻陣列和 n 個電流開關(guān)(或電壓開關(guān))構(gòu)成。按數(shù)字輸入 值切換開關(guān),產(chǎn)生比例于輸入的電流(或電壓)。 電壓輸出型(如 TLC5620)電壓輸出型 D/A 轉(zhuǎn)換器雖有直接從電阻陣列輸出電壓的,但一般采用內(nèi)置輸出放大器以低 阻抗輸出。直接輸出電壓的器件僅用于高阻抗負載,由于無輸出放大器部分的延遲,故常 作為高速 D/A 轉(zhuǎn)換器使用。 電流輸出型(如 THS5661A)電流輸出型 D/A 轉(zhuǎn)換器很少直接利用電流輸出,大多外接電流電壓轉(zhuǎn)換電路得到電壓輸 出,后者有兩種方法:一是只在輸出引腳上接負載電阻而進行電流電壓轉(zhuǎn)換,二是外接 運算放大器。用負載電阻進行電流電壓轉(zhuǎn)換的方法,雖可在電流輸出引腳上出現(xiàn)電壓, 但必須在規(guī)定的輸出電壓范圍內(nèi)使用,而且由于輸出阻抗高,所以一般外接運算放大器使 用。此外,大部分 CMOS DA 轉(zhuǎn)換器當輸出電壓不為零時不能正確動作,所以必須外接運算 放大器。當外接運算放大器進行電流電壓轉(zhuǎn)換時,則電路構(gòu)成基本上與內(nèi)置放大器的電壓 輸出型相同,這時由于在 D/A 轉(zhuǎn)換器的電流建立時間上加入了運算放入器的延遲,使響應(yīng) 變慢。此外,這種電路中運算放大器因輸出引腳的內(nèi)部電容而容易起振,有時必須作相位 補償。 乘算型(如 AD7533)D/A 轉(zhuǎn)換器中有使用恒定基準電壓的,也有在基準電壓輸入上加交流信號的,后者由于能 得到數(shù)字輸入和基準電壓輸入相乘的結(jié)果而輸出,因而稱為乘算型 D/A 轉(zhuǎn)換器。乘算型 D/A 轉(zhuǎn)換器一般不僅可以進行乘法運算,而且可以作為使輸入信號數(shù)字化地衰減的衰減器及對 輸入信號進行調(diào)制的調(diào)制器使用。 一位 D/A 轉(zhuǎn)換器一位 D/A 轉(zhuǎn)換器與前述轉(zhuǎn)換方式全然不同,它將數(shù)字值轉(zhuǎn)換為脈沖寬度調(diào)制或頻率調(diào)制的 輸出,然后用數(shù)字濾波器作平均化而得到一般的電壓輸出(又稱位流方式),用于音頻等場 合。2、D/A 轉(zhuǎn)換器的主要技術(shù)指標 分辯率(Resolution) 指最小模擬輸出量(對應(yīng)數(shù)字量僅最低位為“1”)與最大量(對應(yīng)數(shù)字量所有有效位為“1”) 之比。 建立時間(Setting Time)是將一個數(shù)字量轉(zhuǎn)換為穩(wěn)定模擬信號所需的時間,也可以認為是轉(zhuǎn)換時間。D/A 中常用建 立時間來描述其速度,而不是 A/D 中常用的轉(zhuǎn)換速率。一般地,電流輸出 D/A 建立時間較 短,電壓輸出 D/A 則較長。 其他指標還有線性度(Linearity),轉(zhuǎn)換精度,溫度系數(shù)/漂移。3、MAX50410 位 D/A 轉(zhuǎn)換器的特點由單個 5V 電源供電 電壓輸出緩沖內(nèi)部 2.048V 參考電壓 1INL=2 LSB(MAX) 電壓不隨溫度變化 可變的輸出范圍:0VVDD,VSSVDD 上電復(fù)位 串行輸出其各個管腳的功能如表 2.5.1 所示:表 2.5.1 管腳定義管腳名稱功能1BIPOFFBipolar offset/gain resistor2DINSerial data input3CLRClear. Asynchronously sets DAC register to all 0s.4SCLKSerial clock input5CSChip select, active low6DOUTSerial data output for daisy-chaining7DGNDDigital ground8AGNDAnalog ground9REFINReference input10REFOUTReference output, 2.048V. Connect to VDD if not used.11VSSNegative power supply12VOUTDAC output13VDDPositive power supply14RFBFeedback resistor4、MAX504 在開發(fā)板上的連接MAX504 在開發(fā)板中的連接如圖 2.5.1 所示:圖 2.5.1 Max504 的連接上圖中,RFB 連接 VOUT、BIPOFF 連接 AGND,使得輸出電壓范圍為 02VREFIN,即 04.069V。 時鐘和輸入、輸出信號分別與同步串口的時鐘、發(fā)送和接收端相連??梢酝ㄟ^ WriteSDIO(data)函數(shù)(Uhal.h)向 MAX504 發(fā)送數(shù)據(jù)。發(fā)送數(shù)據(jù)時要注意,MAX504 可接受12 位的數(shù)據(jù),但低兩位不起作用。WriteSDIO(data)函數(shù)一次只能發(fā)送 8 位的數(shù)據(jù),所以 發(fā)送數(shù)據(jù)時應(yīng)先將數(shù)據(jù)左移兩位,然后先發(fā)送高八位,再發(fā)送低八位數(shù)據(jù)。CLR 和 CS 分別 由 MAX504_CLEAR()和 MAX504_ENABLE()、MAX504_DISABLE()函數(shù)(Max504.c)控制。六、程序分析程序流程圖如圖 2.5.2:具體程序代碼 da_main.c 如下:圖 2.5.2 實驗程序流程圖/*by zou jian guo*2004.9.27 14:30*the driver is s3c2410_da_max504.c in drivers/char*/#include #include #include #include #define DA0_IOCTRL_WRITE0x10#define DA1_IOCTRL_WRITE0x11#define DA_IOCTRL_CLR0x12#define Max504_FULL4.096f static int da_fd = -1;char *DA_DEV=/dev/exio/0raw;void Delay(int t)int i;for(;t0;t-)for(i=0;i400;i+);/*/int main(int argc, char *argv)float v;unsigned int value;/char *da_dev;/unsigned int da_num=0;if(argc 3)printf(n);printf(Error parametern); printf(Input as:n); printf(./ad_main da_id numn);printf(da_id: select between 0 and 1n); printf(num: range 0.0 4.096n); printf(n);return 1;sscanf(argv2, %f,&v);if(vMax504_FULL)printf(DA out must between: 0 to %fn, Max504_FULL);return 1;value=(unsigned int)(v*1024.0f)/Max504_FULL);if(da_fd=open(DA_DEV, O_WRONLY)0) printf(Error opening /dev/exio/0raw devicen); return 1;if(strcmp(argv1,0) = 0)ioctl(da_fd, DA_IOCTRL_CLR, 0);/clear da. ioctl(da_fd, DA0_IOCTRL_WRITE, &value);else if (strcmp(argv1,1) = 0)ioctl(da_fd, DA_IOCTRL_CLR, 1);/clear da. ioctl(da_fd, DA1_IOCTRL_WRITE, &value);#if 0ioctl(da_fd, DA_IOCTRL_CLR, 0);/clear da. for(;)#endifioctl(da_fd, DA0_IOCTRL_WRITE, &value); Delay(500);close(da_fd);printf(Current Voltage is %f vn, v);return 0;七、實驗步驟1、閱讀理解源碼進入/arm2410cl/exp/basic/05_da 目錄,使用 vi 編輯器或其他編輯器閱讀理解源代碼2、編譯應(yīng)用程序運行 make 產(chǎn)生 da 可執(zhí)行文件 da_mainrootzxt /# cd /arm2410cl/exp/basic/05_da/ rootzxt 05_da# makearmv4l-unknown-linux-gcc-c -o da_main.o da_main.c armv4l-unknown-linux-gcc da_main.o -o da_main rootzxt 05_da# lsda_main da_main.c da_main.o doc drivers Makefile s3c44b0-spi.h3、下載調(diào)試切換到 minicom 終端窗口,使用 NFS mount 開發(fā)主機的/arm2410cl 到/host 目錄,然后進入/host/exp/05_da/drivers 目錄,用 insmod s3c2410-exio.o 命令插入 D/A 驅(qū)動,并用 lsmod命令查看是否已經(jīng)插入。/mnt/yaffscd /host/exp/basic/05_da/ /host/exp/basic/05_dacd drivers/host/exp/basic/05_da/driversinsmod s3c2410-exio.o Using s3c2410-exio.o /host/exp/basic/05_da/driverslsmodModuleSize Used byNot taintedS3c2410-exio23840 (unused)i2c-tops2141040 (unused)注意:卸載模塊可以使用 rmmod 命令,以本實驗為例,卸載方法如下:/host/exp/basic/05_darmmod s3c2410-exio進入/host/exp/basic/05_da 目錄,運行./da_main,觀察運行結(jié)果的正確性。在輸 入 ./da_main 后會出現(xiàn)下面的提示信息。/host/exp/basic/05_da./da_mainError parameterInput as:./ad_main da_id numda_id: select between 0 and

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論