ADC_SampleTime
用途:在ADC通道配置(ADC_RegularChannelConfig)需要傳輸的引數。
含義:指兩個取樣階段之間的延遲週期數,該引數會影響ADC在取樣過程中的效能和準確性。
選取不同引數的異同:
週期越多 | 週期越少 | |
---|---|---|
取樣精度和穩定性 | ↑ | ↓ |
速度和響應時間 | ↓ | ↑ |
抗噪聲和抗干擾能力 | ↑ | ↓ |
在實際應用中,選擇合適的ADC_SampleTime週期數通常需要根據具體的系統需求進行權衡。如果系統對精度和穩定性要求較高,可以考慮增加延遲週期數;而如果需要更快的響應速度,可以適當減少延遲週期數。
問:為什麼是1.5個週期,而在程式碼中是ADC_SampleTime_1Cycles5
答:ADC_SampleTime_1Cycles5,cycles後面的5表示0.5週期,故改值表示1.5週期而不是一個週期
問:ADC取樣週期為1.5週期是不是每1.5週期取樣一次的意思?
答:不是,1.5週期的意思是對資料取樣的動作持續1.5個週期的意思。以stm32f10x為例,1.5個取樣週期還要再加上12.5週期作為資料轉換,也就是每一次取樣的開始間隔1.5(取樣週期)+12.5(轉換週期)= 14週期。故當ADC的時鐘為14Mhz,取樣週期為1.5時,每次取樣就需要1us。
不同取樣週期對應的總轉換時間(以14Mhz晶振為例)
取樣週期 | 總轉換時間 |
---|---|
1.5 | 1us |
7.5 | 1.4us |
13.5 | 1.9us |
28.5 | 2.9us |
41.5 | 3.9us |
55.5 | 4.9us |
71.5 | 6us |
239.5 | 18us |
規則通道和注入通道
規則通道:用於常規的資料採集,通常用於採集主要的輸入訊號
注入通道:是一種特殊的輸入通道,比規則通道有著更高的優先順序
給我的感覺,規則通道就像是main的主程式,注入通道就像是中斷程式。
異同點
- 同:都是ADC的輸入通道配置,用於資料採集。
- 異:
- 規則通道用於常規的、定期的資料採集;注入通道用於臨時、優先順序更高的事件響應採集。
- 注入通道的優先順序通常高於規則通道,可以在規則通道採集過程中,立刻插入取樣操作。
- 兩者在程式碼層面上的區別就在於使能的函式名不一樣,初始化的結構體是一樣的。
- 規則通道共用一個資料暫存器(ADC_DR)暫存資料,每個注入通道有獨立的資料暫存器(ADC_DRJx)暫存資料
ADC轉換流程
單次轉換模式的規則通道
- 轉換資料被儲存在ADC_DR暫存器中
- EOC(轉換結束)標誌位被標誌
- 如果設定了EOCIE,則產生中斷
單次轉換模式的注入通道
- 儲存特定的ADC_DRJx暫存器中(每一個通道單獨分配了一個暫存器)
- 轉換結束的標誌位為JEOC
- 中斷標誌位為JEOCIE
迴圈轉換模式
迴圈轉換模式則在這一次轉換結束後立馬啟動下一次轉換
模擬看門狗
用途:用於保證adc執行的穩定,是一個檢測系統
還沒看如何使用
DMA請求
用途:因為規則通道共用一個公共的規則通道資料暫存器(ADC_DR),故需要使用DMA來暫存資料,以防止多規則通道轉換資料時,ADC_DR暫存器的暫存資料被覆蓋掉
好處:
- 防止ADC_DR暫存器的資料被覆蓋掉
- DMA操作無需CPU干預,節省了CPU資源來做其他操作
ADC轉換時序
- adon給高電平脈衝,ADC上電
- 等待tSTAB時間,使ADC穩定
- adon給高電平脈衝,ADC開始轉換
- 等待轉換結束後,EOC位被設定,資料儲存在對應的資料暫存器中
- 軟體清除EOC位
- 開始下一次ADC轉換
ADC的低功耗
見文(還沒看):https://www.elecfans.com/d/897318.html
資料對齊
規則通道:
- 左對齊(右邊4位,置0)
- 右對齊(左邊4位,置0)
注入通道:
-
左對齊(左邊第一位SEXT;右邊3位,置0)
-
右對齊(左邊四位,SEXT位)
- SEXT位是擴充的符號位(怎麼用還不知道)
- 一般用右對齊吧,兩種通道的資料存放都是一樣的(除了0和SEXT位)
掃描模式
啟用掃描模式則可以按順序自動對所有的通道進行adc轉換(不需要cpu參與)
問:多個規則通道共用一個ADC_DR暫存器,那資料不會出現被覆蓋的情況嗎?
答:會的,但是可以透過使用DMA請求來避免資料被覆蓋的情況,每次EOC後,DMA控制器會把規則通道的轉換資料傳輸到SRAM中,注入通道則還是留在資料通道的暫存暫存器(ADC_JDRx)
校準
流程:
- 軟體設定ADC_CR2暫存器的CAL位
- tCAL時間過後,校準結束,CAL位硬體復位
- 校準碼被暫存ADC_DR中,然後被用於消除誤差
建議:
- 每次上電後進行一次校準
- 校準前,ADC處於關電狀態(ADON=‘0’)超過兩個ADC時鐘週期
注入通道管理
觸發注入:
- 觸發方式:透過外部觸發或設定ADC_CR2暫存器的ADON位
- 轉換流程:在規則通道轉換期間,外部觸發注入產生,則規則通道轉換被複位,進入注入通道序列;注入通道轉換完成後,回到剛剛被中斷的規則通道繼續轉換
- 注意點:觸發事件的間隔必須長於注入序列(防止注入通道沒轉換完,又產生一次觸發注入)
- 優點:實時性高(類中斷機制)
自動注入:
感覺有種把注入通道當成規則通道來用的感覺,因為沒用到注入通道的核心功能中斷
- 觸發方式:設定JAUTO位
- 轉換流程:規則通道轉換完成後,注入通道被自動轉換(規則通道和注入通道之間的轉換會有1~2個ADC時鐘間隔,具體看ADC時鐘預分頻係數,詳見手冊)
- 注意點:
- 此模式下禁止外部觸發
- 不能同時使用自動注入和間斷模式
- 優點:不需要外部觸發,使用簡單
雙ADC模式
雙adc模式可以使用兩個adc採集有關聯的資料(沒關聯直接用獨立模式就行咯)
注意點: 轉換配置為外部觸發時,一般只設定主adc為外部事件觸發,而從adc設定為軟體觸發
這樣的好處是可以的讓從adc在需要的時候觸發(因為兩個adc是有關聯的,主adc觸發可以聯動從adc觸發)
同步注入模式 && 同步規則模式
- 來自ADC1的外部觸發會同時給ADC2提供同步觸發
- 雙通道轉換結束,產生中斷
- 必須等兩個ADC的轉化都結束了才能進行下一次觸發,否則較短序列的ADC轉換可能會被重啟
快速交叉模式 && 慢速交叉模式
- ADC2先啟動,ADC1在 7 or 14 個週期後啟動
- 快速交叉模式需要設定CONT位,慢速交叉模式無需設定CONT位,因為它將連續轉換所選擇的規則通道
- 注意點:
- 應用程式必須確保使用交叉模式時,不能有注入通道的外部觸發產生
- 交叉模式只適用於規則通道,且通常為單通道