教學(xué)課件 16-電壓采集系統(tǒng)設(shè)計(jì)_第1頁
教學(xué)課件 16-電壓采集系統(tǒng)設(shè)計(jì)_第2頁
教學(xué)課件 16-電壓采集系統(tǒng)設(shè)計(jì)_第3頁
教學(xué)課件 16-電壓采集系統(tǒng)設(shè)計(jì)_第4頁
教學(xué)課件 16-電壓采集系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩46頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

項(xiàng)目五環(huán)境檢測系統(tǒng)設(shè)計(jì)任務(wù)2-1電壓采集系統(tǒng)設(shè)計(jì)項(xiàng)目五環(huán)境檢測系統(tǒng)設(shè)計(jì)任務(wù)1任務(wù)2任務(wù)3LCD顯示系統(tǒng)設(shè)計(jì)溫度采集系統(tǒng)設(shè)計(jì)光照采集系統(tǒng)設(shè)計(jì)知識(shí)目標(biāo):1.掌握ADC工作原理;2.掌握ADC相關(guān)庫函數(shù)的配置方法。技能目標(biāo):1.會(huì)正確使用ADC相關(guān)庫函數(shù);2.會(huì)編程實(shí)現(xiàn)ADC采集功能。素養(yǎng)目標(biāo):1.操作規(guī)范,符合5S管理要求;2.具備自主探究、勤學(xué)好問的態(tài)度。學(xué)習(xí)目標(biāo)設(shè)計(jì)要求利用STM32開發(fā)板上的ADC接口,實(shí)現(xiàn)模擬電壓數(shù)據(jù)的采集,并將當(dāng)前電壓值顯示在液晶屏上,編寫控制程序并進(jìn)行系統(tǒng)調(diào)試。硬件設(shè)計(jì)硬件連接:

知識(shí)導(dǎo)航ADCAnalog-to-DigitalConverter的縮寫,模數(shù)轉(zhuǎn)換器。是將連續(xù)變量的模擬信號(hào)轉(zhuǎn)換為離散的數(shù)字信號(hào)的器件。典型的模數(shù)轉(zhuǎn)換器將模擬信號(hào)轉(zhuǎn)換為表示一定比例電壓值的數(shù)字信號(hào)。知識(shí)導(dǎo)航STM32F10xADC特點(diǎn)12位逐次逼近型的模擬數(shù)字轉(zhuǎn)換器。最多帶3個(gè)ADC控制器最多支持18個(gè)通道,可最多測量16個(gè)外部和2個(gè)內(nèi)部信號(hào)源。支持單次和連續(xù)轉(zhuǎn)換模式

轉(zhuǎn)換結(jié)束,注入轉(zhuǎn)換結(jié)束,和發(fā)生模擬看門狗事件時(shí)產(chǎn)生中斷。

通道0到通道n的自動(dòng)掃描模式

自動(dòng)校準(zhǔn)

采樣間隔可以按通道編程

規(guī)則通道和注入通道均有外部觸發(fā)選項(xiàng)

轉(zhuǎn)換結(jié)果支持左對齊或右對齊方式存儲(chǔ)在16位數(shù)據(jù)寄存器ADC轉(zhuǎn)換時(shí)間:最大轉(zhuǎn)換速率1us。(最大轉(zhuǎn)換速度為1MHz)ADC供電要求:2.4V-3.6VADC輸入范圍:VREF-≤VIN≤VREF+知識(shí)導(dǎo)航STM32F10x系列芯片ADC通道和引腳對應(yīng)關(guān)系知識(shí)導(dǎo)航ADC引腳知識(shí)導(dǎo)航ADC框圖知識(shí)導(dǎo)航STM32通道組規(guī)則通道組:相當(dāng)正常運(yùn)行的程序。最多16個(gè)通道。

規(guī)則通道和它的轉(zhuǎn)換順序在ADC_SQRx寄存器中選擇,規(guī)則

組轉(zhuǎn)換的總數(shù)應(yīng)寫入ADC_SQR1寄存器的L[3:0]中。②注入通道組:相當(dāng)于中斷。最多4個(gè)通道。

注入組和它的轉(zhuǎn)換順序在ADC_JSQR寄存器中選擇。注入組

里轉(zhuǎn)化的總數(shù)應(yīng)寫入ADC_JSQR寄存器的L[1:0]中。知識(shí)導(dǎo)航規(guī)則通道1規(guī)則通道2規(guī)則通道N注入通道1注入通道1規(guī)則通道1規(guī)則通道2規(guī)則通道N注入通道N知識(shí)導(dǎo)航STM32F1系列處理器的ADC的各通道運(yùn)行模式獨(dú)立模式與雙ADC模式單通道模式與掃描模式單次轉(zhuǎn)換模式與連續(xù)轉(zhuǎn)換模式。知識(shí)導(dǎo)航ADC時(shí)鐘配置注意:不要讓ADC時(shí)鐘超過14MHz,否則可能不準(zhǔn)。知識(shí)導(dǎo)航ADC_CR1寄存器知識(shí)導(dǎo)航ADC_CR1寄存器知識(shí)導(dǎo)航ADC_CR2寄存器知識(shí)導(dǎo)航數(shù)據(jù)對齊方式知識(shí)導(dǎo)航ADC_CR2寄存器知識(shí)導(dǎo)航ADC_SMPR1寄存器知識(shí)導(dǎo)航ADC_SMPR2寄存器知識(shí)導(dǎo)航ADC的采樣時(shí)間完成一次AD轉(zhuǎn)換最少需要1us(ADC時(shí)鐘=14MHz,采樣周期為1.5周期下得到)知識(shí)導(dǎo)航ADC_SQR1/SQR2/SQR3規(guī)則序列寄存器知識(shí)導(dǎo)航ADC_JSQR注入系列寄存器知識(shí)導(dǎo)航ADC_DR規(guī)則通道數(shù)據(jù)寄存器知識(shí)導(dǎo)航ADC_JDR注入通道數(shù)據(jù)寄存器知識(shí)導(dǎo)航ADC_SR狀態(tài)寄存器知識(shí)導(dǎo)航函數(shù)RCC_APB2PeriphClockCmd函數(shù)原型:voidRCC_APB2PeriphClockCmd(u32RCC_APB2Periph,FunctionalStateNewState);函數(shù)功能:開啟相應(yīng)的外設(shè)時(shí)鐘。參數(shù)1:APB2外設(shè)時(shí)鐘,可以取下表的一個(gè)或者多個(gè)取值的組合作為該參數(shù)的值。參數(shù)2:可以取ENABLE或者DISABLE。知識(shí)導(dǎo)航RCC_APB2Periph值描述RCC_APB2Periph_GPIOAGPIOA時(shí)鐘RCC_APB2Periph_GPIOBGPIOB時(shí)鐘RCC_APB2Periph_GPIOCGPIOC時(shí)鐘RCC_APB2Periph_GPIODGPIOD時(shí)鐘RCC_APB2Periph_GPIOEGPIOE時(shí)鐘RCC_APB2Periph_GPIOFGPIOF時(shí)鐘RCC_APB2Periph_GPIOGGPIOG時(shí)鐘RCC_APB2Periph_AFIO功能復(fù)用I/O時(shí)鐘RCC_APB2Periph_ADC1ADC1時(shí)鐘RCC_APB2Periph_ADC2ADC2時(shí)鐘知識(shí)導(dǎo)航函數(shù)RCC_ADCCLKConfig函數(shù)原型:voidRCC_ADCCLKConfig(uint32_tRCC_PCLK2);函數(shù)功能:設(shè)置ADC時(shí)鐘。知識(shí)導(dǎo)航函數(shù)ADC_Init函數(shù)原型:voidADC_Init(ADC_TypeDef*ADCx,ADC_InitTypeDef*ADC_InitStruct);函數(shù)功能:對外設(shè)ADCx進(jìn)行初始化。參數(shù)1:指定要使用的ADCx(ADC1、ADC2或ADC3)。參數(shù)2:為指針類型,指向一段數(shù)據(jù)結(jié)構(gòu),這個(gè)數(shù)據(jù)結(jié)構(gòu)就保存著對ADCx配置的各個(gè)參數(shù)。知識(shí)導(dǎo)航ADC_InitTypeDef結(jié)構(gòu)體typedefstruct{uint32_tADC_Mode;//ADC模式FunctionalStateADC_ScanConvMode;//是否使用掃描模式FunctionalStateADC_ContinuousConvMode;//單次轉(zhuǎn)換還是連續(xù)轉(zhuǎn)換uint32_tADC_ExternalTrigConv;//觸發(fā)方式uint32_tADC_DataAlign;//對齊方式:左對齊還是右對齊uint8_tADC_NbrOfChannel;//規(guī)則通道序列長度}ADC_InitTypeDef;知識(shí)導(dǎo)航參數(shù)ADC_Mode用來設(shè)置ADC工作在獨(dú)立模式或雙ADC模式,我們讓ADC工作在獨(dú)立模式,所以選擇值為ADC_Mode_Independent。參數(shù)ADC_ScanConvMode用來設(shè)置ADC是否使用掃描模式,我們要使用單通道模式,所以選擇值為DISABLE。知識(shí)導(dǎo)航參數(shù)ADC_ContinuousConvMode用來設(shè)置ADC是否使用連續(xù)轉(zhuǎn)換模式,我們使用的是單次轉(zhuǎn)換模式,所以選擇值為DISABLE。參數(shù)ADC_ExternalTrigConv用來設(shè)置ADC的觸發(fā)方式,我們要使用軟件觸發(fā)ADC轉(zhuǎn)換,所以選擇值為ADC_ExternalTrigConv_None。知識(shí)導(dǎo)航參數(shù)ADC_DataAlign用來設(shè)置ADC數(shù)據(jù)的對齊方式,我們使用的是右對齊方式,所以選擇值為ADC_DataAlign_Right。參數(shù)ADC_NbrOfChannel用來設(shè)定順序進(jìn)行規(guī)則轉(zhuǎn)換的ADC通道的數(shù)目(1-16),我們只使用了一個(gè)ADC通道,所以設(shè)為1。知識(shí)導(dǎo)航實(shí)例ADC_InitTypeDefADC_InitStructure;ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;//獨(dú)立模式ADC_InitStructure.ADC_ScanConvMode=DISABLE; //不開啟掃描ADC_InitStructure.ADC_ContinuousConvMode=DISABLE;//單次轉(zhuǎn)換模式ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//觸發(fā)軟件ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;//ADC數(shù)據(jù)右對齊ADC_InitStructure.ADC_NbrOfChannel=1;//順序進(jìn)行規(guī)則轉(zhuǎn)換的ADC通道的數(shù)目ADC_Init(ADC1,&ADC_InitStructure); 知識(shí)導(dǎo)航函數(shù)ADC_DeInit函數(shù)原型:voidADC_DeInit(ADC_TypeDef*ADCx);函數(shù)功能:復(fù)位ADCx。參數(shù):指定要復(fù)位的ADCx(ADC1、ADC2或ADC3)。知識(shí)導(dǎo)航函數(shù)ADC_RegularChannelConfig函數(shù)原型:voidADC_RegularChannelConfig(ADC_TypeDef*ADCx,uint8_tADC_Channel,uint8_tRank,uint8_tADC_SampleTime);函數(shù)功能:設(shè)置指定ADC的規(guī)則組通道,以及轉(zhuǎn)換順序和采樣時(shí)間。參數(shù)1:指定的ADC(ADC1、ADC2或ADC3)。參數(shù)2:指定ADC的通道,即ADC_Channel_X(X為0-17)。參數(shù)3:設(shè)置ADC轉(zhuǎn)換順序。參數(shù)4:設(shè)置采樣時(shí)間。知識(shí)導(dǎo)航采樣時(shí)間可選擇的值A(chǔ)DC_SampleTime_1Cycles5采樣時(shí)間為1.5周期

ADC_SampleTime_7Cycles5ADC_SampleTime_13Cycles5ADC_SampleTime_28Cycles5ADC_SampleTime_41Cycles5ADC_SampleTime_55Cycles5ADC_SampleTime_71Cycles5ADC_SampleTime_239Cycles5知識(shí)導(dǎo)航實(shí)例ADC_RegularChannelConfig(ADC1,ADC_Channel_1,1,ADC_SampleTime_239Cycles5);知識(shí)導(dǎo)航函數(shù)ADC_Cmd函數(shù)原型:voidADC_Cmd(ADC_TypeDef*ADCx,FunctionalStateNewState);函數(shù)功能:使能指定的ADC。參數(shù)1:指定的ADC(ADC1、ADC2或ADC3)。參數(shù)2:ENABLE還是DISABLE。實(shí)例:ADC_Cmd(ADC1,ENABLE);//使能指定的ADC1知識(shí)導(dǎo)航ADC校準(zhǔn)方法ADC_ResetCalibration(ADC1);//使能復(fù)位校準(zhǔn)while(ADC_GetResetCalibrationStatus(ADC1));//等待復(fù)位校準(zhǔn)結(jié)束ADC_StartCalibration(ADC1);//開啟AD校準(zhǔn)while(ADC_GetCalibrationStatus(ADC1)); //等待AD校準(zhǔn)結(jié)束知識(shí)導(dǎo)航函數(shù)ADC_SoftwareStartConvCmd函數(shù)原型:voidADC_SoftwareStartConvCmd(ADC_TypeDef*ADCx,FunctionalStateNewState);函數(shù)功能:使能ADC的軟件轉(zhuǎn)換啟動(dòng)功能。參數(shù)1:指定的ADC(ADC1、ADC2或ADC3)。參數(shù)2:ENABLE還是DISABLE。實(shí)例:ADC_SoftwareStartConvCmd(ADC1,ENABLE);//使能ADC1的軟件轉(zhuǎn)換啟動(dòng)知識(shí)導(dǎo)航函數(shù)ADC_GetFlagStatus函數(shù)原型:FlagStatusADC_GetFlagStatus(ADC_TypeDef*ADCx,uint8_tADC_FLAG);函數(shù)功能:檢查ADC對應(yīng)的標(biāo)志位是否為1。參數(shù)1:待檢測的ADCx(ADC1、ADC2或ADC3)。參數(shù)2:待檢查的標(biāo)志位,我們要判斷ADC轉(zhuǎn)換是否完成,即ADC轉(zhuǎn)換結(jié)束標(biāo)志位是否為1,所以選擇ADC_FLAG_EOC。返回值:SET(轉(zhuǎn)換結(jié)束)或RESET(轉(zhuǎn)換進(jìn)行中)。實(shí)例:while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));知識(shí)導(dǎo)航函數(shù)ADC_GetConversionValue函數(shù)原型:uint16_tADC_GetConversionValue(ADC_TypeDef*ADCx);函數(shù)功能:獲取ADC轉(zhuǎn)換后的結(jié)果。參數(shù):ADCx(ADC1、ADC2或ADC3)。實(shí)例:a=ADC_GetConversionValue(ADC1);//獲取ADC1轉(zhuǎn)換結(jié)果知識(shí)導(dǎo)航實(shí)例:獲取ADC轉(zhuǎn)換后的數(shù)據(jù)u16Get_Adc(){ u16a; ADC_SoftwareStartConvCmd(ADC1,ENABLE); while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));a=ADC_GetConversionValue(ADC1); returna; }任務(wù)實(shí)現(xiàn)ADC采集數(shù)據(jù)步驟:開啟PA口和ADC1時(shí)鐘,設(shè)置PA1為模擬輸入。

GPIO_Init();APB2PeriphClockCmd();復(fù)位ADC1,同時(shí)設(shè)置ADC1分頻因子。RCC_ADCCLKConfig(RCC_PCLK2_Div6);ADC_DeInit(ADC1);初始化ADC1參數(shù),設(shè)置ADC1的工作模式以及規(guī)則序列的相關(guān)信息。voidADC_Init(ADC_TypeDef*ADCx,ADC_InitTypeDef*ADC_InitStruct);配置規(guī)則通道參數(shù)。ADC_RegularChannelConfig();使能ADC并校準(zhǔn)。

ADC_Cmd(ADC1,ENABLE);開啟軟件轉(zhuǎn)換:ADC_SoftwareStartConvCmd(ADC1);等待轉(zhuǎn)換完成。

讀取ADC值。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論