STM32----重温ADC测量电压值
生活随笔
收集整理的這篇文章主要介紹了
STM32----重温ADC测量电压值
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ADC測量電壓值
實現目標使用兩個按鍵控制串口的輸出和ADC的轉換。使用DMA將ADC數據存放在內存中,然后計算對應的電壓值。然后由串口1發送至上位機。
主要講一下對于按鍵和串口的配置與之前都一樣只是在按鍵的中斷函數中添加了控制的內容,控制ADC的轉換開始和關閉,控制DMA的開啟和關閉,通過標志flag來控制串口打印的內容。
ADC使用DMA的DMA配置
DMA的配置與之前大同小異,首先搞清楚ADC1使用的DMA1的哪一個通道,查閱資料通道1。接下來就是開啟時鐘,初始化DMADMA_DeInit(DMA1_Channel1);配置外設的地址(u32)&ADC1->DR
對于傳輸的大小,注意是半字,不是一個字節。具體的配置如下:
測量電壓ADC的配置
ADC的配置中涉及到ADC_InitTypeDef的結構體,結構的每一個成員就是ADC要配置的內容。
- ADC_ContinuousConvMode:ADC是否連續轉換
- ADC_DataAlign:數據的對齊方式左對齊或者右對齊
- ADC_ExternalTrigConv:adc轉換是否外部觸發
- ADC_Mode:adc的模式一般為獨立模式
- ADC_NbrOfChannel:adc轉換的通道數目
- ADC_ScanConvMode:adc是否開啟掃描模式,當多通道掃描時開啟
配置完成以后,需要對adc的時鐘進行相應的配置。adc的時鐘頻率越高轉換速度越快,但adc時鐘有上限值,不能超過14MHz。adc的時鐘圖如下:
adc轉換的時間不僅與時鐘有關,還與采樣周期有關。每個不同的adc通過都可以設置不同的采樣周期。利用庫函數ADC_RegularChannelConfig()來進行配置。函數中四個參數例:
第三個參數表示掃描的順序。例如,通過1,2,3的參數分別為3,2,1的話,掃描順序為通道3、通道2、通道1.最后一個參數配置本通道的采樣周期。adc采樣時間計算公式為:T=采樣周期+12.5周期。12.5個周期為固定數值。通道的轉換時間t=T*1/時鐘。
最后就是ADC的自校準:
ADC_ResetCalibration(ADC1);while(ADC_GetResetCalibrationStatus(ADC1))ADC_StartCalibration(ADC1);while(ADC_GetCalibrationStatus(ADC1));因為ADC模式設置為軟件觸發方式,所以可以在任何地方通過函數ADC_SoftwareStartConvCmd(ADC1,ENABLE);來觸發adc開始轉換。
總結
以上是生活随笔為你收集整理的STM32----重温ADC测量电压值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab实现评价图像增强效果的参数—
- 下一篇: 富文本_轻量级 web 富文本编辑器 —