STM32三個ADC同步規則采樣


同步采樣一般應用於交流信號中,是指多個ADC的采集時刻完全同步。在電力測量領域,經常會遇到需要同步采樣的情況,比如同步采樣電壓電流信號,計算其相位差。阻抗分析時,也需要對輸入輸出信號進行同步采集,分析其相位差和幅度,計算阻抗。

多通道的同步ADC一般價格比較高,STM32內部的ADC可以靈活配置,實現同步采樣。部分型號的STM32有2個ADC,也有部分型號有3個ADC,今天將以STM32F407為例介紹3個ADC同步采樣的實現方法。
————————————————
版權聲明:本文為CSDN博主「天外飛仙CUG」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/zhang062061/article/details/113735874

 

圖片

 

 

圖片

1.Mode選擇為三重同步規則模式。

2.使能DMA連續請求。

3.外部觸發源選擇TIM2觸發事件。

配置完成后,打開ADC2和ADC3的配置,可以看到,Mode已經自動配置為三重同步規則模式,且外部觸發源也已經隱藏無法選擇,因為三重同步規則模式下,三個ADC必須使用同一個外部觸發源。同時ADC2和ADC3的DMA也不需要配置,使用同一個DMA。ADC2配置如下:
ADC配置完成后,打開TIM2定時器,用於觸發ADC采樣。TIM2時鍾選擇內部時鍾(84MHz),選擇觸發事件為Update Event,用於觸發ADC。配置其分頻系數和計數周期如下,則ADC的采樣率為84MHz÷(83+1) ÷(199+1)=5000Hz。

 

圖片

 

uint8_t DMA_Flag = 0;

void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{
       DMA_Flag = 1;
}
 HAL_ADC_Start(&hadc1);
  HAL_ADC_Start(&hadc2);
  HAL_ADC_Start(&hadc3);//啟動ADC
  HAL_ADCEx_MultiModeStart_DMA(&hadc1,(uint32_t*)adcbuf1,300);//啟動同步規則模式及DMA,3個ADC,每次采樣100個點*3
  HAL_TIM_Base_Start(&htim2);//啟動TIM2,用於觸發ADC采樣
  /* USER CODE END 2 */
 
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
      if(DMA_Flag == 1)//AD轉換完成標准
      {
           DMA_Flag = 0;
           HAL_TIM_Base_Stop(&htim2);
           HAL_ADCEx_MultiModeStop_DMA(&hadc1);
           HAL_ADC_Stop(&hadc1);
           HAL_ADC_Stop(&hadc2);
           HAL_ADC_Stop(&hadc3);//停止采樣
           for(uint8_t i=0;i<100;i++)< span="">
           {
                  sprintf(str,"$,%d,%d,%d",adcbuf1[i][0],adcbuf1[i][1],adcbuf1[i][2]);
                  HAL_UART_Transmit(&huart1,(uint8_t*)str,strlen(str),100);//串口發送到上位機
           }
           HAL_ADC_Start(&hadc1);
           HAL_ADC_Start(&hadc2);
           HAL_ADC_Start(&hadc3);
           HAL_ADCEx_MultiModeStart_DMA(&hadc1,(uint32_t*)adcbuf1,300);
           HAL_TIM_Base_Start(&htim2);//重新啟動采樣
        }
    /* USER CODE END WHILE */
    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM