1、問題
1)10位ADC的誤差是多少?
首先要分清分辨率與精度的區別。
10cm的尺子,有100個等分刻度,則該尺子的分辨率為1mm。
但不能說這把尺子的精度是1mm。
在冬天,尺子會熱脹冷縮,依然有100格刻度,每格刻度代表1mm,但每格刻度與真實的1mm是不同的,精度在變化。
實際上,10位的ADC將會把基准電壓分成1024份,分辨率為:基准電壓/1024。
2)ADC的采樣頻率是多少?
芯片開發手冊上轉換時間公式為:

例子中,采樣頻率為1MHz。
3)STM32F103這款芯片有多少個ADC采集通道?


芯片內有3個ADC控制器:ADC1、ADC2、ADC3,每個ADC控制器有16個通道,另外還有兩個內部通道,一個測量內部溫度,一個測量參考電壓。
一個ADC控制器每個時刻只能測一個通道,測完可以切換到另一個通道。
4)ADC以什么為參考電壓?

上述表格說明了參考正電壓與參考負電壓。
5)ADC測量電壓的范圍是多少?

ADC模塊中有一個模擬看門狗,通過程序可以設置上下閾值。
(6)規則通道與注入通道

注入通道類似中斷。
//===============閱讀開發手冊筆記====================//
11 模擬到數字轉換器(ADC)
11.1 ADC介紹
12位ADC是逐次逼近的模數轉換器。
芯片有18路測量通道。
其中16路可以單獨測量信號,2路測量內部信號。
模數轉換器可以應用在單一、連續、掃描以及不連續模式下。
ADC測量轉換的結果存放在一個左對齊或右對齊的16位寄存器里。
當輸入電壓在用戶定義的閾值外,模擬看門狗能夠允許程序檢測到。
ADC的輸入時鍾是由PCLK2時鍾除以一個預分頻系數得到的,
頻率不能超過14MHz。
11.2 ADC主要特征
12位的精度。
在轉換結束時,輸入轉換結束時,模擬看門狗事件時都會觸發中斷。
離散或連續模式。
掃描模式自動轉換通道0到通道n。
自校准。
數據對齊與內部數據一致性。
通道到通道編程采樣時間。
常規轉換還是注入轉換,都是外部觸發選項。
不連續模式。
雙重模式。
ADC的轉換時間。
ADC供電范圍:2.4 - 3.6V。
ADC電壓輸入范圍:VREF- ≤ VIN ≤ VREF+ 。
在常規通道轉換時,DMA請求產生。
注意:如果允許的話,VREF-要與VSSA綁定。
11.3 ADC功能描述
ADC模塊圖






注意:ADC3與ADC1和ADC2不同的觸發條件。

11.3.1 ADC開關控制
可以通過在ADC_CR2寄存器中設置ADON位來啟動ADC。
當ADON位第一次被置1的時候,它從電源關閉模式喚醒ADC。
在ADC上升時間后,ADON位被軟件再一次置位后,轉換開始。
轉換可以被停止,並且清除ADON位后,ADC會進入關機模式。
11.3.2 ADC時鍾
時鍾控制器提供的ADCCLK時鍾與PCLK2(APB2時鍾)是同步的。
RCC控制器有一個專門用於ADC時鍾的可編程預調器。
11.3.3 通道選擇
有16個多路復用通道。
可以將轉換組織在兩個組中:常規和注入。
組由一系列轉換組成,任何通道任何順序都可以轉換。
例如:可以用如下順序進行轉換:Ch3, Ch8, Ch2, Ch2, Ch0, Ch2, Ch2, Ch15。
常規組由最多16個轉換組成。
常規通道和他們在轉換次序的順序必須在ADC_SQRx寄存器中設置。
常規組轉換的總數必須在ADC_SQR1寄存器里設置L[3:0]位。
注入組由最多四個轉換組成。
注入通道和它們在轉換中的次序必須在ADC_JSQR寄存器中選擇。
在注入組中轉換的總數必須在ADC_JSQR寄存器的L[1:0]位寫。
如果在轉換的過程中修改了ADC_SQRx或者ADC_JSAQR寄存器,
當前的轉換會被重置,一個新的開始脈沖被發送給ADC,去轉換新選擇的組。
溫度傳感器內部通道
溫度傳感器與ADCx_IN16通道相連,並且內部參考電壓VREFINT與ADCx_IN17相連。
可以選擇這兩個內部通道,將其轉換為注入通道或常規通道。
傳感器和VREFINT只能在主ADC1外設上使用。
11.3.4 單次轉換模式
在單次轉換模式下,ADC進行一次轉換。
啟動這種模式的條件:當CONT位是0,設置ADC_CR2寄存器的ADON位或者通過外部的觸發。
一旦選定通道的轉換完成:
如果是常規通道轉換:
轉換的數據就存儲在16位的ADC_DR寄存器里。
結束轉換標志位(EOC)會被設置。
如果EOCIE被設置了,會產生一個中斷。
如果是注入通道轉換:
轉換的數據會被存儲在16位的ADC_DRJ1寄存器內。
內部轉換完成(JEOC)標志會被設置。
如果JEOCIE標志設置了,會產生一個中斷。
然后ADC就會停止。
11.3.5 連續轉換模式
在連續轉換的模式下,ADC在一次轉換完成后立即進行下一次轉換。
這種模式可以由外部觸發器啟動,也可以通過設置ADC_CR2寄存器的ADON位來啟動,這些都是在CONT位為1的情況下。
在每一次轉換后:
如果是常規通道轉換:
轉換的數據會被存儲在16位的ADC_DR寄存器里。
轉換結束(EOC)標志會被設置。
如果EOCIE被設置,會產生一個中斷。
如果是注入通道轉換:
轉換數據會被存儲在16位的ADC_DRJ1寄存器里。
注入轉換結束(JEOC)標志會被設置。
如果JEOCIE位被設置,會產生一個中斷。
11.3.6 時序圖
在ADC進行精確轉換之前需要一段穩定的時間(tSTAB)。
ADC開始轉換后經歷14個時鍾周期,EOC標志位會被置位,
16位的ADC數據寄存器就包含了轉換的結果。

11.3.7 模擬看門狗
如果模擬轉換電壓高於最高閾值或低於最低閾值,AWD模擬看門狗狀態位會被設置。
這些閾值是可以通過編程改變的,在ADC_HTR和ADC_LTR寄存器里。
在ADC_CR1寄存器里通過使用AWDIE位可以使能中斷。
閾值與ADC_CR2寄存器里的ALIGN位無關。
對比是在對齊之前完成的。
設置ADC_CR1寄存器可以使能一個或多個的看門狗通道。



11.3.8 掃描模式
該模式用於掃描一組模擬通道。
掃描模式可以通過設置ADC_CR1寄存器中的SCAN位來啟動。
一旦這位被設置了,
11.3.9 注入通道管理
11.3.10 不連續模式
11.4 校准
11.5 數據轉換
11.6 采樣時間
11.7 以外觸發的方式轉換
11.8 DMA請求
11.9 雙ADC模式
11.10 溫度傳感器
11.11 ADC中斷
11.12 ADC寄存器
