STM32之ADC
ADC是多少位的?
12位
ADC有多少個?
1個、2個或多至3個,視不同的器件而不同;每個又有多個通道。
關(guān)于通道的名堂:
10.3.3 通道選擇
它們有什么區(qū)別:
還有其他的一些區(qū)別,這里暫不一一羅列。
ST為什么這么樣來設(shè)計AD轉(zhuǎn)換,肯定是有理由的,但是我不知道,因此,我也就難以深入地理解AD轉(zhuǎn)換的各種模式。這也就是說,對于知識的理解,要把它放在其應(yīng)用背景中去學(xué)習(xí)才能學(xué)得好。因此,其他相關(guān)知識積累得越多,這里學(xué)起來也就越快,這也就是所謂的“功底”問題。某人功底深厚,意味著他見多識廣,遇到的事情多,能夠很快找到處理某件事情的“原型”。當(dāng)然,也有一些人抽象學(xué)習(xí)能力極強(qiáng),就算找不到“原型”,他也能學(xué)得很好?;旧希@類人的科學(xué)素養(yǎng)更高一些,在工程師、工科類學(xué)生中并不多見。
閑話少說,下面來看怎么樣來使用AD轉(zhuǎn)換器?
以一段源程序?yàn)槔謩e來解讀,同時進(jìn)一步理解STM32中有關(guān)符號的含義,相信以后再讀庫源程序,定能更上一層樓。
為看得清楚一些,以下代碼用藍(lán)色表示,而在這段代碼的注釋中插入的一些代碼則用紅色表示。從數(shù)據(jù)手冊上摘錄下來的內(nèi)容則用黃底來表示(本來數(shù)據(jù)手冊摘錄部分用貼圖是最好的,但是發(fā)表博文時貼圖太痛苦了,,,偷點(diǎn)懶)。
通過前面一系列的設(shè)置,終于可以執(zhí)行ADC_Init函數(shù)了。執(zhí)行完了還不行,還要指定通道轉(zhuǎn)換順序,采樣時間等,接下繼續(xù)。
tmpreg2 = SQR3_SQ_Set << (5 * (Rank - 1));
SQR3的值如下:
//#define SQR3_SQ_Set ((uint32_t)0x0000001F)
之所以用5去乘,看下圖中的表格:ADC_SQ3中SQ1~SQ6每個都是占5位。
這下理解了:如果這個Rank是1,那么tmpreg2這個變量第[4:0]這5位將會是11111(即SQR3_SQ_Set的初始值:0x0000001f),如果Rank是2,那么tmpreg2這個變量的第[9:5]將會是11111,即tmpreg2將等于:0x000003e0,依此類推。
*/
第四個參數(shù)是采樣時間設(shè)定,代碼如下:
ADCx->SMPR2 = tmpreg1;
接下來還有兩件事要做,第一件是允許DMA傳輸
這兩件事情都不麻煩,所以就不再分析了。
至此一次ADC轉(zhuǎn)換配置完畢。很麻煩......也許功能強(qiáng)大的副產(chǎn)品就是麻煩吧,沒有辦法。
評論