MM32F031 ADC 學習筆記

datasheet中描述最高12 位可編程分辨率的SAR ADC,多達10 路外部輸入通道。 這句話怎麼理解呢?也就是說有10個IO可以設置爲ADC口線了。內部兩路是屬於內部通道了。

1.  首先ADC轉換要明確目標,我要轉換誰?

          這個由通道轉換選擇寄存器(ADC_ADCHS)來選擇要轉換的通道,將相關的bit置位就使能,將相關的位復位就失能。

     例如將bit0  和bit1 置位 就等於告訴ADC模塊,喂 ADC 聽好了哦 我接下來要轉換通道0 和通道1 。 當然了也可以設置每個通       道的轉換週期。

2.  怎麼轉換啊?

          轉換目標明確了,該怎麼轉換? 有3種模式:

     1. 單次轉換模式 

             用戶設置ADST=1 開始轉換“序號最小”的通道, 你可以在第1步使能 轉換通道0 和通道1。但是抱歉只對通道0做轉換

      ,通道1 我可不轉換。轉換完成後 ADST=0 ,需要用戶設置 ADST=1來啓動第2次轉換!你不啓動我就不轉換了。

     2.  單週期掃描模式

            用戶設置ADST=1  開始轉換ADC_ADCHS寄存器中使能的通道(第一步我們設置了通道0 和通道1),簡單的說就是將            通道0和1都做轉換,轉換完成後會自動設置ADST=0,並將結果保存到對應通道的數據保存寄存器 ADDR0 和 ADDR1。              DMA搬運時就是從ADDR0和ADDR1中取出數據搬走!

        總結單週期掃描模式:  就是轉換你選擇的N個通道轉換,轉換完N個通道後進入ADC空閒狀態。需要需要用戶設置                      ADST=1 來啓動第2次轉換!你不啓動我就不轉換了。

      3. 連續掃描模式

              連續掃描模式,也是轉換你所選擇的N個通道。和單週期掃描唯一不同的是,轉換完N個通道後不會復位ADST

         需要用戶手動清除ADST才能停止! 換句話說就是隻要用戶沒有清除ADST,那麼ADC就會一直  轉換通道0 --> 轉換

         通道1,繼續 轉換通道0 --> 轉換 通道1 。。。  周而復始的掃描轉換選擇的通道。

      4. 切換選擇通道

               我們經常在運行中需要重新選擇轉換通道, 只要修改ADC_ADCHS中的值即可。 值得注意的是修改選擇通道需要在                ADC空閒狀態下才能修改,也就是ADST=0時才能修改。 除了連續掃描模式其他兩種模式都會在轉換完成後,硬件自動設            置ADST=0。

 最後來個總結: 3種模式可以混搭,例如只在ADC_ADCHS中只使能一個通道(例如通道5)。 當採用連續掃描模式時,             ADC將不停的(對通道5)進行轉換。加入DMA和TIMER後,就可以實現定時對某路信號採集N次後再處理。典型應用是

 對某路信號採集2n個點做FFT處理,例如對信號採集512個點後做FFT。ADST=1 的動作可以由用戶代碼設置,也可以由外部引腳信號觸發來設置,當然了還可以由定時器事件設置。

     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章