STM32ADC電壓測試實驗報告_第1頁
STM32ADC電壓測試實驗報告_第2頁
STM32ADC電壓測試實驗報告_第3頁
STM32ADC電壓測試實驗報告_第4頁
STM32ADC電壓測試實驗報告_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、STM32ADC電壓測試實驗報告、實驗?zāi)康牧私釹TM32的基本工作原理通過實踐來加深對ARM芯片級程序開發(fā)的理解利用STM32的ADC1通道0來采樣外部電壓值值,并在TFTLCD模塊上顯示出來、實驗原理STM32擁有13個ADC,這些ADC可以獨立使用,也可以使用雙重模式(提高采樣率)。STM32的ADC是12位逐次逼近型的模擬數(shù)字轉(zhuǎn)換器。它有18個通道,可測量16個外部和2個內(nèi)部信號源。各通道的A/D轉(zhuǎn)換可以單次、連續(xù)、掃描或間斷模式執(zhí)行。ADC的結(jié)果可以左對齊或右對齊方式存儲在16位數(shù)據(jù)寄存器中U1115L汀BoonBOE-VTC3.35ATLPCJ2FfiJJl樂島T:R10CKFBM2

2、C,P35ECLKESET10KKEYLIVEALpawjcmPC4.OSC32PCaSOSCS?PDD-OSCINPOl-OSCOOTKRSTPC&ADCIDPCa.AMllpca-ADcnPCiADCBTDAPADTSKUPADC0-TM2CHLETXPAJ-ADCl-TIWCH2_PA2-U2TK-ADC2-HM2CHSPAPASADCBKM?-匚H4VSSVTD陽P舶氓円1貉沮D匚斗酣】囂匚HN_TX心PA3期匸HRADCPALLfANKJE-USP.4155JH1JH5OADCiTIM3_CHL?AQUP.朋K3dCiTADbTMjH田PASTPO+ADdI斗PCADCISP&J-W

3、CETIM3CH3P33.,ADC9-TM32CH4mi.EOOTlP3aT2C2_5CbU3_T!t:珂山!2C2HDA/uOtKVS呂VTOKE3TLTOFrbfiPO9U上占itblLL,-EDnFJl13GND|l-kPADFTSPA2L6PAJSDCSPA317PA2LC4cJ?-GNDPA3VCC3J譜HI斗FITOPAL5M4KRFCEJT24K5TPA420M3SFIL&CK.SA左3LPAfiSPILM&DPASSmPA7SPILMCSIPAT23PAEKRFCSJT24C&PC42斗PAPNRFIRCJTI斗EKTPC525PAIDLCDDDPM26PA11LCDDIPfi

4、lM12BOOHLCDD2JK2S-M13lcdZdid?B-0甥PAI沖LCDD1FB1I30PA13CLLGNE3L1VCC3332firr&410接下來,我們介紹一下執(zhí)行規(guī)則通道的單次轉(zhuǎn)換,需要用到的ADC寄存器。第一個要介紹的是ADC控制寄存器(ADC_CR1和ADC_CR2)。ADC_CR1的各位描述如下:313029282726252423222120保留ATOENAmENJ保留rwrw151413121110g8-T6543DDSCNM2:ANDISC該位JDISCEKJ模式0AWD軟件置和和清JEOCIE設(shè)置)為EEOCIErwrwrwrwrwrwrwrwrwrwrwrwri式

5、我們要使用的是獨立模式,所以設(shè)置這幾位為0就可以了。第二個寄存器ADC_CR2,該寄存器的各位描述如下:31302928272625242322212019保留TSVREFESWSTARTSWSTART;EXTTRIGEXTrwrwrwrwrw15141312111098了6543JEXTTRIGJEXTSEL2:0:ALIGN保留DMA保留RSTCALrwrwrwrwrwrwrwADCON位用于開關(guān)AD轉(zhuǎn)換器。而CONT位用于設(shè)置是否進行連續(xù)轉(zhuǎn)換,我們使用單次轉(zhuǎn)換,所以CONT位必須為0。CAL和RSTCAL用于AD校準(zhǔn)。ALIGN用于設(shè)置數(shù)據(jù)對齊,我們使用右對齊,該位設(shè)置為0。EXTSEL

6、2:0用于選擇啟動規(guī)則轉(zhuǎn)換組轉(zhuǎn)換的外部事件,我們這里使用的是軟件觸發(fā)(SWSTART),所以設(shè)置這3個位為111。第三個要介紹的是ADC采樣事件寄存器(ADC_SMPR1和ADC_SMPR2),這兩個寄存器用于設(shè)置通道017的采樣時間,每個通道占用3個位31302928272625242322212019保留SMP172:0SMP162:Crwrwrwrwrwrwrwrw15141312111098I*-?76D43SMP150SIP142:O:SMP132:0:SMP122:0SMP112:0:rwrwrwrwrwrwrwrwrwrwrwrwrw位31:24保留。必須保持為CL位2古0SMP

7、x2:0:選擇通道x的采樣時間這些位用于獨立他選擇每個通道的采樣時間。在采樣周期中通道選擇位必英000:1一5周期100:41_5周期001:工5周期101:55-5周期樣:間3占周期較高:準(zhǔn)確度周期轉(zhuǎn)間間可5周期I;二注列-ADC1的模擬輸入通道3)和通道1了在芯片內(nèi)部分別連到了溫度傳感器和V-ADC2的模擬輸入通道代和通道仃在芯片內(nèi)部連到了MS-ADC3模擬輸入通道14,15,1了與Vss相連31302928272625242322212019保留L3:0:rwrwrwrwrw151413121110g8-T6543SQ160SQ154:0SQ144:0SQTWrwrwrwrwrwrwrw

8、rwrwrwrwrw313(位31:24保留.必須保持為九位23:20L3:0:規(guī)則通道序列長度這世位定義了在規(guī)則通道轉(zhuǎn)換序列中轉(zhuǎn)換總數(shù)0000:1個轉(zhuǎn)換0001;2個轉(zhuǎn)換數(shù)據(jù)寄16個轉(zhuǎn)換&19:15SQ164:0:規(guī)則序列中的第吒個轉(zhuǎn)換這凹位定義了轉(zhuǎn)換序列中的第代個轉(zhuǎn)換通道的編號(0-17).2928272625242322212019.ADC2DATA15:0rrrrrrrrrrrrr1514131211109876543DATA15:0rrrrrrrrrrrrr位31:16ADC2DATA15:0:ADC2轉(zhuǎn)換的數(shù)據(jù)-在ADC1中:雙模式下.這些位包含了ADC2轉(zhuǎn)換的規(guī)則通道數(shù)據(jù)見10一

9、-在ADC2中:不用這些位位159DATA15:0J:規(guī)則轉(zhuǎn)換的數(shù)據(jù)這些位為只讀,包含了規(guī)則通道的轉(zhuǎn)換結(jié)杲數(shù)據(jù)是左或右對齊*如圖2531302928272625212322212019181716保留1514131211109876513210STRTJSTRTJEOCEOCATDnrnnr腺斷宜須保持為乩也4STRT規(guī)則通道開始位該應(yīng)由暁件在規(guī)則通道轉(zhuǎn)換開始時設(shè)置”由軟件潔除.0=規(guī)則通道轉(zhuǎn)換未幵始1:規(guī)則通道轉(zhuǎn)換已幵蛤位3JSTRT:注入通道幵始位諜任由陛件在注入通道組轉(zhuǎn)恆幵始時設(shè)買.由軟件活陽.0:注入通道轉(zhuǎn)換束幵蛤1:注入通道轉(zhuǎn)換已幵蛤位2JEOC:注人通道轉(zhuǎn)換站束卷謹(jǐn)應(yīng)由陛件在所竹注

10、入通道組轉(zhuǎn)換緒車時設(shè)置由款(牛清除0:轉(zhuǎn)換本瓷成1:轉(zhuǎn)換盍成EOC:轉(zhuǎn)換躋束位該位由硬件在規(guī)則或注入誦道組轉(zhuǎn)換結(jié)束時設(shè)置,由軟件清除或由讀取ADC_DR時活除0:轉(zhuǎn)換本瓷成1:轉(zhuǎn)換盍成位0AWD:模擬看門狗標(biāo)志蠱該位由暁件在轉(zhuǎn)挾的電缶值趙出fADC.LTR和ADC_HIF寄存器定買的范甩時設(shè)置,由軟件S5除0:浚有發(fā)生甩擬看門狗事件1:堂生模擬看口狗事件.實驗步驟1)開啟PA口時鐘,設(shè)置PA0為模擬輸入。STM32F103RBT6的ADC通道0在PAO上,所以,我們先要使能PORTA的時鐘,然后設(shè)置PA0為模擬輸入。2)使能ADC1時鐘,并設(shè)置分頻因子。要使用ADC1,第一步就是要使能ADC1

11、的時鐘,在使能完時鐘之后,進行一次ADC1的復(fù)位。接著我們就可以通過RCC_CFGR設(shè)置ADC1的分頻因子。分頻因子要確保ADC1的時鐘(ADCCLK)不要超過14Mhz。3)設(shè)置ADC1的工作模式。在設(shè)置完分頻因子之后,我們就可以開始ADC1的模式配置了,設(shè)置單次轉(zhuǎn)換模式、觸發(fā)方式選擇、數(shù)據(jù)對齊方式等都在這一步實現(xiàn)。4)設(shè)置ADC1規(guī)則序列的相關(guān)信息。接下來我們要設(shè)置規(guī)則序列的相關(guān)信息,我們這里只有一個通道,并且是單次轉(zhuǎn)換的,所以設(shè)置規(guī)則序列中通道數(shù)為1,然后設(shè)置通道0的采樣周期。5)開啟AD轉(zhuǎn)換器,并校準(zhǔn)。在設(shè)置完了以上信息后,我們就開啟AD轉(zhuǎn)換器,執(zhí)行復(fù)位校準(zhǔn)和AD校準(zhǔn),注意這兩步是必須

12、的!不校準(zhǔn)將導(dǎo)致結(jié)果很不準(zhǔn)確。6)讀取ADC值。在上面的校準(zhǔn)完成之后,ADC就算準(zhǔn)備好了。接下來我們要做的就是設(shè)置規(guī)則序列0里面的通道,然后啟動ADC轉(zhuǎn)換。在轉(zhuǎn)換結(jié)束后,讀取ADC1_DR里面的值就是了。通過以上幾個步驟的設(shè)置,我們就可以正常的使用STM32的ADC1來執(zhí)行AD轉(zhuǎn)換操作了。二,程序代碼voidAdc_Init(void)先初始化IO口RCC-APB2ENRI=1vv2;使能PORTA口時鐘GPIOA-CRL&=0XFFFF0000;/PA0123anolog輸入/通道10/11設(shè)置RCC-APB2ENR|=1APB2RSTR|=1APB2RSTR&=(1vv9);復(fù)位結(jié)束RCC

13、-CFGR&=(3CFGR|=2CR1&=0XF0FFFF;/工作模式清零ADC1-CR1|=0CR1&=(1CR2&=(1CR2&=(7CR2|=7CR2I=1CR2&=(1SQR1&=(0XFSQR1&=0SMPR2&=0XFFFFF000;通道0,1,2,3采樣時間清空ADC1-SMPR2|=7SMPR2|=7SMPR2|=7SMPR2|=7CR2I=1CR2|=1CR2&1CR2I=1CR2&1SQR3&=0XFFFFFADC1-CR2|=1SR&lvvl);等待轉(zhuǎn)換結(jié)束returnADC1-DR;返回adc值。接下來在adc.h文件里面輸入如下代碼:#ifndef_ADC_H#def

14、ine_ADC_H/MiniSTM32開發(fā)板/ADC驅(qū)動代碼正點原子ALIENTEK#defineADC_CH00/通道0#defineADC_CH11通道1#defineADC_CH22/通道2#defineADC_CH33/通道3voidAdc_Init(void);u16Get_Adc(u8ch);#endif該部分代碼很簡單,這里我們就不多說了,這里定義的4個通道的宏定義,我們在main函數(shù)將會用到ADC_CHO。接下來我們在test.c里面,修改main函數(shù)如下:intmain(void)u16adcx;floattemp;Stm32_Clock_Init(9);系統(tǒng)時鐘設(shè)置delay_init(72);/延時初始化uart_init(72,9600);/串口1初始化LED_Init();LCD_Init(

溫馨提示

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

評論

0/150

提交評論