本章為大家?guī)?lái)模數(shù)轉(zhuǎn)換器(ADC)的使用教學(xué),按照慣例,我們先來(lái)說(shuō)一下模數(shù)轉(zhuǎn)換器本身。
首先是功能,模數(shù)轉(zhuǎn)換器接收電壓信號(hào)并輸出一個(gè)數(shù)字信號(hào),該數(shù)字信號(hào)是一個(gè)數(shù)字,這個(gè)數(shù)字指示了電壓信號(hào)的大小。通常來(lái)說(shuō),想要判斷大小就需要有對(duì)比,因此該數(shù)字指示的電壓大小實(shí)際上是一個(gè)比較的結(jié)果。ADC將需要測(cè)量的電壓信號(hào)Ut與已知電壓的信號(hào)U作比較,并最終輸出一個(gè)數(shù)字表示Ut相當(dāng)于多少比例的U。
接下來(lái)就可以看看CW32的ADC外設(shè)結(jié)構(gòu)框圖了,圖中按塊劃分了ADC外設(shè)的不同功能區(qū)。
ADC會(huì)將左側(cè)紅框中某一指定通道(由程序指定)所連接的電信號(hào)與下方紅框中選定的參考電壓(由程序選定)進(jìn)行比較,完成紫色方框中的步驟后,最終輸出一個(gè)數(shù)字(暫記為value)并存放在右側(cè)紅框中的寄存器里面。Value的范圍取決于ADC的位數(shù),若ADC為12位,則value最大為2^12=4096,最小值為0,value指示了相比于參考電壓U,輸入電壓Ut的值,計(jì)算方法如下:可以認(rèn)為ADC將參考電壓分成了4096份,最終輸出的結(jié)果反映了輸入電壓夠得上其中多少份,例如參考電壓選擇2.5V,最終轉(zhuǎn)換的結(jié)果數(shù)據(jù)為2048,那么就認(rèn)定輸入通道的實(shí)際電壓值是2.5/4096*2048=1.25V,其他情況以此類(lèi)推。由于參考電壓的存在,ADC無(wú)法直接測(cè)量比參考電壓值高的信號(hào),輸入通道連接的電壓不能高于參考電壓。
現(xiàn)在來(lái)簡(jiǎn)單說(shuō)說(shuō)紫色方框內(nèi)的部分,這一部分是ADC的核心部分,根據(jù)ADC轉(zhuǎn)換原理的不同,這一部分的電路結(jié)構(gòu)也不一樣,CW32的ADC是逐次逼近型ADC,它會(huì)先把通道中的電壓信號(hào)采樣并被內(nèi)部的采樣保持放大器輸出且保持穩(wěn)定(這一步叫采樣保持),隨后ADC用逐次逼近的方法得到一個(gè)12位的數(shù)字(這一步叫量化編碼),需要重點(diǎn)關(guān)心的是采樣保持階段的持續(xù)時(shí)間,這個(gè)時(shí)間越久,最終用于量化編碼階段的采樣電壓值就越精確,我們就能得到更精確的轉(zhuǎn)換結(jié)果。
從上述步驟來(lái)看,使用ADC需要進(jìn)行如下操作:
1.必要的IO初始化和外設(shè)時(shí)鐘初始化;
2.正確設(shè)置ADC的采樣通道和參考電壓;
3.選擇合適的ADC采樣時(shí)間;
4.啟動(dòng)ADC并等待轉(zhuǎn)換完成;
5.讀取轉(zhuǎn)換結(jié)果寄存器得到電壓值;
首先需要說(shuō)明的是IO初始化的問(wèn)題。對(duì)于使用ADC功能的IO,它本質(zhì)上并不是“將這個(gè)IO復(fù)用為ADC功能”,而是把這個(gè)IO設(shè)置為模擬輸入,也就是不將IO上的電信號(hào)量化成數(shù)字信號(hào),這一點(diǎn)在GPIO電路結(jié)構(gòu)圖里面可以看到。
這個(gè)模擬功能從結(jié)果上來(lái)看就是ADC復(fù)用,不過(guò)還是請(qǐng)大家理解其本質(zhì)。
下一個(gè)要說(shuō)的是采樣通道。ADC一般都會(huì)有多個(gè)采樣通道,開(kāi)發(fā)者從中挑選一些通道接入電路來(lái)使用。ADC外設(shè)同一時(shí)間只能對(duì)某一個(gè)通道上的電壓進(jìn)行轉(zhuǎn)換,所以如果需要采樣四個(gè)通道的電壓,只能順序轉(zhuǎn)換,這個(gè)轉(zhuǎn)換順序是可以手動(dòng)設(shè)置的。ADC擁有4個(gè)可填入的配置項(xiàng),暫且稱為序列0~3,ADC會(huì)根據(jù)另外一個(gè)配置項(xiàng)(ADC_SQR寄存器的ENS位段)來(lái)判斷該轉(zhuǎn)換這4個(gè)序列中的哪些,序列里面需要填寫(xiě)的內(nèi)容就是AD采樣的通道號(hào),配置完成之后ADC就會(huì)按照這4個(gè)序列內(nèi)填的通道號(hào)按順序進(jìn)行AD轉(zhuǎn)換。更具體的配置方法直接參考ADC_SQR寄存器描述即可
圖中有一些前文沒(méi)說(shuō)到的配置項(xiàng),因?yàn)檫@些配置項(xiàng)是一些ADC附帶的特殊功能。具體的功能在手冊(cè)ADC章節(jié)的寄存器描述中有詳細(xì)說(shuō)明,代碼中的注釋也已經(jīng)詳細(xì)標(biāo)注。
該配置中,ADC被配置為單通道單次轉(zhuǎn)換模式,也就是說(shuō)ADC一次轉(zhuǎn)換只能轉(zhuǎn)換一個(gè)ADC通道,并且轉(zhuǎn)換完成之后就會(huì)停下來(lái)等待CPU發(fā)出下一次轉(zhuǎn)換開(kāi)始的指令(相對(duì)的,還有連續(xù)模式和掃描模式)。
配置完成后,再編寫(xiě)一個(gè)啟動(dòng)ADC的函數(shù)就行了,該函數(shù)需要包含啟動(dòng)、等待轉(zhuǎn)換完成、返回?cái)?shù)據(jù)的功能,如圖所示:
上圖的具體步驟對(duì)應(yīng)了手冊(cè)中描述的步驟,詳細(xì)說(shuō)明見(jiàn)用戶手冊(cè)22.5.1章節(jié)。
ADC一般用法的介紹到此就結(jié)束了,但ADC還有很多其他功能,比如連續(xù)模式、掃描模式、硬件觸發(fā)采集和DMA訪問(wèn),這些模式可以幫助我們更好地使用ADC功能,后續(xù)的章節(jié)會(huì)介紹一種不消耗CPU資源的ADC采集方法,真正實(shí)現(xiàn)全自動(dòng)采集。
審核編輯:劉清
-
放大器
+關(guān)注
關(guān)注
143文章
13589瀏覽量
213488 -
寄存器
+關(guān)注
關(guān)注
31文章
5343瀏覽量
120377 -
模數(shù)轉(zhuǎn)換器
+關(guān)注
關(guān)注
26文章
3204瀏覽量
126840 -
電壓信號(hào)
+關(guān)注
關(guān)注
0文章
214瀏覽量
13379 -
ADC采樣
+關(guān)注
關(guān)注
0文章
134瀏覽量
12845
原文標(biāo)題:【CW32學(xué)習(xí)筆記】模數(shù)轉(zhuǎn)換器
文章出處:【微信號(hào):武漢芯源半導(dǎo)體,微信公眾號(hào):武漢芯源半導(dǎo)體】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論