新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > STM32筆記(三)ADC、DMA、USART的綜合練習

STM32筆記(三)ADC、DMA、USART的綜合練習

作者: 時間:2016-11-28 來源:網絡 收藏
  我們在這里設置ADC為連續(xù)轉換模式,常規(guī)轉換序列中有兩路轉換通道,分別是ADC_CH10(PC0)和ADC_CH16(片內溫度傳感器)。因為使用了自動多通道轉換,數據的取出工作最適合使用DMA方式取出,so,我們在內存里開辟了一個u16 AD_Value[2]數組,并設置了相應的DMA模塊,使ADC在每個通道轉換結束后啟動DMA傳輸,其緩沖區(qū)數據量為2個HalfWord,使兩路通道的轉換結果自動的分別落到AD_Value[0]和AD_Value[1]中。
  然后,在主函數里,就無需手動啟動AD轉換,等待轉換結束,再取結果了。我們可以在主函數里隨時取AD_Value中的數值,那里永遠都是最新的AD轉換結果。
  如果我們定義一個更大的AD_Value數組,并調整DMA的傳輸數據量(BufferSize)可以實現AD結果的循環(huán)隊列存儲,從而可以進行各種數字濾波算法。
  接著,取到轉換結果后,根據V=(AD_Value/4096)*Vref+的公式可以算出相應通道的電壓值,也可以根據T(℃) =(1.43 - Vad)/34*10^(-6) + 25的算法,得到片內溫度傳感器的測量溫度值了。
  通過重新定義putchar函數,及包含"stdio.h"頭文件,我們可以方便的使用標準C的庫函數printf(),實現串口通信
  相關的官方例程,可以參考FWLib V2.0的ADCADC1_DMA和USARTprintf兩個目錄下的代碼。

本代碼例子是基于萬利199的開發(fā)板EK-STM32F實現,CPU=STM32F103VBT6


關鍵詞: STM32ADCDMAUSAR

評論


技術專區(qū)

關閉