STM32-独立模式单通道ADC采集
目錄
1. ADC介紹
2. 硬件設計
?3. 軟件設計
3.1. CubeMX設置
?3.2. KEIL開發
4. 實驗現象
1. ADC介紹
12位ADC是一種逐次逼近型模擬數字轉換器。它有多達18個通道,可測量16個外部和2個內部信號源。各通道的A/D轉換可以單次、連續、掃描或間斷模式執行。ADC的結果可以左對齊或右對齊方式存儲在16位數據寄存器中。 模擬看門狗特性允許應用程序檢測輸入電壓是否超出用戶定義的高/低閥值。?
有16個多路通道。可以把轉換組織成兩組:規則組和注入組。在任意多個通道上以任意順序進行的一系列轉換構成成組轉換。例如,可以如下順序完成轉換:通道3、通道8、通道2、通道2、通道0、通道2、通道2、通道15。 ● 規則組由多達16個轉換組成。規則通道和它們的轉換順序在ADC_SQRx寄存器中選擇。規則組中轉換的總數應寫入ADC_SQR1寄存器的L[3:0]位中。 ● 注入組由多達4個轉換組成。注入通道和它們的轉換順序在ADC_JSQR寄存器中選擇。注入組里的轉換總數目應寫入ADC_JSQR寄存器的L[1:0]位中。 如果ADC_SQRx或ADC_JSQR寄存器在轉換期間被更改,當前的轉換被清除,一個新的啟動脈沖將發送到ADC以轉換新選擇的組。 溫度傳感器/ VREFINT內部通道溫度傳感器和通道ADC1_IN16相連接,內部參照電壓VREFINT和ADC1_IN17相連接。可以按注入或規則通道對這兩個內部通道進行轉換。 注意: 溫度傳感器和VREFINT只能出現在主ADC1中。
ADC使用若干個ADC_CLK周期對輸入電壓采樣,采樣周期數目可以通過ADC_SMPR1和ADC_SMPR2寄存器中的SMP[2:0]位更改。每個通道可以分別用不同的時間采樣。 總轉換時間如下計算: TCONV = 采樣時間+ 12.5個周期
例如: 當ADCCLK=14MHz,采樣時間為1.5周期 TCONV = 1.5 + 12.5 = 14周期 = 1μs
單次轉換模式下,ADC只執行一次轉換。該模式既可通過設置ADC_CR2寄存器的ADON位(只適用于規則通道)啟動也可通過外部觸發啟動(適用于規則通道或注入通道),這時CONT位為0。?
在連續轉換模式中,當前面ADC轉換一結束馬上就啟動另一次轉換。此模式可通過外部觸發啟動或通過設置ADC_CR2寄存器上的ADON位啟動,此時CONT位是1。
2. 硬件設計
ADC1的通道11連接滑動變阻:
?
?3. 軟件設計
3.1. CubeMX設置
選擇ADC通道IN11,獨立模式,連續轉換,采樣周期41.5,開啟NVIC:
8分頻,即9MHz的時鐘,TCONV = 41.5 + 12.5 = 54周期*(1/9)?= 6μs,點擊生成代碼:
?3.2. KEIL開發
?ADC中斷回調函數接收轉換后的值:
//adc.c /* USER CODE BEGIN 0 */ uint32_t convValve; /* USER CODE END 0 *//* USER CODE BEGIN 1 */ /*** @brief Conversion complete callback in non blocking mode * @param hadc: ADC handle* @retval None*/ void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) {convValve=HAL_ADC_GetValue(hadc);} /* USER CODE END 1 */main函數接收并打印電壓采樣值:
//main.c/* USER CODE BEGIN 2 */printf("ADC轉換實驗:\n");HAL_ADCEx_Calibration_Start(&hadc1);HAL_ADC_Start_IT(&hadc1);/* USER CODE END 2 *//* USER CODE BEGIN WHILE */while (1){static float convValveVoltage;convValveVoltage=(float)(convValve*(3.3/4096));printf("ADC值為:%d\n",convValve);printf("ADC轉換為電壓后的值為:%f\n\n",convValveVoltage);HAL_Delay(2000);/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */4. 實驗現象
調動電壓值,可以看到電壓值在0~3.3V之間變化:
?
總結
以上是生活随笔為你收集整理的STM32-独立模式单通道ADC采集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS中使用storyboard进行布局
- 下一篇: STM32 CUBEIDE MacOS首