STM32處理器的AD難點(diǎn)整理
1.STM32的AD轉(zhuǎn)換,可以將轉(zhuǎn)換任務(wù)組織為兩個(gè)組:規(guī)則組和注入組。在任意多個(gè)通道上以任意順序進(jìn)行的一系列轉(zhuǎn)換構(gòu)成成組轉(zhuǎn)換。例如,可以如下順序完成轉(zhuǎn)換:通道3、通道8、通道2、通道2、通道0、通道2、通道2、通道15。在執(zhí)行規(guī)則通道組掃描轉(zhuǎn)換時(shí),如有例外處理則可啟用注入通道組的轉(zhuǎn)換。可以模糊的將注入組的轉(zhuǎn)換理解為AD轉(zhuǎn)換的中斷一樣,規(guī)則通道組的轉(zhuǎn)換是普通轉(zhuǎn)換,然而注入組的轉(zhuǎn)換條件滿足的情況下,注入組的轉(zhuǎn)換會(huì)打斷規(guī)則組的轉(zhuǎn)換。如果規(guī)則轉(zhuǎn)換已經(jīng)在運(yùn)行,為了在注入轉(zhuǎn)換后確保同步,所有的ADC(主和從)的規(guī)則轉(zhuǎn)換被停止,并在注入轉(zhuǎn)換結(jié)束時(shí)同步恢復(fù)。規(guī)則轉(zhuǎn)換和注入轉(zhuǎn)換均有外部觸發(fā)選項(xiàng),規(guī)則通道轉(zhuǎn)換期間有DMA請(qǐng)求產(chǎn)生,而注入轉(zhuǎn)換則無DMA請(qǐng)求,需要用查詢或中斷的方式保存轉(zhuǎn)換的數(shù)據(jù)。
2.規(guī)則組:此模式通過設(shè)置ADC_CR1寄存器上的DISCEN位激活。它可以用來執(zhí)行一個(gè)短序列的n次轉(zhuǎn)換(n<=8),此轉(zhuǎn)換是ADC_SQRx寄存器所選擇的轉(zhuǎn)換序列的一部分。數(shù)值n由ADC_CR1寄存器的DISCNUM[2:0]位給出。 一個(gè)外部觸發(fā)信號(hào)可以啟動(dòng)ADC_SQRx寄存器中描述的下一輪n次轉(zhuǎn)換,直到此序列所有的轉(zhuǎn)換完成為止??偟男蛄虚L(zhǎng)度由ADC_SQR1寄存器的L[3:0]定義。 舉例: n=3,被轉(zhuǎn)換的通道 = 0、1、2、3、6、7、9、10 第一次觸發(fā):轉(zhuǎn)換的序列為 0、1、2 第二次觸發(fā):轉(zhuǎn)換的序列為 3、6、7 第三次觸發(fā):轉(zhuǎn)換的序列為 9、10,并產(chǎn)生EOC事件 第四次觸發(fā):轉(zhuǎn)換的序列 0、1、2,依次類推;
注入組:此模式通過設(shè)置ADC_CR1寄存器的JDISCEN位激活。在一個(gè)外部觸發(fā)事件后,該模式按通道順序逐個(gè)轉(zhuǎn)換ADC_JSQR寄存器中選擇的序列。 一個(gè)外部觸發(fā)信號(hào)可以啟動(dòng)ADC_JSQR寄存器選擇的下一個(gè)通道序列的轉(zhuǎn)換,直到序列中所有的轉(zhuǎn)換完成為止??偟男蛄虚L(zhǎng)度由ADC_JSQR寄存器的JL[1:0]位定義。 例子: n=1,被轉(zhuǎn)換的通道 = 1、2、3 第一次觸發(fā):通道1被轉(zhuǎn)換 第二次觸發(fā):通道2被轉(zhuǎn)換 第三次觸發(fā):通道3被轉(zhuǎn)換,并且產(chǎn)生EOC和JEOC事件 第四次觸發(fā):通道1被轉(zhuǎn)換,也是依次類推。
3.STM32的ADC的工作模式:
單次轉(zhuǎn)換模式:轉(zhuǎn)換一次則停止;
連續(xù)轉(zhuǎn)換模式:轉(zhuǎn)換完一次后即開始下一次轉(zhuǎn)換;
掃描模式:掃描一組模擬通道;
間斷模式:每觸發(fā)一次,轉(zhuǎn)換序列中n個(gè)通道。
4.因?yàn)橐?guī)則通道轉(zhuǎn)換的值儲(chǔ)存在一個(gè)僅有的數(shù)據(jù)寄存器中,所以當(dāng)轉(zhuǎn)換多個(gè)規(guī)則通道時(shí)需要使用DMA,這可以避免丟失已經(jīng)存儲(chǔ)在ADC_DR寄存器中的數(shù)據(jù)。只有在規(guī)則通道的轉(zhuǎn)換結(jié)束時(shí)才產(chǎn)生DMA請(qǐng)求,并將轉(zhuǎn)換的數(shù)據(jù)從ADC_DR寄存器傳輸?shù)接脩糁付ǖ哪康牡刂贰?br/>注: 只有ADC1和ADC3擁有DMA功能。由ADC2轉(zhuǎn)化的數(shù)據(jù)可以通過雙ADC模式,利用ADC1的DMA功能傳輸。
5.雙ADC模式
(1)同步注入模式:此模式轉(zhuǎn)換一個(gè)注入通道組。外部觸發(fā)來自ADC1的注入組多路開關(guān)(由ADC1_CR2寄存器的JEXTSEL[2:0]選擇),它同時(shí)給ADC2提供同步觸發(fā)。
注意: 不要在2個(gè)ADC上轉(zhuǎn)換相同的通道(兩個(gè)ADC在同一個(gè)通道上的采樣時(shí)間不能重疊)。
(2)同步規(guī)則模式:此模式在規(guī)則通道組上執(zhí)行。外部觸發(fā)來自ADC1的規(guī)則組多路開關(guān)(由ADC1_CR2寄存器的EXTSEL[2:0]選擇),它同時(shí)給ADC2提供同步觸發(fā)。
(3)快速交叉模式:此模式只適用于規(guī)則通道組(通常為一個(gè)通道)。外部觸發(fā)來自ADC1的規(guī)則通道多路開關(guān)。外部觸發(fā)產(chǎn)生后:
A.ADC2立即啟動(dòng)并且
B.ADC1在延遲7個(gè)ADC時(shí)鐘周期后啟動(dòng)
注意:最大允許采樣時(shí)間<7個(gè)ADCCLK周期,避免ADC1和ADC2轉(zhuǎn)換相同通道時(shí)發(fā)生兩個(gè)采樣周期的重疊。
(4)慢速交叉模式:此模式只適用于規(guī)則通道組(只能為一個(gè)通道)。外部觸發(fā)來自ADC1的規(guī)則通道多路開關(guān)。外部觸發(fā)產(chǎn)生后:
A.ADC2立即啟動(dòng)并且
B.ADC1在延遲14個(gè)ADC時(shí)鐘周期后啟動(dòng)
C.在延遲第二次14個(gè)ADC周期后ADC2再次啟動(dòng),如此循環(huán)。
(5)交替觸發(fā)模式:此模式只適用于注入通道組。外部觸發(fā)源來自ADC1的注入通道多路開關(guān)。
A.當(dāng)?shù)谝粋€(gè)觸發(fā)產(chǎn)生時(shí),ADC1上的所有注入組通道被轉(zhuǎn)換。
B.當(dāng)?shù)诙€(gè)觸發(fā)到達(dá)時(shí),ADC2上的所有注入組通道被轉(zhuǎn)換。
C.如此循環(huán)……
(6)獨(dú)立模式:此模式里,雙ADC同步不工作,每個(gè)ADC接口獨(dú)立工作。
(7)混合的規(guī)則/注入同步模式:規(guī)則組同步轉(zhuǎn)換可以被中斷,以啟動(dòng)注入組的同步轉(zhuǎn)換。
(8)混合的同步規(guī)則+交替觸發(fā)模式:規(guī)則組同步轉(zhuǎn)換可以被中斷,以啟動(dòng)注入組交替觸發(fā)轉(zhuǎn)換。 顯示了一個(gè)規(guī)則同步轉(zhuǎn)換被交替觸發(fā)所中斷。
(9)混合同步注入+ 交叉模式:一個(gè)注入事件可以中斷一個(gè)交叉轉(zhuǎn)換。這種情況下,交叉轉(zhuǎn)換被中斷,注入轉(zhuǎn)換被啟動(dòng),在注入序列轉(zhuǎn)換結(jié)束時(shí),交叉轉(zhuǎn)換被恢復(fù)。