版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第15章模擬/數(shù)字轉(zhuǎn)換器(ADC)12位ADC是一種逐次逼近型模擬數(shù)字轉(zhuǎn)換器。它有18個通道,可測量16個外部和2個內(nèi)部信號源。各通道的A/D轉(zhuǎn)換可以單次、連續(xù)、掃描或間斷模式執(zhí)行。ADC的結(jié)果可以左對齊或右對齊方式存儲在16位數(shù)據(jù)寄存器中。模擬看門狗特性允許應(yīng)用程序檢測輸入電壓是否超出用戶定義的高/低閥值值。一、ADC的構(gòu)成1、主要特征12位分辨率轉(zhuǎn)換結(jié)束,注入轉(zhuǎn)換結(jié)束和發(fā)生模擬看門狗事件時產(chǎn)生中斷單次和連續(xù)轉(zhuǎn)換模式從通道0到通道n的自動掃描模式自校準(zhǔn)帶內(nèi)嵌數(shù)據(jù)一致的數(shù)據(jù)對齊通道之間采樣間隔可編程規(guī)則轉(zhuǎn)換和注入轉(zhuǎn)換均有外部觸發(fā)選項間斷模式雙重模式(帶2個ADC的器件)ADC轉(zhuǎn)換速率1MHzADC供電要求:2.4V到3.6VADC輸入范圍:VREF-≤VIN≤VREF+規(guī)則通道轉(zhuǎn)換期間有DMA請求產(chǎn)生。2、內(nèi)部框圖名稱信號類型注解VREF+輸入,模擬參考正極ADC使用的高端/正極參考電壓,VSSA≤VREF+≤VDDAVDDA輸入,模擬電源等效于VDD的模擬電源且:2.4V≤VDDA≤VDD(3.6V)VREF-輸入,模擬參考負(fù)極ADC使用的低端/負(fù)極參考電壓,VREF-=VSSAVSSA輸入,模擬電源地等效于VSS的模擬電源地ADC_IN[15:0]模擬輸入信號16個模擬輸入通道EXTSEL[2:0]輸入,數(shù)字開始規(guī)則成組轉(zhuǎn)換的六個外部觸發(fā)信號JEXTSEL[2:0]輸入,數(shù)字開始注入成組轉(zhuǎn)換的六個外部觸發(fā)信號3、引腳描述二、ADC的功能描述1、ADC開關(guān)控制通過設(shè)置ADC_CR1寄存器的ADON位可給ADC上電。當(dāng)?shù)谝淮卧O(shè)置ADON位時,它將ADC從斷電狀態(tài)下喚醒;ADC上電延遲一段時間后(tSTAB),再次設(shè)置ADON位時開始進(jìn)行轉(zhuǎn)換;通過清除ADON位可以停止轉(zhuǎn)換,并將ADC置于斷電模式。2、ADC時鐘 由時鐘控制器提供的ADCCLK時鐘和PCLK2(APB2時鐘)同步,CLK控制器為ADC時鐘提供一個專用的可編程預(yù)分頻器。3、通道選擇有16個多路通道??梢园艳D(zhuǎn)換分成兩組:規(guī)則組和注入組。可以在任意多個通道上以任意順序進(jìn)行的一系列轉(zhuǎn)換構(gòu)成成組轉(zhuǎn)換。例如,可以如下順序完成轉(zhuǎn)換:通道3、通道8、通道2、通道2、通道0、通道2、通道2、通道15。規(guī)則組由多達(dá)16個轉(zhuǎn)換組成。規(guī)則通道和它們的轉(zhuǎn)換順序在ADC_SQRx寄存器中選擇。規(guī)則組中轉(zhuǎn)換的總數(shù)寫入ADC_SQR1寄存器的L[3:0]位中。注入組由多達(dá)4個轉(zhuǎn)換組成。注入通道和它們的轉(zhuǎn)換順序在ADC_JSQR寄存器中選擇。注入組里的轉(zhuǎn)換總數(shù)目寫入ADC_JSQR寄存器的L[1:0]位中。溫度傳感器和通道ADC_IN16相連接,內(nèi)部參考電壓VREFINT和ADC_IN17相連接??梢园醋⑷牖蛞?guī)則通道對這兩個內(nèi)部通道進(jìn)行轉(zhuǎn)換。4、單次轉(zhuǎn)換模式
單次轉(zhuǎn)換模式里,ADC只執(zhí)行一次轉(zhuǎn)換。一旦選擇通道的轉(zhuǎn)換完成:如果一個規(guī)則通道被轉(zhuǎn)換:轉(zhuǎn)換數(shù)據(jù)被儲存在16位ADC_DR寄存器中,EOC(轉(zhuǎn)換結(jié)束)標(biāo)志被設(shè)置,如果設(shè)置了EOCIE,則產(chǎn)生中斷。如果一個注入通道被轉(zhuǎn)換:轉(zhuǎn)換數(shù)據(jù)被儲存在16位的ADC_DRJ1寄存器中,JEOC(注入轉(zhuǎn)換結(jié)束)標(biāo)志被設(shè)置,如果設(shè)置了JEOCIE位,則產(chǎn)生中斷。然后ADC停止。5、連續(xù)轉(zhuǎn)換模式
在連續(xù)轉(zhuǎn)換模式中,當(dāng)前面ADC轉(zhuǎn)換一結(jié)束馬上就啟動另一次轉(zhuǎn)換。每個轉(zhuǎn)換后:如果一個規(guī)則通道被轉(zhuǎn)換:轉(zhuǎn)換數(shù)據(jù)被儲存在16位的ADC_DR寄存器中,EOC(轉(zhuǎn)換結(jié)束)標(biāo)志被設(shè)置,如果設(shè)置了EOCIE,則產(chǎn)生中斷。如果一個注入通道被轉(zhuǎn)換:轉(zhuǎn)換數(shù)據(jù)被儲存在16位的ADC_DRJ1寄存器中,JEOC(注入轉(zhuǎn)換結(jié)束)標(biāo)志被設(shè)置,如果設(shè)置了JEOCIE位,則產(chǎn)生中斷。6、時序圖
ADC在開始精確轉(zhuǎn)換前需要一個穩(wěn)定時間tSTAB
。在開始ADC轉(zhuǎn)換和14個時鐘周期后,EOC標(biāo)志被設(shè)置,16位ADC數(shù)據(jù)寄存器包含轉(zhuǎn)換的結(jié)果。8、掃描模式 此模式用來掃描一組模擬通道。在每個組的每個通道上執(zhí)行單次轉(zhuǎn)換,在每個轉(zhuǎn)換結(jié)束時,同一組的下一個通道被自動轉(zhuǎn)換。如果設(shè)置了CONT位,轉(zhuǎn)換不會在選擇組的最后一個通道上停止,而是再次從選擇組的第一個通道繼續(xù)轉(zhuǎn)換。如果設(shè)置了DMA位,在每次EOC后,DMA控制器把規(guī)則組通道的轉(zhuǎn)換數(shù)據(jù)傳輸?shù)絊RAM中。而注入通道轉(zhuǎn)換的數(shù)據(jù)總是存儲在ADC_JDRx寄存器中。三、校準(zhǔn)ADC有一個內(nèi)置自校準(zhǔn)模式。校準(zhǔn)可大幅減小因內(nèi)部電容器組的變化而造成的準(zhǔn)精度誤差。通過設(shè)置ADC_CR2寄存器的CAL位啟動校準(zhǔn)。一旦校準(zhǔn)結(jié)束,CAL位被硬件復(fù)位,可以開始正常轉(zhuǎn)換。注意:
1、建議在每次上電后執(zhí)行校準(zhǔn)。2、啟動校準(zhǔn)前,ADC必須處于關(guān)電狀態(tài)(ADON=’0’)超過至少兩個ADC時鐘周期。校準(zhǔn)時間框圖四、數(shù)據(jù)對齊 數(shù)據(jù)可以左對齊或右對齊。數(shù)據(jù)右對齊(注入組)數(shù)據(jù)右對齊(規(guī)則組)數(shù)據(jù)左對齊(注入組)數(shù)據(jù)左對齊(規(guī)則組)五、可編程的通道采樣時間
ADC使用若干個ADC_CLK周期對輸入電壓采樣,采樣周期數(shù)目可以通過ADC_SMPR1和ADC_SMPR2寄存器中的SMP[2:0]位而更改。每個通道可以以不同的時間采樣??傓D(zhuǎn)換時間如下計算:
TCONV=采樣時間+12.5個周期例如:當(dāng)ADCCLK=14MHz,則1.5周期的采樣時間TCONV=1.5+12.5=14周期=1μs七、DMA請求因為規(guī)則通道轉(zhuǎn)換的值儲存在一個唯一的數(shù)據(jù)寄存器中,所以當(dāng)轉(zhuǎn)換多個規(guī)則通道時需要使用DMA,這可以避免丟失已經(jīng)存儲在ADC_DR寄存器中的數(shù)據(jù)。只有在規(guī)則通道的轉(zhuǎn)換結(jié)束時才產(chǎn)生DMA請求,并將轉(zhuǎn)換的數(shù)據(jù)從ADC_DR寄存器傳輸?shù)接脩糁付ǖ哪康牡刂?。注入通道不能使用DMA。DMA請求映像
DMASWTRIGGERDMA請求ORADC1TIM2_CC3TIM4_CC1SWTRIGGERORUSART3_TXSWTRIGGERORSWTRIGGERORSWTRIGGERORSWTRIGGERORSWTRIGGEROR高優(yōu)先級請求低優(yōu)先級請求通道1TIM1_CC1TIM2_UPTIM3_CC3SPI1_RXUSART3_RXTIM1_CC2SPI1_TXTIM3_CC4TIM3_UPSPI2_RXI2C2_TXTIM1_CC4USART1_TXTIM1_CCUTIM1_TRIGTIM4_CC2USART1_RXTIM1_UPSPI2_TXI2C2_RXTIM2_CC1TIM4_CC3USART2_RXTIM1_CC3TIM3_CC1I2C1_TXTIM3_TRIGUSART2_TXTIM2_CC2TIM2_CC4TIM4_UPI2C1_RX通道2通道3通道4通道5通道6通道7八、溫度傳感器 溫度傳感器可以用來測量器件周圍的溫度(TA)。溫度傳感器在內(nèi)部和ADC_IN16輸入通道相連接,此通道把傳感器輸出的電壓轉(zhuǎn)換成數(shù)字值。溫度傳感器模擬輸入的采樣時間必須大于2.2μs。當(dāng)溫度傳感器沒有被使用時,可以置于關(guān)電模式。主要特征支持的溫度范圍:-40到125度精確度:+/-1.5°C溫度傳感器和VREFINT通道框圖ADC_IN16(溫度傳感器)和ADC_IN17(VREFINT)的轉(zhuǎn)換。讀取溫度的方法選擇ADCx_IN16輸入通道選擇采樣時間大于2.2μs設(shè)置TSVREFE位,以喚醒關(guān)電模式下的溫度傳感器通過設(shè)置ADON位啟動ADC轉(zhuǎn)換讀ADC數(shù)據(jù)寄存器上的VSENSE
數(shù)據(jù)利用下列公式得出溫度溫度(°C)={(V25-VSENSE)/Avg_Slope}+25V25=VSENSE在25°C時的數(shù)值(典型值=1.42V,對應(yīng)于對應(yīng)0x6E2(1762D
))
Avg_Slope
=溫度與VSENSE
曲線的平均斜率 (典型值=4.35mv/°C,對應(yīng)于0x05/°C)九、中斷 規(guī)則和注入組轉(zhuǎn)換結(jié)束時能產(chǎn)生中斷,當(dāng)模擬看門狗狀態(tài)位被設(shè)置時也能產(chǎn)生中斷,它們都有獨(dú)立的中斷使能位。中斷事件事件標(biāo)志使能控制位規(guī)則組轉(zhuǎn)換結(jié)束EOCEOCIE注入組轉(zhuǎn)換結(jié)束JEOCJEOCIE設(shè)置模擬看門狗狀態(tài)位AWDAWDIE十、ADC固件庫函數(shù)
ADC_Init
的使用方法函數(shù)原形voidADC_Init(ADC_TypeDef*ADCx,ADC_InitTypeDef*ADC_InitStruct)功能描述根據(jù)ADC_InitStruct
結(jié)構(gòu)的內(nèi)容初始化ADCx
接口.輸入?yún)?shù)1ADCx:其中x可以是1或2.輸入?yún)?shù)2ADC_InitStruct:指向ADC_InitTypeDef
結(jié)構(gòu).ADC_InitTypeDef
結(jié)構(gòu):該結(jié)構(gòu)定義在stm32f10x_adc.h文件中。typedef
struct{u32ADC_Mode;
FunctionalState
ADC_ScanConvMode;
FunctionalState
ADC_ContinuousConvMode;
u32ADC_ExternalTrigConv;
u32ADC_DataAlign;
u8ADC_NbrOfChannel;}ADC_InitTypeDef
ADC_Mode
參數(shù)配置ADC工作在單/雙模式.ADC_Mode描述ADC_Mode_Independent
ADC1和ADC2工作在獨(dú)立模式ADC_Mode_RegInjecSimult
ADC1和ADC2工作在同時規(guī)則注入模式ADC_Mode_RegSimult_AlterTrig
ADC1和ADC2工作在同時規(guī)則和交替觸發(fā)模式ADC_Mode_InjecSimult_FastInterl
ADC1和ADC2工作在同時注入和快速交替模式ADC_Mode_InjecSimult_SlowInterl
ADC1和ADC2工作在同時注入和慢速交替模式ADC_Mode_InjecSimult
ADC1和ADC2工作在同時注入模式ADC_Mode_RegSimult
ADC1和ADC2工作在同時規(guī)則模式ADC_Mode_FastInterl
ADC1和ADC2工作在快速交替模式ADC_Mode_SlowInterl
ADC1和ADC2工作在慢速交替模式ADC_Mode_AlterTrig
ADC1和ADC2工作在交替觸發(fā)模式ADC_ExternalTrigConv
參數(shù)設(shè)置規(guī)則通道使用外部觸發(fā)啟動ADC轉(zhuǎn)換。ADC_ExternalTrigConv描述ADC_ExternalTrigConv_T1_CC1外部觸發(fā)轉(zhuǎn)換選用通用定時器1的捕獲比較器1ADC_ExternalTrigConv_T1_CC2外部觸發(fā)轉(zhuǎn)換選用通用定時器1的捕獲比較器2ADC_ExternalTrigConv_T1_CC3外部觸發(fā)轉(zhuǎn)換選用通用定時器1的捕獲比較器3ADC_ExternalTrigConv_T2_CC2外部觸發(fā)轉(zhuǎn)換選用通用定時器2的捕獲比較器2ADC_ExternalTrigConv_T3_TRGO外部觸發(fā)轉(zhuǎn)換選用通用定時器3的TRGOADC_ExternalTrigConv_T4_CC4外部觸發(fā)轉(zhuǎn)換選用通用定時器4的捕獲比較器4ADC_ExternalTrigConv_Ext_IT11外部觸發(fā)轉(zhuǎn)換選用外部中斷11事件ADC_ExternalTrigConv_None
軟件啟動轉(zhuǎn)換ADC_ScanConvMode
參數(shù)指定ADC工作在掃描模式(多通道)還是單次(單通道)模式。如果設(shè)置為ENABLE,就是掃描模式,設(shè)置DISABLE就是單次模式.ADC_ContinuousConvMode
參數(shù)指定轉(zhuǎn)換是連續(xù)的還是單次的。如設(shè)置ENABLE就是連續(xù)的,設(shè)置DISABLE是單次的.ADC_NbrOfChannel
參數(shù)指定使用序列規(guī)則組中ADC通道的數(shù)目.可以取1到16.ADC_DataAlign
參數(shù)指定數(shù)據(jù)對齊方式.ADC_DataAlign描述ADC_DataAlign_Right
ADC數(shù)據(jù)右對齊ADC_DataAlign_Left
ADC數(shù)據(jù)左對齊函數(shù)原形voidADC_RegularChannelConfig(ADC_TypeDef*ADCx,u8ADC_Channel,u8Rank,u8ADC_SampleTime)功能描述對選擇的ADC規(guī)則通道配置轉(zhuǎn)換次序和采樣時間.輸入?yún)?shù)1ADCx:其中x可以是1或2.輸入?yún)?shù)2ADC_Channel:需要配置的ADC通道.輸入?yún)?shù)3Rank:在規(guī)則組序列中的次序.范圍是1到16.輸入?yún)?shù)4ADC_SampleTime:選擇通道的采樣時間值.
ADC_RegularChannelConfig
的使用方法ADC_Channel
描述ADC_Channel_0選擇ADC的通道0ADC_Channel_1選擇ADC的通道1┅┅ADC_Channel_8選擇ADC的通道8┅┅ADC_Channel_16選擇ADC的通道16ADC_Channel_17選擇ADC的通道17ADC_Channel
參數(shù)指定需要配置的ADC通道.ADC_SampleTime
參數(shù)指定選擇通道的ADC采樣時間.ADC_SampleTime描述ADC_SampleTime_1Cycles5采樣時間是1.5周期ADC_SampleTime_7Cycles5采樣時間是7.5周期
ADC_SampleTime_13Cycles5采樣時間是13.5周期
ADC_SampleTime_28Cycles5采樣時間是28.5周期
ADC_SampleTime_41Cycles5采樣時間是41.5周期
ADC_SampleTime_55Cycles5采樣時間是55.5周期ADC_SampleTime_71Cycles5采樣時間是71.5周期
ADC_SampleTime_239Cycles5采樣時間是239.5周期
ADC_AnalogWatchdogThresholdsConfig
的使用方法函數(shù)原形voidADC_AnalogWatchdogThresholdsConfig(ADC_TypeDef*ADCx,u16HighThreshold,u16LowThreshold)功能描述配置模擬看門狗的高低閾值
輸入?yún)?shù)1ADCx:其中x可以是1或2.輸入?yún)?shù)2HighThreshold:ADC的模擬看門狗高閾值.為12-bit值.輸入?yún)?shù)3LowThreshold:ADC的模擬看門狗低閾值.為12-bit值.
ADC_AnalogWatchdogCmd
的使用方法函數(shù)原形voidADC_AnalogWatchdogCmd(ADC_TypeDef*ADCx,u32ADC_AnalogWatchdog)功能描述使能或禁止模擬看門狗在一個或所有的規(guī)則或注入通道輸入?yún)?shù)1ADCx:其中x可以是1或2.輸入?yún)?shù)2ADC_AnalogWatchdog:配置ADC的模擬看門狗.ADC_AnalogWatchdog
參數(shù)配置ADC的模擬看門狗.ADC_AnalogWatchdog描述ADC_AnalogWatchdog_SingleRegEnable
模擬看門狗在一個單獨(dú)的規(guī)則通道上ADC_AnalogWatchdog_SingleInjecEnable
模擬看門狗在一個單獨(dú)的注入通道上ADC_AnalogWatchdog_SingleRegorInjecEnable
模擬看門狗在一個單獨(dú)的規(guī)則或注入通道上ADC_AnalogWatchdog_AllRegEnable
模擬看門狗在所有的規(guī)則通道上ADC_AnalogWatchdog_AllInjecEnable
模擬看門狗在所有的注入通道上ADC_AnalogWatchdog_AllRegAllInjecEnable
模擬看門狗在所有的規(guī)則和注入通道上ADC_AnalogWatchdog_None
模擬看門狗不監(jiān)督任何通道
ADC_AnalogWatchdogSingleChannelConfig
的使用方法函數(shù)原形voidADC_AnalogWatchdogSingleChannelConfig(ADC_TypeDef*ADCx,u8ADC_Channel)功能描述配置模擬看門狗要監(jiān)視的ADCx通道輸入?yún)?shù)1ADCx:其中x可以是1或2.輸入?yún)?shù)2ADC_Channel:需配置ADC的模擬看門狗通道.ADC_ITConfig
的使用方法函數(shù)原形voidADC_ITConfig(ADC_TypeDef*ADCx,u16ADC_IT,FunctionalState
NewState)功能描述使能或禁止指定的ADC中斷輸入?yún)?shù)1ADCx:其中x可以是1或2.輸入?yún)?shù)2ADC_IT:指定ADC的中斷源輸入?yún)?shù)3NewState:ENABLE或DISABLEADC_IT描述ADC_IT_EOCEOC中斷允許ADC_IT_AWDAWDOG中斷允許ADC_IT_JEOCJEOC中斷允許ADC_IT參數(shù)取下列值:
ADC_ResetCalibration
函數(shù)的使用方法
ADC_GetResetCalibrationStatus
函數(shù)的使用方法函數(shù)原形FlagStatus
ADC_GetResetCalibrationStatus(ADC_TypeDef*ADCx)功能描述得到ADC復(fù)位校準(zhǔn)寄存器的狀態(tài)輸入?yún)?shù)ADCx:其中x可以是1或2返回參數(shù)SET或RESET函數(shù)原形voidADC_ResetCalibration(ADC_TypeDef*ADCx)功能描述復(fù)位校準(zhǔn)寄存器輸入?yún)?shù)ADCx:其中x可以是1或2
ADC_StartCalibration
函數(shù)的使用方法
ADC_SoftwareStartConvCmd
函數(shù)的使用方法函數(shù)原形voidADC_SoftwareStartConvCmd(ADC_TypeDef*ADCx,FunctionalState
NewState)功能描述使能或禁止ADCx的軟件啟動轉(zhuǎn)換輸入?yún)?shù)ADCx:其中x可以是1或2返回參數(shù)NewState:ENABLE或DISABLE函數(shù)原形voidADC_StartCalibration(ADC_TypeDef*ADCx)功能描述開始校準(zhǔn)過程輸入?yún)?shù)ADCx:其中x可以是1或2
ADC_DMACmd
函數(shù)的使用方法函數(shù)原形ADC_DMACmd(ADC_TypeDef*ADCx,FunctionalState
NewState)功能描述使能或禁止ADCDMA請求輸入?yún)?shù)ADCx:其中x可以是1或2返回參數(shù)NewState:ENABLE或DISABLE函數(shù)原形voidADC_ClearITPendingBit(ADC_TypeDef*ADCx,u16ADC_IT)功能描述清除ADCx
的中斷登記標(biāo)志輸入?yún)?shù)ADCx:其中x可以是1或2返回參數(shù)ADC_IT:需要清除的中斷標(biāo)志
ADC_ClearITPendingBit
函數(shù)的使用方法例:采用DMA通道1將ADC1的通道14的數(shù)據(jù)連續(xù)轉(zhuǎn)換結(jié)果放到變量ADC_ConvertedValue中,采用軟件啟動,采樣周期為55.5個周期。/*定義*/#defineADC1_DR_Address((u32)0x4001244C)/*定義變量和結(jié)構(gòu)*/ADC_InitTypeDef
ADC_InitStructure;DMA_InitTypeDef
DMA_InitStructure;vu16ADC_ConvertedValue;ErrorStatus
HSEStartUpStatus;
/*DMA通道1初始化,因ADC1接在這個通道上*/DMA_DeInit(DMA_Channel1);
DMA_InitStructure.DMA_PeripheralBaseAddr =ADC1_DR_Address;
DMA_InitStructure.DMA_MemoryBaseAddr= (u32)&ADC_ConvertedValue;
DMA_InitStructure.DMA_DIR= DMA_DIR_PeripheralSRC;
DMA_InitStructure.DMA_BufferSize=1;
DMA_InitStructure.DMA_PeripheralInc= DMA_PeripheralInc_Disable;
DMA_InitStructure.DMA_MemoryInc= DMA_MemoryInc_Disable;DMA_InitStructure.DMA_PeripheralDataSize= DMA_PeripheralDataSize_HalfWord;DMA_InitStructure.DMA_MemoryDataSize= DMA_MemoryDataSize_HalfWord;DMA_InitStructure.DMA_Mode= DMA_Mode_Circular;DMA_InitStructure.DMA_Priority= DMA_Priority_High;DMA_InitStructure.DMA_M2M=DMA_M2M_Disable;DMA_Init(DMA_Channel1,&DMA_InitStructure);/*使能DMA通道1*/DMA_Cmd(DMA_Channel1,ENABLE);/*ADC1配置*/ADC_InitStructure.ADC_Mode= ADC_Mode_Independent;ADC_InitStructure.ADC_ScanConvMode=DISABLE;ADC_InitStructure.ADC_ContinuousConvMode= ENABLE;ADC_InitStructure.ADC_ExternalTrigConv= ADC_ExternalTrigConv_None;ADC_InitStructure.ADC_DataAlign= ADC_DataAlign_Right;ADC_InitStructure.ADC_NbrOfChannel=1;ADC_Init(ADC1,&ADC_InitStructure);/*配置ADC1規(guī)則通道14*/ADC_RegularChannelConfig(ADC1,ADC_Channel_14, 1,ADC_SampleTime_55Cycles5);/*使能ADC1的DMA*/ADC_DMACmd(ADC1,ENABLE);
/*使能ADC1*/ADC_Cmd(ADC1,ENABLE);/*使能ADC1的復(fù)位校準(zhǔn)寄存器*/ADC_ResetCalibration(ADC1);/*檢測ADC1的復(fù)位校準(zhǔn)是否結(jié)束*/while(ADC_GetResetCalibrationStatus(ADC1));/*啟動ADC1校準(zhǔn)*/ADC_StartCalibration(ADC1);/*檢測ADC1的校準(zhǔn)是否結(jié)束*/while(ADC_GetCalibrationStatus(ADC1));
/*軟件啟動ADC1轉(zhuǎn)換*/ADC_SoftwareStartConvCmd(ADC1,ENABLE);STM32實驗平臺上電位器的電路圖是:STM32實驗平臺上CPU的管腳圖是:GPIO的配置程序是:voidGPIO_Configuration(void){
GPIO_InitTypeDef
GPIO_InitStructure;/*配置PC.04(ADCChannel14)作為模擬輸入*/
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;
GPIO_Init(GPIOC,&GPIO_InitStructure);}在RCC配置程序里要開啟DMA和AD的時鐘
/*使能DMA時鐘*/
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA, ENABLE);/*使能ADC1和GPIOC時鐘*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 |RCC_APB2Periph_GPIOC,ENABLE);例:采用ADC1的通道14進(jìn)行數(shù)據(jù)連續(xù)轉(zhuǎn)換,用模擬看門狗檢測ADC1的通道14的模擬輸入量(當(dāng)ADC的模擬輸入量在窗口之外,將點亮LED1燈),采用軟件啟動,采樣周期為13.5個周期。/*定義結(jié)構(gòu)*/ADC_InitTypeDef
ADC_InitStructure;
/*配置ADC1*/
ADC_InitStructure.ADC_Mode= ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode=DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode= ENABLE;
ADC_InitStructure.ADC_ExternalTrigConv= ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign= ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel=1;
ADC_Init(ADC1,&ADC_InitStructure);/*配置ADC1規(guī)則通道14*/ADC_RegularChannelConfig(ADC1,ADC_Channel_14, 1,ADC_SampleTime_13Cycles5);/*設(shè)置高低模擬看門狗閾值*/ADC_AnalogWatchdogThresholdsConfig(ADC1, 0x0B00,0x0300);/*配置通道14為單模擬看門狗保證通道*/ADC_AnalogWatchdogSingleChannelConfig(ADC1, ADC_Channel_14);/*在一個規(guī)則通道上使能模擬看門狗*/ADC_AnalogWatchdogCmd(ADC1, ADC_AnalogWatchdog_SingleReg(Enable);/*使能AWD中斷*/ADC_ITConfig(ADC1,ADC_IT_AWD,ENABLE);/*使能ADC1*/ADC_Cmd(ADC1,ENABLE);/*使能ADC1復(fù)位校準(zhǔn)寄存器*/ADC_ResetCalibration(ADC1);/*檢測ADC1的復(fù)位校準(zhǔn)寄存器結(jié)束*/while(ADC_GetResetCalibrationStatus(ADC1));/*啟動ADC1校準(zhǔn)*/ADC_StartCalibration(ADC1);/*檢測ADC1校準(zhǔn)結(jié)束*/while(ADC_GetCalibrationStatus(ADC1));/*用軟件啟動ADC1的數(shù)據(jù)轉(zhuǎn)換*/ADC_SoftwareStartConvCmd(ADC1,ENABLE);/*ADC1的中斷服務(wù)程序*/voidADC_IRQHandler(void){
…/*清ADC1的AWD中斷登記位*/ADC_ClearITPendingBit(ADC1,ADC_IT_AWD);}STM32實驗平臺上電位器的電路圖是:STM32實驗平臺上CPU的管腳圖是:在GPIO配置程序中增加下列代碼:/*配置PC.04(ADCChannel14)作為模擬輸入*/
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;
GPIO_Init(GPIOC,&GPIO_InitStructure);在RCC配置程序里要開啟AD的時鐘/*使能ADC1和GPIOC時鐘*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 |RCC_APB2Periph_GPIOC,ENABLE);在NVIC配置程序中增加下列代碼:
/*配置和使能ADC中斷*/
NVIC_InitStructure.NVIC_IRQChannel= ADC_IRQChannel;
NVIC_InitStructure.
NVIC_IRQChannelPreemptionPriority=0;
NVIC_InitStructure.
NVIC_IRQChannelSubPriority=0;
NVIC_InitStructure.NVIC_IRQChannelCmd= ENABLE;
NVIC_Init(&NVIC_InitStructure);例:采用DMA存儲ADC1的64個采樣點的值,選用ADC1的通道4和14為規(guī)則通道,ADC1的通道10和11為注入通道。規(guī)則通道采用間斷模式,間斷數(shù)為1,轉(zhuǎn)換為外部觸發(fā)EXTI-11,每次觸發(fā)只轉(zhuǎn)換一個通道;注入通道采用外部出發(fā)EXTI-15。轉(zhuǎn)化時間均為28.5時鐘周期,數(shù)據(jù)采用右對齊。/*定義*/#defineADC1_DR_Address((u32)0x4001244C)vu32Index=0;/*定義變量與結(jié)構(gòu)*/ADC_InitTypeDef
ADC_InitStructure;DMA_InitTypeDef
DMA_InitStructure;vu16ADC_RegularConvertedValueTab[64],ADC_InjectedConvertedValueTab[32];ErrorStatus
HSEStartUpStatus;
/*配置DMA通道1*/DMA_DeInit(DMA_Channel1);
DMA_InitStructure.DMA_PeripheralBaseAddr= ADC1_DR_Address;
DMA_InitStructure.DMA_MemoryBaseAddr= (u32)ADC_RegularConvertedValueTab;
DMA_InitStructure.DMA_DIR= DMA_DIR_PeripheralSRC;
DMA_InitStructure.DMA_BufferSize=64;
DMA_InitStructure.DMA_PeripheralInc= DMA_PeripheralInc_Disable;
DMA_InitStructure.DMA_MemoryInc= DMA_MemoryInc_Enable;
DMA_InitStructure.DMA_PeripheralDataSize= DMA_PeripheralDataSize_HalfWord;
DMA_InitStructure.DMA_MemoryDataSize= DMA_MemoryDataSize_HalfWord;
DMA_InitStructure.DMA_Mode= DMA_Mode_Circular;
DMA_InitStructure.DMA_Priority= DMA_Priority_High;
DMA_InitStructure.DMA_M2M= DMA_M2M_Disable;DMA_Init(DMA_Channel1,&DMA_InitStructure);
/*使能DMA通道1*/DMA_Cmd(DMA_Channel1,ENABLE);
/*配置ADC1*/
ADC_InitStructure.ADC_Mode= ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode=ENABLE;
ADC_InitStructure.ADC_ContinuousConvMode= DISABLE;
ADC_InitStructure.ADC_ExternalTrigConv= ADC_ExternalTr
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 29292-2024鞋類鞋類和鞋類部件中重點化學(xué)物質(zhì)管控指南
- Pemigatinib-d6-INCB054828-d-sub-6-sub-生命科學(xué)試劑-MCE-9553
- L-Pyroglutamic-acid-7-amido-4-methylcoumarin-生命科學(xué)試劑-MCE-3725
- Boc-Ala-Me-H117-生命科學(xué)試劑-MCE-9672
- 4-Fluoro-α-pyrrolidinopropiophenone-hydrochloride-生命科學(xué)試劑-MCE-5894
- 二零二五年度租賃期滿續(xù)租養(yǎng)老機(jī)構(gòu)居住協(xié)議合同
- 2025年度商鋪租賃協(xié)議終止及租賃場地使用權(quán)回購協(xié)議
- 二零二五年度茶餐廳股份合作經(jīng)營協(xié)議
- 2025年度智慧能源管理系統(tǒng)股東合作協(xié)議書
- 二零二五年度校園食堂檔口租賃合同與食品安全管理協(xié)議
- 時政述評培訓(xùn)課件
- 2022屆高三體育特長生家長會
- 不對外供貨協(xié)議
- 2024屆高考作文主題訓(xùn)練:時評類(含解析)
- 260噸汽車吊地基承載力驗算
- 公司新員工三級安全教育培訓(xùn)(車間級)
- 北師大版高三數(shù)學(xué)選修4-6初等數(shù)論初步全冊課件【完整版】
- 老子道德經(jīng)全文講解學(xué)習(xí)課件
- 企業(yè)更名通知函
- 經(jīng)大量臨床實驗證明,空氣負(fù)離子能有效治療心腦血管疾病
- GB/T 12618-1990開口型扁圓頭抽芯鉚釘
評論
0/150
提交評論