今天學習stm32的adc部分,adc1有18個通道,其中adc16和adc17是內部通道,分別接內部溫度計和vrefint。在做a/d轉換的時候,16個多路通道可以分為兩組:規則組和注入組。不知道大家怎麼看,也許是我看的不夠專注,反正我覺得stm32的參考手冊真是晦澀難懂,就像***一樣。就規則組這個地方,看了好長時間才算看明白。
總結一下規則組的設定。
規則組由16個轉換組成,注意這裡說的是轉換,而不是指16個通道。具體來說就是在adc_sqr1-----adc_sqr3這三個暫存器中sq1[4:0]至sq16[4:0],而每乙個轉換可以是adc的前16個通道中的任意乙個通道,所以這幾個都是用5位一組表示的。通過對任意乙個轉換設定相應的資料可以將這個轉換設定成某乙個通道。如往sq1裡面寫3,那麼adcx_in3就開始工作。
規則組中轉換的總數由adc_sqr1暫存器的l[3:0]位確定。如:將9寫入該暫存器的l中,那麼規則組的轉換數就是9,也就是sq1,sq2,sq3.......sq9。將想要進行轉換的通道寫進上面幾個轉換中,就可以實現對多個通道按照一定的規則進行轉換。
而暫存器adc_cr1的discnum[2:0]則規定了一次外部觸發時進行規則轉換的通道的數目。
如果我想進行這樣一次轉換:將通道9,8,7,6,5,4,3,2,1,0這是個通道進行轉換。
那麼首先設定adc_sqr1暫存器的l[3:0],應該寫0x0a。
然後再開始寫暫存器adc_cr1的discnum[2:0],一次外部觸發啟動幾個轉換就寫幾個。這裡寫入0x03。
第三在sq1到sq9中依次寫入9,8,7,6,5,4,3,2,1,0。.
那麼在第一次外部觸發之後,通道9,8,7進行轉換;
第二次觸發之後,通道6,5,4進行轉換;
第三次觸發之後,通道3,2,1進行轉換;
第四次觸發之後,通道0,9,8進行轉換。
自己的一點理解,如有不足,請各位多多指教。
STM32的ADC取樣與多通道ADC取樣
stm32庫開發實戰指南 劉火良,楊森著 原理性質的東西還是少講,因為上面那本書裡面講解的很詳細了,直接來看硬體電路圖 這裡使用的是3362電位器 10k 即用stm32來測量pb0和gnd兩端的電壓,這樣的電路設計比較簡單也容易理解,但是存在一定的弊端,下面給出 stm32庫開發實戰指南 上面配套...
STM32的ADC多通道取樣
用hal庫寫的好處就是可以不用進行配置io口發步驟.有良好的相容性,更換晶元的時候改 也簡單.rcc我在左側的 裡不用勾選,因為我用的是內部時鐘,不用選.下面是我配置的時鐘 之所以是48m,還要分頻呢.下面直接上 其他的都預設.然後按alt p,設定下工程,格式如下 這個可以把 格式更模組化。建議選...
STM8學習筆記 ADC多通道取樣
stm8s003微控制器adc取樣通道總共有5個,從ain2 ain6,多通道取樣時需要將adc轉換設定為單次轉換模式,每次切換取樣通道後,需要重新初始化 adc,取樣結果在中斷中讀取。io口初始化 ad通道引腳初始化 void adc gpio init void 將adc的io口都設定為輸入模式...