**自:
今天嘗試了下stm32的adc取樣,並利用dma實現取樣資料的直接搬運儲存,這樣就不用cpu去參與操作了。
找了不少例子參考,adc和dma的設定了解了個大概,並直接利用開發板來做一些實驗來驗證相關的操作,保證自己對各部分設定的理解。
我這裡用了3路的adc通道,1路外部變阻器輸入,另外兩路是內部的溫度取樣和vrefint,這樣就能組成連續的取樣,來測試多通道adc自動掃瞄了,adc分規則轉換和注入轉換,其實規則轉換就是按照既定的設定來順序轉換,而注入轉換就是可以在這順序佇列中插隊一樣,能夠提前轉換了。
初始化設定:
1設定好後測試,發現乙個比較嚴重的問題,我在調製阻器的時候,發現會影響其他2路取樣的資料,且資料變化比較大,我就先測試adc的參考電壓即vref+和vref-,沒發現變化,那取樣的初始化是否會有問題,在網上找了不少的資料,都沒表明我的設定有問題,不過還是發現了乙個不同,就是adc_sampling_time的時間不同。那麼我就把它設定成://pc0 for anagle sample
2static
void
protect_clkinit(
void)3
89static
void
protect_gpioinit(
void)10
1819
static
void
protect_adcinit(
void)20
5152
static
void
protect_dmainit(
void)53
1 adc_regularchannelconfig(adc1,adc_channel_10,1即最大的取樣時間,結果發現確實是這個問題,後來又試了下其他幾個取樣時間,最短也要adc_sampletime_71cycles5,不然資料都會被影響,大概取樣週期不能太短, 不然dma資料傳輸可能會被影響。,adc_sampletime_239cycles5);
2 adc_regularchannelconfig(adc1,adc_channel_tempsensor,2
,adc_sampletime_239cycles5);
3 adc_regularchannelconfig(adc1,adc_channel_vrefint,3,adc_sampletime_239cycles5);
STM32的ADC多通道取樣
用hal庫寫的好處就是可以不用進行配置io口發步驟.有良好的相容性,更換晶元的時候改 也簡單.rcc我在左側的 裡不用勾選,因為我用的是內部時鐘,不用選.下面是我配置的時鐘 之所以是48m,還要分頻呢.下面直接上 其他的都預設.然後按alt p,設定下工程,格式如下 這個可以把 格式更模組化。建議選...
STM32的ADC取樣與多通道ADC取樣
stm32庫開發實戰指南 劉火良,楊森著 原理性質的東西還是少講,因為上面那本書裡面講解的很詳細了,直接來看硬體電路圖 這裡使用的是3362電位器 10k 即用stm32來測量pb0和gnd兩端的電壓,這樣的電路設計比較簡單也容易理解,但是存在一定的弊端,下面給出 stm32庫開發實戰指南 上面配套...
STM32 多通道掃瞄 ADC資料錯亂 HAL
問題 多通道adc掃瞄 單次 dma,發現工作一段時間後,dma資料錯位。按我的理解當前是單次模式,轉換完成後應該自動停止,實際過程不太對。解決辦法 在dma搬運結束中斷中關閉adc void hal adc convcpltcallback adc handletypedef hadc 多通道單次...