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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

STM32ADC電壓測試實驗報告STM32AD電C壓測試實驗報告?、實驗?的1.了解STM32的基本?作原理2.通過實踐來加深對ARM芯?級程序開發(fā)的理解3.利?STM32的ADC1通道0來采樣外部電壓值值,并在TFTLC模D塊上顯?出來?、實驗原理STM32擁有1~3個ADC,這些ADC可以獨?使?,也可以使?雙重模式(提?采樣率)。STM32的ADC是12位逐次逼近型的模擬數(shù)字轉換器。它有18個通道,可測量16個外部和2個內部信號源。各通道的A/D轉換可以單次、連續(xù)、掃描或間斷模式執(zhí)?。ADC的結果可以左對齊或右對齊?式存儲在16位數(shù)據(jù)寄存器中接下來,我們介紹?下執(zhí)?規(guī)則通道的單次轉換,需要?到的ADC寄存器。第?個要介紹的是ADC和ADC_CR2)。ADC_CR1的各位描述如下:ADC_CR1ADC_CR1的SCAN位,該位?于設置掃描模式,由軟件設置和清除,如果設置為1,則使?掃描模式,如果為0,則關閉掃描模式,ADC_CR1[19:16]?于設置ADC的操作模式我們要使?的是獨?模式,所以設置這?位為0就可以了。第?個寄存器ADC_CR2,該寄存器的各位描述如下:ADCON位?于開關AD轉換器。?CONT位?于設置是否進?連續(xù)轉換,我們使?單次轉換,所以CONT位必須為0。CAL和RSTCAL?于AD校準。ALIGN?于設置數(shù)據(jù)對齊,我們使?右對齊,該位設置為0。EXTSEL[2:0]?于選擇啟動規(guī)則轉換組轉換的外部事件,我們這?使?的是軟件觸發(fā)(SWSTART),所以設置這3個位為111。第三個要介紹的是ADC采樣事件寄存器(ADC_SMPR1和ADC_SMPR2),這兩個寄存器?于設置通道0~17的采樣時間,每個通道占?3個位對于每個要轉換的通道,采樣時間建議盡量長?點,以獲得較?的準確度,但是這樣會降低ADC的轉換速率。ADC的轉換時間可以由下式計算:Tcovn=采樣時間+12.5個周期第四個要介紹的是ADC規(guī)則序列寄存器(ADC_SQR1~3),第五個要介紹的是ADC規(guī)則數(shù)據(jù)寄存器(ADC_DR)。最后?個要介紹的ADC寄存器為ADC狀態(tài)寄存器(ADC_SR),該寄存器保存了ADC轉換時的各種狀態(tài)。三.實驗內容?.實驗步驟1)開啟PA?時鐘,設置PA0為模擬輸?。STM32F103RBT6的ADC通道0在PA0上,所以,我們先要使能PORTA的時鐘,然后設置PA0為模擬輸?。2)使能ADC1時鐘,并設置分頻因?。要使?ADC1,第?步就是要使能ADC1的時鐘,在使能完時鐘之后,進??次ADC1的復位。接著我們就可以通過RCC_CFGR設置ADC1的分頻因?。分頻因?要確保ADC1的時鐘(ADCCLK)不要超過14Mhz。3)設置ADC1的?作模式。在設置完分頻因?之后,我們就可以開始ADC1的模式配置了,設置單次轉換模式、觸發(fā)?式選擇、數(shù)據(jù)對齊?式等都在這?步實現(xiàn)。4)設置ADC1規(guī)則序列的相關信息。接下來我們要設置規(guī)則序列的相關信息,我們這?只有?個通道,并且是單次轉換的,所以設置規(guī)則序列中通道數(shù)為1,然后設置通道0的采樣周期。5)開啟AD轉換器,并校準。在設置完了以上信息后,我們就開啟AD轉換器,執(zhí)?復位校準和AD校準,注意這兩步是必須的!不校準將導致結果很不準確。6)讀取ADC值。在上?的校準完成之后,ADC就算準備好了。接下來我們要做的就是設置規(guī)則序列0??的通道,然后啟動ADC轉換。在轉換結束后,讀取ADC1_DR??的值就是了。通過以上?個步驟的設置,我們就可以正常的使?STM32的ADC1來執(zhí)?AD轉換操作了。?,程序代碼voidAdc_Init(void){//先初始化IO?RCC->APB2ENR|=1<<2;//使能PORTA?時鐘GPIOA->CRL&=0XFFFF0000;//PA0123anolog輸?//通道10/11設置RCC->APB2ENR|=1<<9;//ADC1時鐘使能RCC->APB2RSTR|=1<<9;//ADC1復位RCC->APB2RSTR&=~(1<<9);//復位結束RCC->CFGR&=~(3<<14);//分頻因?清零//SYSCLK/DIV2=12MADC時鐘設置為12M,ADC最?時鐘不能超過14M!//否則將導致ADC準確度下降!RCC->CFGR|=2<<14;ADC1->CR1&=0XF0FFFF;//?作模式清零ADC1->CR1|=0<<16;//獨??作模式ADC1->CR1&=~(1<<8);//?掃描模式ADC1->CR2&=~(1<<1);//單次轉換模式ADC1->CR2&=~(7<<17);ADC1->CR2|=7<<17;//軟件控制轉換ADC1->CR2|=1<<20;//使??外部觸發(fā)(SWSTART)必須使??個事件來觸發(fā)ADC1->CR2&=~(1<<11);//右對齊ADC1->SQR1&=~(0XF<<20);ADC1->SQR1&=0<<20;//1個轉換在規(guī)則序列中也就是只轉換規(guī)則序列1//設置通道0~3的采樣時間ADC1->SMPR2&=0XFFFFF000;//通道0,1,2,3采樣時間清空ADC1->SMPR2|=7<<9;//通道3239.5周期,提?采樣時間可以提?精確度ADC1->SMPR2|=7<<6;//通道2239.5周期,提?采樣時間可以提?精確度ADC1->SMPR2|=7<<3;//通道1239.5周期,提?采樣時間可以提?精確度ADC1->SMPR2|=7<<0;//通道0239.5周期,提?采樣時間可以提?精確度ADC1->CR2|=1<<0;//開啟AD轉換器

ADC1->CR2|=1<<3;//使能復位校準while(ADC1->CR2&1<<3);//等待校準結束//該位由軟件設置并由硬件清除。在校準寄存器被初始化后該位將被清除。ADC1->CR2|=1<<2;//開啟AD校準while(ADC1->CR2&1<<2);//等待校準結束//該位由軟件設置以開始校準,并在校準結束時由硬件清除}//獲得ADC值//ch:通道值0~3u16Get_Adc(u8ch){//設置轉換序列ADC1->SQR3&=0XFFFFFADC1->CR2|=1<<22;//啟動規(guī)則轉換通道while(!(ADC1->SR&1<<1));//等待轉換結束returnADC1->DR;//返回adc值}。接下來在adc.h?件??輸?如下代碼:#ifndef__ADC_H#define__ADC_H//MiniSTM32開發(fā)板//ADC驅動代碼//正點原?@ALIENTEK#defineADC_CH00//通道0#defineADC_CH11//通道1#defineADC_CH22//通道2#defineADC_CH33//通道3voidAdc_Init(void);u16Get_Adc(u8ch);#endif該部分代碼很簡單,這?我們就不多說了,這?定義的4個通道的宏定義,我們在main函數(shù)將會?到ADC_CH0。接下來我們在test.c??,修改main函數(shù)如下:intmain(void){u16adcx;

floattemp;Stm32_Clock_Init(9);//系統(tǒng)時鐘設置delay_init(72);//延時初始化uart_init(72,9600);//串?1初始化LED_Init();LCD_Init();Adc_Init();PO

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論