版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
9.6A/D和D/A轉(zhuǎn)換一、一般測控系統(tǒng)組成控制對象微型計(jì)算機(jī)信號處理信號處理信號處理傳感器1傳感器2傳感器n執(zhí)行部件放大驅(qū)動A/D轉(zhuǎn)換器D/A轉(zhuǎn)換器多路開關(guān)采樣保持放大驅(qū)動開關(guān)量9.6A/D和D/A轉(zhuǎn)換控微型計(jì)算機(jī)信號處理信號處理信號處11.傳感器將物理量轉(zhuǎn)換為電量2.信號處理環(huán)節(jié)信號調(diào)理,一般含放大、阻抗匹配、高低通濾波等3.多路轉(zhuǎn)換開關(guān)多路選擇一路,常用的有:CD4051、AD7501(八選擇一)4.采樣保持(采保)電路可工作于采樣、保持二種狀態(tài)。采樣時(shí),輸出與輸入相同;保持時(shí)在一定時(shí)間保持不變,一般用在A/D前端,保證在A/D轉(zhuǎn)換期間輸入電壓不變,提高A/D精度。常用的有:LF3981.傳感器2(一)轉(zhuǎn)換原理1、權(quán)電阻式D/A轉(zhuǎn)換器二、D/A(數(shù)模)轉(zhuǎn)換I0D02n-1RI1D12n-2RI2D22n-3RIn-1Dn-12RRf(R/2)VREFV0_
A+權(quán)電阻D/A轉(zhuǎn)換原理VO=-IRf(一)轉(zhuǎn)換原理二、D/A(數(shù)模)轉(zhuǎn)換I0D32.T型電阻網(wǎng)絡(luò)式D/A轉(zhuǎn)換器2.T型電阻網(wǎng)絡(luò)式D/A轉(zhuǎn)換器4(二)指標(biāo)1.分辨率分辨率是指最小輸出電壓(對應(yīng)于輸入數(shù)字量最低位增1所引起的輸出電壓增量)和最大輸出電壓(對應(yīng)于輸入數(shù)字量所有有效位全為1時(shí)的輸出電壓)之比,即表示DAC所能分辨的最小模擬信號的能力。 2.轉(zhuǎn)換精度絕對轉(zhuǎn)換精度是指滿刻度數(shù)字量輸入時(shí),模擬量輸出接近理論值的程度相對轉(zhuǎn)換精度一般用絕對轉(zhuǎn)換精度相對于滿量程輸出的百分?jǐn)?shù)來表示,有時(shí)也用數(shù)字量的最小有效值(LSB)的幾分之一來表示(二)指標(biāo)53.非線性誤差D/A轉(zhuǎn)換器的非線性誤差定義為實(shí)際轉(zhuǎn)換特性曲線與理想特性曲線之間的最大偏差,并以該偏差相對于滿量程的百分?jǐn)?shù)度量4.轉(zhuǎn)換速率/建立時(shí)間轉(zhuǎn)換速率實(shí)際是由建立時(shí)間來反映的建立時(shí)間是指數(shù)字量為滿刻度值(各位全為1)時(shí),DAC的模擬輸出電壓達(dá)到某個(gè)規(guī)定值(比如90%滿量程)時(shí)所需要的時(shí)間3.非線性誤差6三、A/D(模數(shù))轉(zhuǎn)換
A/D轉(zhuǎn)換器是指通過一定的電路將模擬量轉(zhuǎn)變?yōu)閿?shù)字量。A/D轉(zhuǎn)換后,輸出的數(shù)字信號有8位、l0位、12位和16位等。類型:雙積分、逐次逼近、并行等。三、A/D(模數(shù))轉(zhuǎn)換A/D轉(zhuǎn)換器是7VoVIND7D1D0逐次逼近式A/D轉(zhuǎn)換原理_+比較器逐次逼近寄存器(SAR)控制電路輸出緩沖寄存器D/A轉(zhuǎn)換器啟動信號CLK時(shí)鐘轉(zhuǎn)換結(jié)束(一)A/D轉(zhuǎn)換原理VoVIND78(二)A/D轉(zhuǎn)換器的主要性能參數(shù)1.分辨率分辨率是指A/D轉(zhuǎn)換器能分辨的最小模擬輸入量。通常用能轉(zhuǎn)換成的數(shù)字量的位數(shù)來表示,如8位、10位、12位、16位等。2.轉(zhuǎn)換時(shí)間轉(zhuǎn)換時(shí)間是A/D完成一次轉(zhuǎn)換所需的時(shí)間。3.量程量程是指所能轉(zhuǎn)換的輸入電壓范圍。4.精度
A/D轉(zhuǎn)換精度分為絕對精度和相對精度兩種。(二)A/D轉(zhuǎn)換器的主要性能參數(shù)1.分辨率9(1)絕對精度:是指對應(yīng)于—個(gè)給定量,A/D轉(zhuǎn)換器的誤差,其誤差大小由實(shí)際模擬量輸入值與理論值之差來度量。(2)相對精度:由相對誤差決定。相對誤差是指絕對誤差與滿刻度值之比,—般用百分?jǐn)?shù)表示。例如,對于—個(gè)8位0~5V的A/D轉(zhuǎn)換器,如果其絕對誤差為:
1/2565=19.5mV
則其相對誤差為0.39%。(1)絕對精度:是指對應(yīng)于—個(gè)給定量,A/D轉(zhuǎn)換器的誤差,其101、采樣保持電路(1)采樣:把一個(gè)時(shí)間上連續(xù)變化的模擬量轉(zhuǎn)換為一個(gè)脈沖串,脈沖的幅度取決于輸入模擬量。(2)保持:是將采樣得到的模擬量值保持下來,使之等于采樣控制脈沖存在的最后瞬間的采樣值。(3)采樣定理:理論和實(shí)踐都證明,只要滿足下列條件,采樣保持得到的輸出信號在經(jīng)過信號處理后便可還原成原來的模擬輸入信號:(三)A/D轉(zhuǎn)換的輔助電路
1、采樣保持電路(三)A/D轉(zhuǎn)換的輔助電路11V0-
Av+S(t)ViTVcCbV0-S(t)ViTVcCb12S(t)υI(t)υSH(t)T1T2T3T4T5T6T7T8tttOOO(a)采樣脈沖(b)輸入電壓(c)采樣保持S(t)υI(t)υSH(t)T1T2T3T4T5T6T7T132、多路轉(zhuǎn)換開關(guān)在實(shí)際應(yīng)用時(shí),要解決多個(gè)回路和A/D、D/A轉(zhuǎn)換器之間的切換問題。一般采用兩種方法:(1)一種方法是用獨(dú)立的多路轉(zhuǎn)換模擬開關(guān)輪流切換各回路和A/D、D/A之間的通路,對于A/D轉(zhuǎn)換來說,要用到多路輸入一路輸出的模擬開關(guān)電路,對于D/A轉(zhuǎn)換來說,要用到一路輸入,多路輸出的模擬開關(guān)電路。(2)另一種方法是選擇帶有轉(zhuǎn)換開關(guān)的A/D、D/A轉(zhuǎn)換器。2、多路轉(zhuǎn)換開關(guān)14四、S3C2410A中的A/D模塊(一)概述
具有8通道模擬輸入的10位
模數(shù)轉(zhuǎn)換器(ADC)。在2.5MHz的A/D轉(zhuǎn)換器時(shí)鐘下,最大轉(zhuǎn)化速率可達(dá)到500KSPS。A/D轉(zhuǎn)換器支持片上采樣和保持功能。S3C2410A的AIN[7]和AIN[5]可用于連接觸摸屏的模擬信號輸入。
(二)特性逐次逼近式
分辯率:10-位線性度誤差:±2.0LSB最大轉(zhuǎn)換速率:500KSPS
供電電壓:3.3V
輸入模擬電壓范圍:0~3.3V
片上采樣保持功能查詢和中斷模式四、S3C2410A中的A/D模塊15(三)ADC控制寄存器(ADCCON)地址:0x58000000,可讀寫,復(fù)位值:0x3FC4
ECFLG(位15):AD轉(zhuǎn)換結(jié)束標(biāo)志(只讀)。0=A/D轉(zhuǎn)換操作中,1=A/D轉(zhuǎn)換結(jié)束PRSCEN(位14):A/D轉(zhuǎn)換器預(yù)分頻器使能0=停止,1=使能
PRSCVL(位13:6):A/D轉(zhuǎn)換器預(yù)分頻器數(shù)值,數(shù)據(jù)值N范圍:1~255,將PCLK進(jìn)行(N+1)分頻。
如PCLK=50MHZ,N=49,則A/D轉(zhuǎn)換器頻率=50MHz/(49+1)=1MHz轉(zhuǎn)換時(shí)間=1/1MHz×5=5us注意:ADC頻率應(yīng)該設(shè)置成小于PLCK的5倍,即N應(yīng)設(shè)置為大于4。(三)ADC控制寄存器(ADCCON)16SEL_MUX(位
5:3):模擬輸入通道選擇。000=AIN0 001=AIN1010=AIN2 011=AIN3100=AIN4 101=AIN5110=AIN6 111=AIN7STDBM(位2)0=普通模式1=Standby模式,A/D停止轉(zhuǎn)換,A/D數(shù)據(jù)寄存器保持原值SEL_MUX(位5:3):模擬輸入通道選擇。17READ_START(位1):
通過讀取來啟動A/D轉(zhuǎn)換 0=停止通過讀取啟動,1=使能通過讀取啟動ENABLE_START(位0):通過設(shè)置該位來啟動A/D操作。如果READ_START是使能的,此位無效。0=無操作1=A/D轉(zhuǎn)換啟動,啟動后該位被清零。READ_START(位1): 通過讀取來啟動A/D轉(zhuǎn)換18(四)ADC轉(zhuǎn)換數(shù)據(jù)寄存器(ADCDAT0)地址:0x5800000C,可讀寫。位9~0為A/D轉(zhuǎn)換的數(shù)字值。范圍為:0~3FFH。思考:設(shè)計(jì)A/D驅(qū)動程序,使之能實(shí)現(xiàn)對多路模擬量的采集。(四)ADC轉(zhuǎn)換數(shù)據(jù)寄存器(ADCDAT0)19#defineDRIVER_NAME
"myDriver"staticintmyDriver_Major=0;
/*DriverMajorNumber*/staticintAD_READ(void)
{
inti,j;intval,aa;val=0;
ADCCON|=0x2;
//ADC轉(zhuǎn)換通過讀操作來啟動aa=ADCDAT0&0x03ff;
//啟動ADC轉(zhuǎn)換
for(i=0;i<16;i++){
while(!(ADCCON&0x8000));
//判斷ADC轉(zhuǎn)換是否結(jié)束
val+=(ADCDAT0&0x03ff);//取出ADC轉(zhuǎn)換值
for(j=0;j<500;j++);
}val=val/16;//計(jì)算ADC平均轉(zhuǎn)換值
returnval;
}#defineDRIVER_NAME
"myDriv20/*DriverOperationFunctions*/
staticintmyDriver_open(structinode*inode,structfile*filp){
MOD_INC_USE_COUNT;
PRINTK("myDriveropencalled!\n");/*進(jìn)行ADC模塊設(shè)置,其中x<<n表示第n位設(shè)置為x(若x超過一位,則向高位順延)*/
ADCCON=(0<<0)|
//ADC轉(zhuǎn)換設(shè)置
未設(shè)置
(0<<1)|//讀AD數(shù)據(jù)觸發(fā)AD轉(zhuǎn)換
未使用
(0<<2)|//StandBy模式選擇
為普通操作模式
(49<<6)|
//CLKDIV=Fpclk/(49+1)
(1<<14);
//預(yù)分頻器使能軟件預(yù)設(shè)值
PRINTK("ADCINITOK\n");
return0;}/*DriverOperationFunctions21staticintmyDriver_release(structinode*inode,structfile*filp){
MOD_DEC_USE_COUNT;
PRINTK("myDriverreleasecalled!\n");return0;}staticintmyDriver_release(st22staticssize_tmyDriver_read(structfile*filp,char*adc_value,size_tcount,loff_t*f_pos){
intadc=0;size_tread_size=count;adc=AD_READ();
copy_to_user(adc_value,&adc,sizeof(adc));
PRINTK("adc_vale=%d\n",adc);
returnread_size;}staticintmyDriver_ioctl(structinode*inode,structfile*file,unsignedintch,unsignedlongarg){
PRINTK("myDriverioctlcalled!\n");
if((ch>7)||(ch<0))
{
PRINTK("notavalidparameter,parametermustbetwween0and8\n");
return-1;
}
ADCCON|=(ch<<3);//channelset
PRINTK("ADCINITOK\n");
return0;}staticssize_tmyDriver_read(s23/*DriverOperationstructure*/
staticstructfile_operationsmyDriver_fops={owner:
THIS_MODULE,
open:
myDriver_open,ioctl:
myDriver_ioctl,
read:
myDriver_read,
release:
myDriver_release,};/*ModuleInit&Exitfunction*/#ifdefCONFIG_DEVFS_FSdevfs_handle_tdevfs_myDriver_raw;#endif
/*DriverOperationstructure24staticint__initmyModule_init(void){
/*Moduleinitcode*/PRINTK("myModule_init\n");/*Driverregister*/myDriver_Major=register_chrdev(0,DRIVER_NAME,&myDriver_fops);
if(myDriver_Major<0){PRINTK("registerchardevicefail!\n");returnmyDriver_Major;}PRINTK("registermyDriverOK!Major=%d\n",myDriver_Major);#ifdefCONFIG_DEVFS_FSdevfs_myDriver_raw=devfs_register(NULL,"myDriver",DEVFS_FL_DEFAULT,myDriver_Major,0,S_IFCHR|S_IRUSR|S_IWUSR,&myDriver_fops,NULL);PRINTK("adddevfiletodevfsOK!\n");#endif
return0;}staticint__initmyModule_ini25staticvoid__exitmyModule_exit(void){/*Moduleexitcode*/
PRINTK("myModule_exit\n");
/*Driverunregister*/
if(myDriver_Major>0)
{#ifdefCONFIG_DEVFS_FS
devfs_unregister(devfs_myDriver_raw);#endif
unregister_chrdev(myDriver_Major,DRIVER_NAME);
}
return;}MODULE_AUTHOR("myname");MODULE_LICENSE("GPL");module_init(myModule_init);module_exit(myModule_exit);staticvoid__exitmyModule_ex26第九章嵌入式Linux驅(qū)動程序開發(fā)課件3279.6A/D和D/A轉(zhuǎn)換一、一般測控系統(tǒng)組成控制對象微型計(jì)算機(jī)信號處理信號處理信號處理傳感器1傳感器2傳感器n執(zhí)行部件放大驅(qū)動A/D轉(zhuǎn)換器D/A轉(zhuǎn)換器多路開關(guān)采樣保持放大驅(qū)動開關(guān)量9.6A/D和D/A轉(zhuǎn)換控微型計(jì)算機(jī)信號處理信號處理信號處281.傳感器將物理量轉(zhuǎn)換為電量2.信號處理環(huán)節(jié)信號調(diào)理,一般含放大、阻抗匹配、高低通濾波等3.多路轉(zhuǎn)換開關(guān)多路選擇一路,常用的有:CD4051、AD7501(八選擇一)4.采樣保持(采保)電路可工作于采樣、保持二種狀態(tài)。采樣時(shí),輸出與輸入相同;保持時(shí)在一定時(shí)間保持不變,一般用在A/D前端,保證在A/D轉(zhuǎn)換期間輸入電壓不變,提高A/D精度。常用的有:LF3981.傳感器29(一)轉(zhuǎn)換原理1、權(quán)電阻式D/A轉(zhuǎn)換器二、D/A(數(shù)模)轉(zhuǎn)換I0D02n-1RI1D12n-2RI2D22n-3RIn-1Dn-12RRf(R/2)VREFV0_
A+權(quán)電阻D/A轉(zhuǎn)換原理VO=-IRf(一)轉(zhuǎn)換原理二、D/A(數(shù)模)轉(zhuǎn)換I0D302.T型電阻網(wǎng)絡(luò)式D/A轉(zhuǎn)換器2.T型電阻網(wǎng)絡(luò)式D/A轉(zhuǎn)換器31(二)指標(biāo)1.分辨率分辨率是指最小輸出電壓(對應(yīng)于輸入數(shù)字量最低位增1所引起的輸出電壓增量)和最大輸出電壓(對應(yīng)于輸入數(shù)字量所有有效位全為1時(shí)的輸出電壓)之比,即表示DAC所能分辨的最小模擬信號的能力。 2.轉(zhuǎn)換精度絕對轉(zhuǎn)換精度是指滿刻度數(shù)字量輸入時(shí),模擬量輸出接近理論值的程度相對轉(zhuǎn)換精度一般用絕對轉(zhuǎn)換精度相對于滿量程輸出的百分?jǐn)?shù)來表示,有時(shí)也用數(shù)字量的最小有效值(LSB)的幾分之一來表示(二)指標(biāo)323.非線性誤差D/A轉(zhuǎn)換器的非線性誤差定義為實(shí)際轉(zhuǎn)換特性曲線與理想特性曲線之間的最大偏差,并以該偏差相對于滿量程的百分?jǐn)?shù)度量4.轉(zhuǎn)換速率/建立時(shí)間轉(zhuǎn)換速率實(shí)際是由建立時(shí)間來反映的建立時(shí)間是指數(shù)字量為滿刻度值(各位全為1)時(shí),DAC的模擬輸出電壓達(dá)到某個(gè)規(guī)定值(比如90%滿量程)時(shí)所需要的時(shí)間3.非線性誤差33三、A/D(模數(shù))轉(zhuǎn)換
A/D轉(zhuǎn)換器是指通過一定的電路將模擬量轉(zhuǎn)變?yōu)閿?shù)字量。A/D轉(zhuǎn)換后,輸出的數(shù)字信號有8位、l0位、12位和16位等。類型:雙積分、逐次逼近、并行等。三、A/D(模數(shù))轉(zhuǎn)換A/D轉(zhuǎn)換器是34VoVIND7D1D0逐次逼近式A/D轉(zhuǎn)換原理_+比較器逐次逼近寄存器(SAR)控制電路輸出緩沖寄存器D/A轉(zhuǎn)換器啟動信號CLK時(shí)鐘轉(zhuǎn)換結(jié)束(一)A/D轉(zhuǎn)換原理VoVIND735(二)A/D轉(zhuǎn)換器的主要性能參數(shù)1.分辨率分辨率是指A/D轉(zhuǎn)換器能分辨的最小模擬輸入量。通常用能轉(zhuǎn)換成的數(shù)字量的位數(shù)來表示,如8位、10位、12位、16位等。2.轉(zhuǎn)換時(shí)間轉(zhuǎn)換時(shí)間是A/D完成一次轉(zhuǎn)換所需的時(shí)間。3.量程量程是指所能轉(zhuǎn)換的輸入電壓范圍。4.精度
A/D轉(zhuǎn)換精度分為絕對精度和相對精度兩種。(二)A/D轉(zhuǎn)換器的主要性能參數(shù)1.分辨率36(1)絕對精度:是指對應(yīng)于—個(gè)給定量,A/D轉(zhuǎn)換器的誤差,其誤差大小由實(shí)際模擬量輸入值與理論值之差來度量。(2)相對精度:由相對誤差決定。相對誤差是指絕對誤差與滿刻度值之比,—般用百分?jǐn)?shù)表示。例如,對于—個(gè)8位0~5V的A/D轉(zhuǎn)換器,如果其絕對誤差為:
1/2565=19.5mV
則其相對誤差為0.39%。(1)絕對精度:是指對應(yīng)于—個(gè)給定量,A/D轉(zhuǎn)換器的誤差,其371、采樣保持電路(1)采樣:把一個(gè)時(shí)間上連續(xù)變化的模擬量轉(zhuǎn)換為一個(gè)脈沖串,脈沖的幅度取決于輸入模擬量。(2)保持:是將采樣得到的模擬量值保持下來,使之等于采樣控制脈沖存在的最后瞬間的采樣值。(3)采樣定理:理論和實(shí)踐都證明,只要滿足下列條件,采樣保持得到的輸出信號在經(jīng)過信號處理后便可還原成原來的模擬輸入信號:(三)A/D轉(zhuǎn)換的輔助電路
1、采樣保持電路(三)A/D轉(zhuǎn)換的輔助電路38V0-
Av+S(t)ViTVcCbV0-S(t)ViTVcCb39S(t)υI(t)υSH(t)T1T2T3T4T5T6T7T8tttOOO(a)采樣脈沖(b)輸入電壓(c)采樣保持S(t)υI(t)υSH(t)T1T2T3T4T5T6T7T402、多路轉(zhuǎn)換開關(guān)在實(shí)際應(yīng)用時(shí),要解決多個(gè)回路和A/D、D/A轉(zhuǎn)換器之間的切換問題。一般采用兩種方法:(1)一種方法是用獨(dú)立的多路轉(zhuǎn)換模擬開關(guān)輪流切換各回路和A/D、D/A之間的通路,對于A/D轉(zhuǎn)換來說,要用到多路輸入一路輸出的模擬開關(guān)電路,對于D/A轉(zhuǎn)換來說,要用到一路輸入,多路輸出的模擬開關(guān)電路。(2)另一種方法是選擇帶有轉(zhuǎn)換開關(guān)的A/D、D/A轉(zhuǎn)換器。2、多路轉(zhuǎn)換開關(guān)41四、S3C2410A中的A/D模塊(一)概述
具有8通道模擬輸入的10位
模數(shù)轉(zhuǎn)換器(ADC)。在2.5MHz的A/D轉(zhuǎn)換器時(shí)鐘下,最大轉(zhuǎn)化速率可達(dá)到500KSPS。A/D轉(zhuǎn)換器支持片上采樣和保持功能。S3C2410A的AIN[7]和AIN[5]可用于連接觸摸屏的模擬信號輸入。
(二)特性逐次逼近式
分辯率:10-位線性度誤差:±2.0LSB最大轉(zhuǎn)換速率:500KSPS
供電電壓:3.3V
輸入模擬電壓范圍:0~3.3V
片上采樣保持功能查詢和中斷模式四、S3C2410A中的A/D模塊42(三)ADC控制寄存器(ADCCON)地址:0x58000000,可讀寫,復(fù)位值:0x3FC4
ECFLG(位15):AD轉(zhuǎn)換結(jié)束標(biāo)志(只讀)。0=A/D轉(zhuǎn)換操作中,1=A/D轉(zhuǎn)換結(jié)束PRSCEN(位14):A/D轉(zhuǎn)換器預(yù)分頻器使能0=停止,1=使能
PRSCVL(位13:6):A/D轉(zhuǎn)換器預(yù)分頻器數(shù)值,數(shù)據(jù)值N范圍:1~255,將PCLK進(jìn)行(N+1)分頻。
如PCLK=50MHZ,N=49,則A/D轉(zhuǎn)換器頻率=50MHz/(49+1)=1MHz轉(zhuǎn)換時(shí)間=1/1MHz×5=5us注意:ADC頻率應(yīng)該設(shè)置成小于PLCK的5倍,即N應(yīng)設(shè)置為大于4。(三)ADC控制寄存器(ADCCON)43SEL_MUX(位
5:3):模擬輸入通道選擇。000=AIN0 001=AIN1010=AIN2 011=AIN3100=AIN4 101=AIN5110=AIN6 111=AIN7STDBM(位2)0=普通模式1=Standby模式,A/D停止轉(zhuǎn)換,A/D數(shù)據(jù)寄存器保持原值SEL_MUX(位5:3):模擬輸入通道選擇。44READ_START(位1):
通過讀取來啟動A/D轉(zhuǎn)換 0=停止通過讀取啟動,1=使能通過讀取啟動ENABLE_START(位0):通過設(shè)置該位來啟動A/D操作。如果READ_START是使能的,此位無效。0=無操作1=A/D轉(zhuǎn)換啟動,啟動后該位被清零。READ_START(位1): 通過讀取來啟動A/D轉(zhuǎn)換45(四)ADC轉(zhuǎn)換數(shù)據(jù)寄存器(ADCDAT0)地址:0x5800000C,可讀寫。位9~0為A/D轉(zhuǎn)換的數(shù)字值。范圍為:0~3FFH。思考:設(shè)計(jì)A/D驅(qū)動程序,使之能實(shí)現(xiàn)對多路模擬量的采集。(四)ADC轉(zhuǎn)換數(shù)據(jù)寄存器(ADCDAT0)46#defineDRIVER_NAME
"myDriver"staticintmyDriver_Major=0;
/*DriverMajorNumber*/staticintAD_READ(void)
{
inti,j;intval,aa;val=0;
ADCCON|=0x2;
//ADC轉(zhuǎn)換通過讀操作來啟動aa=ADCDAT0&0x03ff;
//啟動ADC轉(zhuǎn)換
for(i=0;i<16;i++){
while(!(ADCCON&0x8000));
//判斷ADC轉(zhuǎn)換是否結(jié)束
val+=(ADCDAT0&0x03ff);//取出ADC轉(zhuǎn)換值
for(j=0;j<500;j++);
}val=val/16;//計(jì)算ADC平均轉(zhuǎn)換值
returnval;
}#defineDRIVER_NAME
"myDriv47/*DriverOperationFunctions*/
staticintmyDriver_open(structinode*inode,structfile*filp){
MOD_INC_USE_COUNT;
PRINTK("myDriveropencalled!\n");/*進(jìn)行ADC模塊設(shè)置,其中x<<n表示第n位設(shè)置為x(若x超過一位,則向高位順延)*/
ADCCON=(0<<0)|
//ADC轉(zhuǎn)換設(shè)置
未設(shè)置
(0<<1)|//讀AD數(shù)據(jù)觸發(fā)AD轉(zhuǎn)換
未使用
(0<<2)|//StandBy模式選擇
為普通操作模式
(49<<6)|
//CLKDIV=Fpclk/(49+1)
(1<<14);
//預(yù)分頻器使能軟件預(yù)設(shè)值
PRINTK("ADCINITOK\n");
return0;}/*DriverOperationFunctions48staticintmyDriver_release(structinode*inode,structfile*filp){
MOD_DEC_USE_COUNT;
PRINTK("myDriverreleasecalled!\n");return0;}staticintmyDriver_release(st49staticssize_tmyDriver_read(structfile*filp,char*adc_value,size_tcount,loff_t*f_pos){
intadc=0;size_tread_size=count;adc=AD_READ();
copy_to_user(adc_value,&adc,sizeof(adc));
PRINTK("adc_vale=%d\n",adc);
returnread_size;}staticintmyDriver_ioctl(structinode*inode,structfile*file,unsignedintch,unsignedlongarg){
PRINTK("myDriverioctlcalled!\n");
if((ch>7)||(ch<0))
{
PRINTK("notavalidparameter,parametermustbetwween0and8\n");
return-1;
}
ADCCON|=(ch<<3);//channelset
PRINTK("ADCINITOK\n");
return0;}staticssize_tmyDriver_rea
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版拆遷安置房產(chǎn)權(quán)分割及交易協(xié)議4篇
- 專業(yè)平面視覺創(chuàng)作協(xié)議版
- 2025年度文化展覽場地租賃保證金三方執(zhí)行協(xié)議4篇
- 專業(yè)樹木銷售協(xié)議2024年版細(xì)化范本版A版
- 2025年度高端醫(yī)療設(shè)備采購合同模板4篇
- 2025年度拆遷項(xiàng)目資金監(jiān)管與居間服務(wù)協(xié)議4篇
- 二零二五年度農(nóng)家樂合伙人合作協(xié)議3篇
- 2025年廠區(qū)公共區(qū)域清潔與物業(yè)管理合作協(xié)議范本4篇
- 2025年度商業(yè)綜合體室內(nèi)外裝修一體化合同4篇
- 專業(yè)羽毛球場租借合同(2024年)版B版
- 2023社會責(zé)任報(bào)告培訓(xùn)講稿
- 2023核電廠常規(guī)島及輔助配套設(shè)施建設(shè)施工技術(shù)規(guī)范 第8部分 保溫及油漆
- 2025年蛇年春聯(lián)帶橫批-蛇年對聯(lián)大全新春對聯(lián)集錦
- 表B. 0 .11工程款支付報(bào)審表
- 警務(wù)航空無人機(jī)考試題庫及答案
- 空氣自動站儀器運(yùn)營維護(hù)項(xiàng)目操作說明以及簡單故障處理
- 新生兒窒息復(fù)蘇正壓通氣課件
- 法律顧問投標(biāo)書
- 班主任培訓(xùn)簡報(bào)4篇(一)
- 成都市數(shù)學(xué)八年級上冊期末試卷含答案
- T-CHSA 020-2023 上頜骨缺損手術(shù)功能修復(fù)重建的專家共識
評論
0/150
提交評論