




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
*嵌入式系統原理與應用1課程回顧:GPIO給相應GPIO端口時鐘信號RCC_APB2PeriphClockCmd(RCC_APB2_Periph_GPIOx,ENABLE);初始化相應端口GPIO_DeInit(GPIOA);GPIO_Init(GPIOA,&GPIOInitStructure);*嵌入式系統原理與應用2課程回顧:GPIO設置相應IO端口GPIO_SetBits(GPIOA,GPIO_Pin_3);GPIO_ResetBits(GPIOA,GPIO_Pin_3);GPIO_WriteBit(GPIOA,GPIO_Pin_3,Bit_SET);GPIO_Write(GPIOC,0x3A4B)*嵌入式系統原理與應用3課程回顧:GPIO讀取輸出IO端口狀態GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_2);GPIO_ReadOutputData(GPIOB);讀取輸入IO端口狀態GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_2);GPIO_ReadInputData(GPIOB);*嵌入式系統原理與應用4課程回顧:中斷和事件什么是中斷?搶占式優先級與響應優先級的概念外部中斷的使用方法使能時鐘初始化GPIO(輸入、外部中斷管腳)使能EXTI(觸發模式)使能NVIC對應的中斷(中斷優先級)*嵌入式系統原理與應用5課程回顧:中斷和事件NVIC_PriorityGroupConfigNVIC_InitGPIO_EXTILineConfigEXTI_DeInitEXTI_InitEXTI_GetFlagStatusEXTI_ClearFlag*嵌入式系統原理與應用6課程回顧:中斷和事件EXTI_GetITStatusEXTI_ClearITPendingBit第九章ADC*嵌入式系統原理與應用8內容提綱ADC概述STM32ADC設置ADC轉換模式總結*嵌入式系統原理與應用9ADC概述ADC,Analog-to-DigitalConverter的縮寫,指模/數轉換器或者模擬/數字轉換器。真實世界的模擬信號,例如溫度、壓力、聲音或者圖像等,需要轉換成更容易存儲、處理或發射的數字形式,ADC可以實現這個功能。ADC是計算機感知世界的窗口*嵌入式系統原理與應用10STM32的ADC18通道2X12位逐次比較型,最大速度1MSPS支持單次和連續轉換模式,雙重模式,自動掃描模式,規則和注入轉換模式可由外部中斷、定時器或軟件觸發轉換采樣時間可按通道分別編程轉換結束、注入轉換結束和發生模擬看門狗事件時會產生中斷*嵌入式系統原理與應用11STM32ADC功能框圖*嵌入式系統原理與應用12內容提綱ADC概述STM32ADC基本設置ADC時鐘ADC開關通道選擇ADC校準數據對齊溫度傳感器和內部參考電壓ADC轉換模式編程實例總結*嵌入式系統原理與應用13ADC時鐘STM32ADC最大工作時鐘為14MHz,設置時應使時鐘接近而不超過14MHz。ADC的時鐘由APB2時鐘經RCC提供的ADC預分頻器后產生,我們的系統APB2頻率為72MHz,ADC預分頻值(2/4/6/8)取6時可產生最接近最大頻率的12MHz時鐘。ADC預分頻器由RCC_ADCCLKConfig函數設置*嵌入式系統原理與應用14ADC時鐘設置函數函數原型voidRCC_ADCCLKConfig(u32RCC_ADCCLKSource)功能描述設置ADC時鐘(ADCCLK)輸入參數RCC_ADCCLKSource:RCC_PCLK2_Divx,x=2,4,6,8輸出參數無返回值無先決條件無應用示例RCC_ADCCLKConfig(RCC_PCLK2_Div6);*嵌入式系統原理與應用15ADC開關調用ADC_Cmd(ADCx,ENABLE)函數可給ADC上電,它將ADC從斷電狀態下喚醒。調用ADC_Cmd(ADCx,DISABLE)函數可將ADC斷電,斷電后ADC幾乎不耗電*嵌入式系統原理與應用16ADC開關控制函數函數原型voidADC_Cmd(ADC_TypeDef*ADCx,FunctionStateNewState)功能描述使能或失能ADC輸入參數ADCx:x=1,2,用于選擇ADC1或ADC2NewState:ENABLE或DISABLE輸出參數無返回值無先決條件無應用示例ADC_Cmd(ADC1,ENABLE);*嵌入式系統原理與應用17ADC通道選擇STM32的ADC有16個多路通道和額外的溫度傳感器(通道16)和參考電壓通道(通道17),額外通道只能出現在主ADC1中每個通道的采樣時間都可以獨立設置通道選擇由ADC_RegularChannelConfig函數和ADC_InjectedChannelConfig函數實現*嵌入式系統原理與應用18ADC規則組通道配置函數函數原型voidADC_RegularChannelConfig(ADC_TypeDef*ADCx,u8ADC_Channel,u8Rank,u8ADC_SampleTime)功能描述設置ADC規則組通道的轉化順序和采樣時間輸入參數ADCx:x=1,2,用于選擇ADC1或ADC2ADC_Channel:ADC_Channel_x,x=0~17Rank:規則組采樣順序,1~16ADC_SampleTime:ADC_SampleTime_xCycles5,x=1,7,13,28,41,55,71,239應用示例ADC_RegularChannelConfig(ADC1,ADC_Channel_1,1,ADC_SampleTime_239Cycles5)*嵌入式系統原理與應用19ADC校準STM32的ADC有一個內置自校準模式,校準可大幅減小因內部電容器組變化而造成的精度誤差,在校準期間,每個電容器上都會計算出一個誤差修正碼,這個碼用于消除在隨后的轉換中每個電容器上產生的誤差。建議每次上電后執行一次校準*嵌入式系統原理與應用20ADC校準:ADC_ResetCalibration函數原型voidADC_ResetCalibration(ADC_TypeDef*ADCx)功能描述重置指定的ADC校準寄存器輸入參數ADCx:x=1,2,用于選擇ADC1或ADC2輸出參數無返回值無先決條件無應用示例ADC_ResetCalibration(ADC1);*嵌入式系統原理與應用21ADC校準:ADC_GetResetCalibrationStatus函數原型FlagStatusADC_GetResetCalibrationStatus(ADC_TypeDef*ADCx)功能描述獲取ADC重置校準寄存器的狀態輸入參數ADCx:x=1,2,用于選擇ADC1或ADC2輸出參數無返回值ADC重置校準寄存器的新狀態,SET(正在重置),RESET(重置完畢)先決條件無應用示例Status=ADC_GetResetCalibrationStatus(ADC1);*嵌入式系統原理與應用22ADC校準:ADC_StartCalibration函數原型voidADC_StartCalibration(ADC_TypeDef*ADCx)功能描述開始指定ADC的校準輸入參數ADCx:x=1,2,用于選擇ADC1或ADC2輸出參數無返回值無先決條件無應用示例ADC_StartCalibration(ADC1);*嵌入式系統原理與應用23ADC校準:ADC_GetCalibrationStatus函數原型FlagStatusADC_GetCalibrationStatus(ADC_TypeDef*ADCx)功能描述獲取指定ADC的校準狀態輸入參數ADCx:x=1,2,用于選擇ADC1或ADC2輸出參數無返回值ADC校準的新狀態,SET(正在校準),RESET(校準完畢)先決條件無應用示例Status=ADC_GetCalibrationStatus(ADC1);*嵌入式系統原理與應用24ADC校準過程ADC_ResetCalibration(ADC1);while(ADC_GetResetCalibrationStatus(ADC1));ADC_StartCalibration(ADC1);while(ADC_GetCalibrationStatus(ADC1));*嵌入式系統原理與應用25ADC數據對齊ADC的轉換結果可以選擇左對齊或右對齊,其定義如下所示,SEXT為擴展符號值,對齊模式在ADC_Init函數中指定*嵌入式系統原理與應用26溫度傳感器/內部電壓參考溫度傳感器和通道16連接,內部電壓參考和通道17連接,在使用前需調用函數ADC_TempSensorVerfintCmd函數開啟。溫度(℃)=(1.43-Vsense)/0.0043+25內部參考電壓固定為1.2V,可用來測供電電壓。1.2=VCC*AD/4096,VCC=1.2*4096/AD這兩通道只能被ADC1采集*嵌入式系統原理與應用27溫度傳感器/內部電壓參考使能函數函數原型voidADC_TempSensorVrefintCmd(FunctionalStateNewState)功能描述打開或關閉溫度傳感器/內部電壓參考輸入參數NewState:ENABLE/DISABLE輸出參數無返回值無先決條件無應用示例ADC_TempSensorVrefintCmd(ENABLE);*嵌入式系統原理與應用28ADC復位:ADC_DeInit函數原型voidADC_DeInit(ADC_TypeDef*ADCx)功能描述將ADCx的全部寄存器重設為默認值輸入參數ADCx:x=1,2,用于選擇ADC1或ADC2輸出參數無返回值無先決條件無應用示例ADC_DeInit(ADC1);*嵌入式系統原理與應用29ADC初始化:ADC_Init函數原型voidADC_Init(ADC_TypeDef*ADCx,ADC_InitTypeDef*ADC_InitStruct)功能描述根據ADC_InitStruct中指定的參數初始化外設ADCx的寄存器輸入參數ADCx:x=1,2,用于選擇ADC1或ADC2ADC_InitStruct:指向ADC_InitTypeDef的指針,包含了指定外設ADC的配置信息返回值無先決條件無應用示例ADC_Init(ADC1,&ADC_InitStruct);*嵌入式系統原理與應用30ADC_InitStruct具體可參見庫函數參考手冊*嵌入式系統原理與應用31ADC配置過程設置時鐘:RCC_APB2PeriphClockCmd和RCC_ADCCLKConfig函數;設置ADC工作模式:ADC_Init,ADC_RegularChannelConfig等函數打開ADC:ADC_Cmd函數校準ADC:ADC_ResetCalibration和ADC_StartCalibration函數測量ADC參考電壓*嵌入式系統原理與應用32內容提綱ADC概述STM32ADC基本設置ADC工作模式單次轉換模式連續轉換模式模擬看門狗掃描模式雙ADC模式總結*嵌入式系統原理與應用33單次轉換模式單次轉換模式下,ADC只執行一次轉換,轉換可由ADC_SoftwareStartConvCmd函數或外部觸發啟動。轉換完成,EOC標志被置位,如果設置了EOCIE,則產生中斷,轉換結果由ADC_GetConversionValue
函數讀取在讀取轉換結果后,EOC自動清除*嵌入式系統原理與應用34ADC_SoftwareStartConvCmd函數原型voidADC_SoftwareStartConvCmd(ADC_TypeDef*ADCx,FunctionalStateNewState)功能描述啟動ADC轉換輸入參數ADCx:x=1,2,用于選擇ADC1或ADC2NewState:ENABLE/DISABLE返回值無先決條件無應用示例ADC_SoftwareStartConvCmd(ADC1,ENABLE)*嵌入式系統原理與應用35ADC_GetFlagStatus函數原型FlagStatusADC_GetFlagStatus(ADC_TypeDef*ADCx,u8ADC_FLAG)功能描述檢查ADC標志位是否置1輸入參數ADCx:x=1,2,用于選擇ADC1或ADC2ADC_FLAG:指點需檢查的標志位,ADC_FLAG_EOC返回值SET/RESET應用示例While(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC)==RESET);*嵌入式系統原理與應用36ADC_ClearFlag函數原型voidADC_ClearFlag(ADC_TypeDef*ADCx,u8ADC_FLAG)功能描述清除ADC標志位輸入參數ADCx:x=1,2,用于選擇ADC1或ADC2ADC_FLAG:指點需清除的標志位,ADC_FLAG_EOC返回值無應用示例ADC_ClearFlag(ADC1,ADC_FLAG_EOC);*嵌入式系統原理與應用37ADC_GetITStatus函數原型FlagStatusADC_GetITStatus(ADC_TypeDef*ADCx,u8ADC_IT)功能描述檢查ADC中斷是否發生輸入參數ADCx:x=1,2,用于選擇ADC1或ADC2ADC_IT:指點需檢查的中斷標志位,ADC_IT_EOC返回值SET/RESET應用示例ADC_GetITStatus(ADC1,ADC_FLAG_EOC);*嵌入式系統原理與應用38ADC_ClearITPendingBit函數原型voidADC_ClearITPendingBit(ADC_TypeDef*ADCx,u8ADC_IT)功能描述清除ADC標志位輸入參數ADCx:x=1,2,用于選擇ADC1或ADC2ADC_IT:指點需清除的中斷標志位,ADC_IT_EOC返回值無應用示例ADC_ClearITPendingBit(ADC1,ADC_IT_EOC);*嵌入式系統原理與應用39ADC_ITConfig函數原型voidADC_ITConfig(ADC_TypeDef*ADCx,u8ADC_IT,FunctionalStateNewState)功能描述使能或失能ADC中斷輸入參數ADCx:x=1,2,用于選擇ADC1或ADC2ADC_IT:指點需清除的中斷標志位,ADC_IT_EOCNewState:ENABLE/DISABLE返回值無應用示例ADC_ITConfig(ADC1,ADC_IT_EOC,ENABLE);*嵌入式系統原理與應用40ADC_GetConversionValue函數原型u16ADC_GetConversionValue(ADC_TypeDef*ADCx)功能描述讀取轉換結果輸入參數ADCx:x=1,2,用于選擇ADC1或ADC2返回值轉換結果先決條件無應用示例Result=ADC_GetConversionValue(ADC1);*嵌入式系統原理與應用41ADC單次轉換實例讀取開發板上CPU溫度和變阻器上的電壓,變阻器連接到PC0,對應的ADC通道為通道10,CPU溫度對應通道16*嵌入式系統原理與應用42ADC單次轉換(輪詢):基本思路初始化:設置并開啟ADC時鐘,設置輸入管腳,設置ADC工作模式為單次轉換,開啟溫度傳感器和內部參考電壓,使能ADC,校準ADC,利用內部參考電壓計算ADC參考電壓;轉換:設置轉換通道,啟動AD轉換,等待AD轉換完成,讀取轉換結果,清除轉換完成標志*嵌入式系統原理與應用43ADC單次轉換(中斷):基本思路初始化:設置并開啟ADC時鐘,設置輸入管腳,設置ADC工作模式為單次轉換,開啟溫度傳感器和內部參考電壓,使能ADC,校準ADC,利用內部參考電壓計算ADC參考電壓;設置NVIC對應的ADC中斷。開始轉換:設置轉換通道,使能ADCEOC中斷,啟動AD轉換中斷服務程序:讀取轉換結果,設置下一轉換通道,如果幾個通道轉換都已完成,關ADC中斷,否則啟動下一通道轉換*嵌入式系統原理與應用44連續轉換模式連續轉換模式下,CONT位設為1,前面ADC轉換一結束馬上就啟動另一次轉換;每次轉換完成,EOC標志被置位,如果設置了EOCIE,則產生中斷,轉換結果由ADC_GetConversionValue
函數讀取在讀取轉換結果后,EOC自動清除*嵌入式系統原理與應用45掃描模式掃描模式可用來掃描一組模擬通道,可以通過將ADC_InitTypeDef結構體中的ADC_ScanConvMode使能實現。掃描的順序由ADC_RegularChannelConfig函數指定,掃描模式啟動后,ADC在每個組的每個通道上執行單次轉換,每次轉換結束,同一組的下一個通道被自動轉換。掃描模式需與DMA協同以實現自動將轉換結果傳輸到SRAM中。*嵌入式系統原理與應用46雙ADC模式STM32的兩個ADC可以協同工作,共有9種模式:同步規則模式同步注入模式快速交叉模式慢速交叉模式交替觸發模式獨立模式同步注入+同步規則模式同步規則+交替觸發模式同步注入+交叉模式*嵌入式系統原理與應用47雙ADC模式在同步規則模式下,ADC初始化時ADC_Mode應設為ADC_Mode_RegSimult,并使能ADC2的外部觸發轉換不能兩個ADC同時轉換一個通道轉換結束時產生一個32位DMA傳輸請求和EOC標志,為了讀取ADC2的結果,必須使能ADC的DMA,ADC1轉換結果保存在ADC1_DR的低16位,ADC2轉換結果保存在高16位*嵌入式系統原理與應用48雙ADC的同步規則模式實例在同步規則模式下,讀取并顯示芯片溫度和變阻器電壓*嵌入式系統原理與應用49ADC_ExternalTrigConvCmd函數原型voidADC_ExternalTrigConvCmd(ADC_TypeDef*ADCx,FunctionalStateNewState)功能描述使能/失能ADC外部觸發轉換輸入參數ADCx:x=1,2,用于選擇ADC1或ADC2NewState:ENABLE/DISABLE返回值無先決條件無應用示例ADC_ExternalTrigConvCmd(ADC2,ENABLE);*嵌入式系統原理與應用50ADC_DMACmd函數原型voidADC_DMACmd(ADC_TypeDef*ADCx,FunctionalStateNewState)功能描述使能ADC的DMA傳輸輸入參數ADCx:x=1,2,用于選擇ADC1或ADC2NewState:ENABLE/DISABLE返回值無先決條件無應用示例ADC_DMACmd(ADC1,ENABLE);*嵌入式系統原理與應用51ADC_GetDualModeConversionValue函數原型u32ADC_GetDualModeConversionValue(void)功能描述讀取雙ADC模式轉換結果輸入參數無返回值32位無符號數,高16位為ADC2轉換結果,低16位為ADC1轉換結果先決條件無應用示例result=ADC_GetDualModeConversionValue();*嵌入式系統原理與應用52作業根據應用需求,需要對ADC通道0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年現代教育技術與實踐考試試題及答案
- 2025年行為經濟學基礎知識考試題及答案
- 2025年數字文化與創意產業課程考試試題及答案
- 2025年通信工程師職業資格考試題及答案
- 2025年動畫制作與設計職業資格考試題及答案
- 2025年計算機信息管理專業考試題及答案
- 2025年旅游管理專業試卷及答案
- 2025年企業文化展示系統合作協議書
- 阿里云咨詢合同范本
- 公路文明施工合同協議書
- 違約就業協議書
- 《人工智能通識導論(慕課版)》全套教學課件
- 烘培創業合伙協議書
- 北京2025年國家大劇院招聘24名專業技術人員筆試歷年參考題庫附帶答案詳解
- 2024建安杯信息通信建設行業安全競賽題庫及答案【三份】
- 2025年信息系統管理知識考試試題及答案
- 中介股東合同范例
- 馬法理學試題及答案
- 2025年全國保密教育線上培訓考試試題庫附完整答案(奪冠系列)含答案詳解
- 合伙人協議書模板
- 2025年下半年揚州現代農業生態環境投資發展集團公開招聘易考易錯模擬試題(共500題)試卷后附參考答案
評論
0/150
提交評論