版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)專心-專注-專業(yè)精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)實(shí)驗(yàn)四_1 A/D接口實(shí)驗(yàn)4.1、實(shí)驗(yàn)?zāi)康牧私庠趌inux環(huán)境下對(duì)S3C2410芯片的8通道10位A/D的操作與控制。4.2、實(shí)驗(yàn)內(nèi)容學(xué)習(xí)A/D接口原理,了解實(shí)現(xiàn)A/D系統(tǒng)對(duì)于系統(tǒng)的軟件和硬件要求。閱讀ARM芯片文檔,掌握ARM的A/D相關(guān)寄存器的功能,熟悉ARM系統(tǒng)硬件的A/D相關(guān)接口。利用外部模擬信號(hào)編程實(shí)現(xiàn)ARM循環(huán)采集全部前4路通道,并且在超級(jí)終端上顯示。4.3、預(yù)備知識(shí)有C語言基礎(chǔ)。掌握在Linux下常用編輯器的使用。掌握Makefile 的編寫和使用。掌握L
2、inux下的程序編譯與交叉編譯過程。4.4、實(shí)驗(yàn)設(shè)備及工具硬件:UP-TECH S2410/P270 DVP嵌入式實(shí)驗(yàn)平臺(tái)、PC機(jī)Pentium 500以上, 硬盤10G以上。軟件:PC機(jī)操作系統(tǒng)REDHAT LINUX 9.0MINICOMARM-LINUX開發(fā)環(huán)境4.5、實(shí)驗(yàn)原理1、A/D轉(zhuǎn)換器A/D轉(zhuǎn)換器是模擬信號(hào)源和CPU之間聯(lián)系的接口,它的任務(wù)是將連續(xù)變化的模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào),以便計(jì)算機(jī)和數(shù)字系統(tǒng)進(jìn)行處理、存儲(chǔ)、控制和顯示。在工業(yè)控制和數(shù)據(jù)采集及許多其他領(lǐng)域中,A/D轉(zhuǎn)換是不可缺少的。A/D轉(zhuǎn)換器有以下類型:逐位比較型、積分型、計(jì)數(shù)型、并行比較型、電壓頻率型,主要應(yīng)根據(jù)使用場(chǎng)合的
3、具體要求,按照轉(zhuǎn)換速度、精度、價(jià)格、功能以及接口條件等因素來決定選擇何種類型。常用的有以下兩種:雙積分型的A/D轉(zhuǎn)換器雙積分式也稱二重積分式,其實(shí)質(zhì)是測(cè)量和比較兩個(gè)積分的時(shí)間,一個(gè)是對(duì)模擬輸入電壓積分的時(shí)間T0,此時(shí)間往往是固定的;另一個(gè)是以充電后的電壓為初值,對(duì)參考電源Vref反向積分,積分電容被放電至零所需的時(shí)間T1。模擬輸入電壓Vi與參考電壓VRef之比,等于上述兩個(gè)時(shí)間之比。由于VRef 、T0固定,而放電時(shí)間T1可以測(cè)出,因而可計(jì)算出模擬輸入電壓的大小(VRef與Vi符號(hào)相反)。由于T0、VRef為已知的固定常數(shù),因此反向積分時(shí)間T1與輸入模擬電壓Vi在T0時(shí)間內(nèi)的平均值成正比。輸入
4、電壓Vi愈高,VA愈大,T1就愈長(zhǎng)。在T1開始時(shí)刻,控制邏輯同時(shí)打開計(jì)數(shù)器的控制門開始計(jì)數(shù),直到積分器恢復(fù)到零電平時(shí),計(jì)數(shù)停止。則計(jì)數(shù)器所計(jì)出的數(shù)字即正比于輸入電壓Vi在T0時(shí)間內(nèi)的平均值,于是完成了一次A/D轉(zhuǎn)換。由于雙積分型A/D轉(zhuǎn)換是測(cè)量輸入電壓Vi在T0時(shí)間內(nèi)的平均值,所以對(duì)常態(tài)干擾(串摸干擾)有很強(qiáng)的抑制作用,尤其對(duì)正負(fù)波形對(duì)稱的干擾信號(hào),抑制效果更好。雙積分型的A/D轉(zhuǎn)換器電路簡(jiǎn)單,抗干擾能力強(qiáng),精度高,這是突出的優(yōu)點(diǎn)。但轉(zhuǎn)換速度比較慢,常用的A/D轉(zhuǎn)換芯片的轉(zhuǎn)換時(shí)間為毫秒級(jí)。例如12位的積分型A/D芯片ADCETl2BC,其轉(zhuǎn)換時(shí)間為lms。因此適用于模擬信號(hào)變化緩慢,采樣速率要
5、求較低,而對(duì)精度要求較高,或現(xiàn)場(chǎng)干擾較嚴(yán)重的場(chǎng)合。例如在數(shù)字電壓表中常被采用。逐次逼近型的A/D轉(zhuǎn)換器逐次逼近型(也稱逐位比較式)的A/D轉(zhuǎn)換器,應(yīng)用比積分型更為廣泛,其原理框圖如圖2.4.1所示,主要由逐次逼近寄存器SAR、D/A轉(zhuǎn)換器、比較器以及時(shí)序和控制邏輯等部分組成。它的實(shí)質(zhì)是逐次把設(shè)定的SAR寄存器中的數(shù)字量經(jīng)D/A轉(zhuǎn)換后得到電壓Vc與待轉(zhuǎn)換模擬電壓V。進(jìn)行比較。比較時(shí),先從SAR的最高位開始,逐次確定各位的數(shù)碼應(yīng)是“1”還是“0”,其工作過程如下:轉(zhuǎn)換前,先將SAR寄存器各位清零。轉(zhuǎn)換開始時(shí),控制邏輯電路先設(shè)定SAR寄存器的最高位為“1”,其余位為“0”,此試探值經(jīng)D/A轉(zhuǎn)換成電壓
6、Vc,然后將Vc與模擬輸入電壓Vx比較。如果VxVc,說明SAR最高位的“1”應(yīng)予保留;如果VxVc,說明SAR該位應(yīng)予清零。然后再對(duì)SAR寄存器的次高位置“1”,依上述方法進(jìn)行D/A轉(zhuǎn)換和比較。如此重復(fù)上述過程,直至確定SAR寄存器的最低位為止。過程結(jié)束后,狀態(tài)線改變狀態(tài),表明已完成一次轉(zhuǎn)換。最后,逐次逼近寄存器SAR中的內(nèi)容就是與輸入模擬量V相對(duì)應(yīng)的二進(jìn)制數(shù)字量。顯然A/D轉(zhuǎn)換器的位數(shù)N決定于SAR的位數(shù)和D/A的位數(shù)。圖2.4.1(b)表示四位A/D轉(zhuǎn)換器的逐次逼近過程。轉(zhuǎn)換結(jié)果能否準(zhǔn)確逼近模擬信號(hào),主要取決于SAR和D/A的位數(shù)。位數(shù)越多,越能準(zhǔn)確逼近模擬量,但轉(zhuǎn)換所需的時(shí)間也越長(zhǎng)。逐
7、次逼近式的A/D轉(zhuǎn)換器的主要特點(diǎn)是:轉(zhuǎn)換速度較快,在1100/s以內(nèi),分辨率可以達(dá)18位,特別適用于工業(yè)控制系統(tǒng)。轉(zhuǎn)換時(shí)間固定,不隨輸入信號(hào)的變化而變化??垢蓴_能力相對(duì)積分型的差。例如,對(duì)模擬輸入信號(hào)采樣過程中,若在采樣時(shí)刻有一個(gè)干擾脈沖迭加在模擬信號(hào)上,則采樣時(shí),包括干擾信號(hào)在內(nèi),都被采樣和轉(zhuǎn)換為數(shù)字量,這就會(huì)造成較大的誤差,所以有必要采取適當(dāng)?shù)臑V波措施。圖4.1逐次逼近式A/D轉(zhuǎn)換器2、A/D轉(zhuǎn)換的重要指標(biāo)分辨率(Resolution)分辨率反映A/D轉(zhuǎn)換器對(duì)輸入微小變化響應(yīng)的能力,通常用數(shù)字輸出最低位(LSB)所對(duì)應(yīng)的模擬輸入的電平值表示。n位A/D能反應(yīng)1/2n滿量程的模擬輸入電平。由
8、于分辨率直接與轉(zhuǎn)換器的位數(shù)有關(guān),所以一般也可簡(jiǎn)單地用數(shù)字量的位數(shù)來表示分辨率,即n位二進(jìn)制數(shù),最低位所具有的權(quán)值,就是它的分辨率。值得注意的是,分辨率與精度是兩個(gè)不同的概念,不要把兩者相混淆。即使分辨率很高,也可能由于溫度漂移、線性度等原因,而使其精度不夠高。精度(Accuracy)精度有絕對(duì)精度(Absolute Accuracy)和相對(duì)精度(Relative Accuracy)兩種表示方法。絕對(duì)誤差:在一個(gè)轉(zhuǎn)換器中,對(duì)應(yīng)于一個(gè)數(shù)字量的實(shí)際模擬輸入電壓和理想的模擬輸入電壓之差并非是一個(gè)常數(shù)。我們把它們之間的差的最大值,定義為“絕對(duì)誤差”。通常以數(shù)字量的最小有效位(LSB)的分?jǐn)?shù)值來表示絕對(duì)誤
9、差,例如:1LSB等。絕對(duì)誤差包括量化誤差和其它所有誤差。相對(duì)誤差是指整個(gè)轉(zhuǎn)換范圍內(nèi),任一數(shù)字量所對(duì)應(yīng)的模擬輸入量的實(shí)際值與理論值之差,用模擬電壓滿量程的百分比表示。例如,滿量程為10V,10位A/D芯片,若其絕對(duì)精度為1/2LSB,則其最小有效位的量化單位:9.77mV,其絕對(duì)精度為4.88mV,其相對(duì)精度為0.048%。轉(zhuǎn)換時(shí)間(Conversion Time)轉(zhuǎn)換時(shí)間是指完成一次A/D轉(zhuǎn)換所需的時(shí)間,即由發(fā)出啟動(dòng)轉(zhuǎn)換命令信號(hào)到轉(zhuǎn)換結(jié)束信號(hào)開始有效的時(shí)間間隔。轉(zhuǎn)換時(shí)間的倒數(shù)稱為轉(zhuǎn)換速率。例如AD570的轉(zhuǎn)換時(shí)間為25us,其轉(zhuǎn)換速率為40KHz。電源靈敏度(power supply sen
10、sitivity)電源靈敏度是指A/D轉(zhuǎn)換芯片的供電電源的電壓發(fā)生變化時(shí),產(chǎn)生的轉(zhuǎn)換誤差。一般用電源電壓變化1時(shí)相當(dāng)?shù)哪M量變化的百分?jǐn)?shù)來表示。量程量程是指所能轉(zhuǎn)換的模擬輸入電壓范圍,分單極性、雙極性兩種類型。例如,單極性 量程為0+5V,0+10V,0+20V;雙極性 量程為-5+5V,-10+10V。輸出邏輯電平多數(shù)A/D轉(zhuǎn)換器的輸出邏輯電平與TTL電平兼容。在考慮數(shù)字量輸出與微處理的數(shù)據(jù)總線接口時(shí),應(yīng)注意是否要三態(tài)邏輯輸出,是否要對(duì)數(shù)據(jù)進(jìn)行鎖存等。工作溫度范圍由于溫度會(huì)對(duì)比較器、運(yùn)算放大器、電阻網(wǎng)絡(luò)等產(chǎn)生影響,故只在一定的溫度范圍內(nèi)才能保證額定精度指標(biāo)。一般A/D轉(zhuǎn)換器的工作溫度范圍為(
11、0700C),軍用品的工作溫度范圍為(-55+1250C)ARM自帶的十位A/D轉(zhuǎn)換器ARM S3C2410芯片自帶一個(gè)路10位A/D轉(zhuǎn)換器,并且支持觸摸屏功能。ARM2410開發(fā)板只用作3路A/D轉(zhuǎn)換器,其最大轉(zhuǎn)換率為500K,非線性度為正負(fù).5位,其轉(zhuǎn)換時(shí)間可以通過下式計(jì)算:如果系統(tǒng)時(shí)鐘為50MHz,比例值為49,則為A/D轉(zhuǎn)換器頻率50 MHz/(49+1) = 1 MHz轉(zhuǎn)換時(shí)間1/(1 MHz / 5cycles) = 1/200 kHz(相當(dāng)于5us)= 5 us表4.1采樣控制寄存器的設(shè)置寄存器 地址讀/寫 描述 復(fù)位值A(chǔ)DCCON 0 x R/W ADC 控制寄存器 0 x3F
12、C4 表4.2采樣控制寄存器的位描述ADCCON 位 描述 初始設(shè)置 ECFLG15 End of conversion flag (read only). 0 = A/D conversion in process 1 = End of A/D conversion0 PRSCEN14 A/D converter prescaler enable. 0 = Disable 1 = Enable 0 PRSCVL13:6 A/D converter prescaler value. Data value: 1 255 Note that division factor is (N+1) whe
13、n the prescaler value is N. 0 xFF SEL_MUX5:3Analog input channel select. 000 = AIN 0 001 = AIN 1 010 = AIN 2 011 = AIN 3 100 = AIN 4 101 = AIN 5 110 = AIN 6 111 = AIN 7 (XP) 0STDBM2 Standby mode select. 0 = Normal operation mode 1 = Standby mode 1 READ_START1 A/D conversion start by read. 0 = Disabl
14、e start by read operation 1 = Enable start by read operation 0 ENABLE_START0 A/D conversion starts by setting this bit. If READ_START is enabled, this value is not valid. 0 = No operation 1 = A/D conversion starts and this bit is cleared after the start-up. 0 該寄存器的0位是轉(zhuǎn)換使能位,寫1表示轉(zhuǎn)換開始。1位是讀操作使能轉(zhuǎn)換,寫表示轉(zhuǎn)換在
15、讀操作時(shí)開始。3、4、5位是通道號(hào)。13:6位為AD轉(zhuǎn)換比例因子。14位為比例因子有效位,15位為轉(zhuǎn)換標(biāo)志位(只讀)。表4.3A/D轉(zhuǎn)換結(jié)果數(shù)據(jù)寄存器的設(shè)置寄存器 地址讀/寫 描述 復(fù)位值 ADCDAT0 0 xC R ADC轉(zhuǎn)換數(shù)據(jù)寄存器 -ADCDAT0:轉(zhuǎn)換結(jié)果數(shù)據(jù)寄存器。該寄存器的十位表示轉(zhuǎn)換后的結(jié)果,全為1時(shí)為滿量程3.3伏。A/D轉(zhuǎn)換器在擴(kuò)展板的連接A/D轉(zhuǎn)換器在擴(kuò)展板的接法如圖4.2所示,前三路通過電位器接到3.3v電源上。圖4.2 A/D轉(zhuǎn)換器在擴(kuò)展板上的接法4.6、程序分析(關(guān)鍵代碼分析)ad驅(qū)動(dòng)對(duì)用戶來說只是下面的一個(gè)文件結(jié)構(gòu)。在用戶程序里只需要用到open、 read、
16、write、 release等內(nèi)核函數(shù)即可。本實(shí)驗(yàn)采用的是模塊方式加載,可以在實(shí)驗(yàn)箱的/mnt/yaffs/ad/ 中找到AD的驅(qū)動(dòng)程序。static struct file_operations s3c2410_fops = owner:THIS_MODULE,open:s3c2410_adc_open,read:s3c2410_adc_read,write:s3c2410_adc_write,release:s3c2410_adc_release,;下面我們對(duì)驅(qū)動(dòng)部分重要函數(shù)進(jìn)行說明。ad驅(qū)動(dòng)在內(nèi)核里的代碼我們放到了本次實(shí)驗(yàn)的src文件下,s3c2410.h_chip.h里為arm2410
17、頭文件s3c2410.h初始化ADC的部分。所有代碼也可以到內(nèi)核里面去閱讀。關(guān)于驅(qū)動(dòng)知識(shí)的基本介紹請(qǐng)見第4章第一小節(jié),本節(jié)只作為應(yīng)用實(shí)驗(yàn)的簡(jiǎn)單例子。static int s3c2410_adc_open(struct inode *inode, struct file *file)init_MUTEX(&adcdev.lock);init_waitqueue_head(&(adcdev.wait);adcdev.channel=0;adcdev.prescale=0 xff;MOD_INC_USE_COUNT;DPRINTK( adc openedn);return 0; /AD通道和比例因子
18、初始化static ssize_t s3c2410_adc_write(struct file *file, const char *buffer, size_t count, loff_t * ppos)int data;if(count!=sizeof(data)/error input data sizeDPRINTK(the size of input data must be %dn, sizeof(data);return 0;copy_from_user(&data, buffer, count);adcdev.channel=ADC_WRITE_GETCH(data);adcd
19、ev.prescale=ADC_WRITE_GETPRE(data);DPRINTK(set adc channel=%d, prescale=0 x%xn, adcdev.channel, adcdev.prescale);return count; /告訴內(nèi)核驅(qū)動(dòng)讀哪一個(gè)通道的數(shù)據(jù)和設(shè)置比例因子#define START_ADC_AIN(ch, prescale) do ADCCON = PRESCALE_EN | PRSCVL(prescale) | ADC_INPUT(ch) ; ADCCON |= ADC_START; while(0)/PRESCALE_EN左移14使位比例因子有效
20、;PRSCVL左移6位設(shè)置比例因子;/ADC_INPUT左移3位選擇通道;/ADCCON |= ADC_START; ADCCON 0為置1,準(zhǔn)備采集數(shù)據(jù)static ssize_t s3c2410_adc_read(struct file *filp, char *buffer, size_t count, loff_t *ppos)int ret = 0;if (down_interruptible(&adcdev.lock)return -ERESTARTSYS;START_ADC_AIN(adcdev.channel, adcdev.prescale);interruptible_sl
21、eep_on(&adcdev.wait);ret = ADCDAT0;ret &= 0 x3ff; /把數(shù)據(jù)寄存器內(nèi)容放入變量retDPRINTK(AIN%d = 0 x%04x, %dn, adcdev.channel, ret, ADCCON & 0 x80 ? 1:0);copy_to_user(buffer, (char *)&ret, sizeof(ret);/把ret變量的內(nèi)容傳給用戶緩沖區(qū)up(&adcdev.lock);return sizeof(ret); /由內(nèi)核采集通道數(shù)據(jù)后把數(shù)據(jù)放回用戶區(qū)main.c的代碼如下:/* by threewater * 2004.06.18
22、 */#include #include #include #include #include #include #include #include s3c2410-adc.h#define ADC_DEV /dev/adc/0rawstatic int adc_fd = -1;static int init_ADdevice(void) if(adc_fd=open(ADC_DEV, O_RDWR)0) printf(Error opening %s adc devicen, ADC_DEV); return -1; static int GetADresult(int channel) i
23、nt PRESCALE=0XFF; int data=ADC_WRITE(channel, PRESCALE); write(adc_fd, &data, sizeof(data); read(adc_fd, &data, sizeof(data); return data;static int stop=0;static void* comMonitor(void* data) getchar(); stop=1; return NULL;int main(void) int i; float d; pthread_t th_com; void * retval; /set s3c44b0
24、AD register and start AD if(init_ADdevice()0) return -1; /* Create the threads */ pthread_create(&th_com, NULL, comMonitor, 0); printf(nPress Enter key exit!n); while( stop=0 ) for(i=0; i=2; i+)/采樣02路A/D值 d=(float)GetADresult(i)*3.3)/1024.0; printf(a%d=%8.4ft,i,d); usleep(1); printf(r); /* Wait until producer and consumer finish. */ pthread_join(th_com, &retval); printf(n); return 0;4.7、實(shí)驗(yàn)步驟1、閱讀理解源碼進(jìn)入/root/share/exp/basic/04_ad目錄,使用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度廠房裝修工程設(shè)計(jì)與施工監(jiān)理合同4篇
- 2025年度廠房租賃安全協(xié)議書(智能管理系統(tǒng)適用)4篇
- 2024版貨品物流服務(wù)協(xié)議
- 2025年度新型建材2024grc線條裝飾線條供應(yīng)協(xié)議3篇
- 工程建設(shè)國(guó)家標(biāo)準(zhǔn)《大體積混凝土溫度測(cè)控技術(shù)規(guī)范》條文說明
- 2025年度人工智能教育平臺(tái)開發(fā)與應(yīng)用合同9篇
- 專屬2024財(cái)務(wù)代表協(xié)議條款版B版
- 個(gè)人房產(chǎn)抵押借款協(xié)議標(biāo)準(zhǔn)格式版
- 2024虛擬現(xiàn)實(shí)產(chǎn)品開發(fā)與銷售合同
- 2024版單身公寓租賃合同附圖書閱覽室使用協(xié)議3篇
- 保潔服務(wù)崗位檢查考核評(píng)分標(biāo)準(zhǔn)
- 稱量與天平培訓(xùn)試題及答案
- 超全的超濾與納濾概述、基本理論和應(yīng)用
- 2020年醫(yī)師定期考核試題與答案(公衛(wèi)專業(yè))
- 2022年中國(guó)育齡女性生殖健康研究報(bào)告
- 各種靜脈置管固定方法
- 消防報(bào)審驗(yàn)收程序及表格
- 教育金規(guī)劃ppt課件
- 呼吸機(jī)波形分析及臨床應(yīng)用
- 常用緊固件選用指南
- 私人借款協(xié)議書新編整理版示范文本
評(píng)論
0/150
提交評(píng)論