STM32F0xx_ADC采集電壓配置詳細(xì)過程
前言
關(guān)于ADC這一塊的功能基本上也算是CortexM芯片的標(biāo)配了。ST的每一塊芯片都有這個(gè)功能,只是說因型號(hào)不同,通道數(shù)、位數(shù)等有所不同。STM8的芯片大多數(shù)都是10的,也就是說分辨率可達(dá)到:參考電壓*(1/1024);STM32大多數(shù)都是12位的,也有少部分是16位的(F373)。平常采集一般的電壓值,10位數(shù)都夠我們使用了,除非使用在非常精密,或者說要求比較高的場合。
F0系列的芯片和F1系列的芯片差不多相似,但是F0沒有ADC2、ADC3這么一說,只有ADC1,這里在編程的時(shí)候(特別是想把代碼從F1移植到F0上的人要注意)。
下載
ST標(biāo)準(zhǔn)外設(shè)庫和參考手冊、數(shù)據(jù)手冊等都可以在ST官網(wǎng)下載,你也可以到我的360云盤下載。關(guān)于F0系列芯片的參考手冊有多個(gè)版本(針對F0不同芯片),但有一個(gè)通用版本,就是“STM32F0x128參考手冊V8(英文)2015-07”建議參考該手冊,以后如果你換用一種型號(hào)芯片也方便了解。
今天的軟件工程下載地址(360云盤):
https://yunpan.cn/cSULmkr3vBQUj訪問密碼 14c7
STM32F0xx的資料可以在我360云盤下載:
https://yunpan.cn/cS2PVuHn6X2Bj訪問密碼 8c37
準(zhǔn)備工作
今天總結(jié)的軟件工程是基于“TIM基本延時(shí)配置詳細(xì)過程”修改而來,因此需要將該軟件工程下載準(zhǔn)備好。打開軟件工程,新建源程序文件(adc.c 和 adc.h),在工程中添加新建的源程序文件adc.c和使用到標(biāo)準(zhǔn)外設(shè)庫stm32f0xx_adc.c。添加的源代碼響應(yīng)的源文件代碼就OK了。
數(shù)據(jù)傳輸原理
ADC模塊是一種12位的逐次逼近型模擬數(shù)字轉(zhuǎn)換器。它有多達(dá)19個(gè)通道,可測量16個(gè)外部和3個(gè)內(nèi)部信號(hào)源。各通道的A/D轉(zhuǎn)換可以單次、連續(xù)、掃描或間斷模式執(zhí)行。 ADC的結(jié)果可以左對齊或右對齊方式存儲(chǔ)在16位數(shù)據(jù)寄存器中。
配置過程詳情
①RCC時(shí)鐘
該函數(shù)位于bsp.c文件下面;
我個(gè)人習(xí)慣第一步配置時(shí)鐘,ST官方提供的例程也是把配置時(shí)鐘放在前面。關(guān)于RCC時(shí)鐘的配置比較重要,有好幾次我就是由于忘記配置相應(yīng)RCC時(shí)鐘,讓我找了很久的問題,最后才發(fā)現(xiàn)是RCC時(shí)鐘沒有配置。
注意:
外設(shè)時(shí)鐘不要隨便添加,比如:RCC_APB1外設(shè)不要配置在RCC_APB2時(shí)鐘里面【如:RCC_APB2PeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);這樣能編譯過,但是錯(cuò)誤的】
我每次都提醒RCC時(shí)鐘,是因?yàn)楹芏嗳司褪且驗(yàn)闀r(shí)鐘而導(dǎo)致軟件運(yùn)行有問題,所以,提醒更多人要注意配置RCC.
②ADC引腳配置
該函數(shù)位于adc.c文件下面;
重點(diǎn)注意:
引腳配置要和AD通道對應(yīng)才行(請看數(shù)據(jù)手冊中的引腳說明)。
③ADC配置
該函數(shù)位于adc.c文件下面;
分辨率和對齊方式?jīng)Q定你的計(jì)算方式、通道與上面的引腳配置需對應(yīng)。
④ADC采集電壓值
該函數(shù)位于adc.c文件下面;
調(diào)用這個(gè)接口就可以采集電壓值。這里采樣8次(根據(jù)自己情況可以選擇平均多次),算平均,最后得出電壓值(1000倍值)。1000倍數(shù)值是不想有小數(shù)點(diǎn),方便打印輸出。
說明
STM32F0的芯片軟件兼容性很好,可以適用于F0其他很多型號(hào)的芯片(具體請看手冊、或者親自測試)。