?
ADC簡介
分辨率及采樣轉換,可配置分辨率為12/10/8/6位的轉換,采樣周期支持廣范圍的配置
自校準,自帶校準功能以糾正數據偏移
基本模式,支持多種模式,不同模式可組合使用滿足多種應用
不同優先權的通道,普通通道與搶占通道具備不同的優先權
多種獨立的觸發源,包括TMR、EXINT、軟觸發等多種觸發選擇
數據后級處理,包括數據的對齊,搶占通道偏移量等多種處理
轉換中止,可軟件控制在ADC不掉電狀態下實現轉換中止
過采樣器,普通及搶占通道均支持過采樣
電壓監測,通過對轉換結果的判定來實現電壓監測
中斷及狀態事件,具備多種標志指示ADC狀態,且某些標志還具備中斷功能
多種轉換數據的獲取方式,包括DMA獲取、CPU獲取兩種方式實現轉換數據的讀取
聯動多ADC的主從模式,可設定同時、交錯、位移等多種組合模式,且支持單及雙從機選擇
圖1. ADC1框圖
ADC功能解析
時鐘及狀態
? 功能介紹
ADC的時鐘分為數字時鐘與模擬時鐘。其統一通過CRM_APB2EN的ADCxEN位使能。
數字時鐘:即PCLK2,經HCLK分頻而來,提供給數字部分使用。
模擬時鐘:即ADCCLK,經ADC預分頻器分頻而來,提供給模擬部分使用。
? 軟件接口
ADC時鐘使能,軟件由單獨的函數接口實現,其軟件實例如下:
?
當ADC時鐘使能后,軟件即可開始進行ADC的一些相關配置。
ADC預分頻設定,軟件由ADC公共部分結構體配置完成,其軟件實例如下:
此項實際用于設定ADC模擬部分的時鐘,其由HCLK分頻而來,故ADCCLK=HCLK/div 注意:
1)模擬部分的ADCCLK由HCLK分頻而來,其不可大于80MHz;
2)ADC數字部分掛在PCLK2上,為避免同步問題,ADCCLK頻率不可高于PCLK2;
3)ADC1、ADC2、ADC3都有自己獨立的時鐘使能位。ADC公共部分無獨立的時鐘使能位,其會跟隨任意ADCx時鐘使能而自動打開;
4)ADC模擬部分電源由ADC_CTRL2的ADCEN,其不受ADC的時鐘狀態影響。典型的,如果系統需要進入深度睡眠模式,如果不關閉ADCEN,此時ADC模擬器件將還會消耗電流;
5)ADC上電有一段等待時間,應用應該在判定到ADC的RDY?flag置位后再執行后續觸發等操作。 ?
分辨率及采樣轉換
? 功能介紹
ADC可隨意設定12、10、8、6位分辨率使用。 ADC可設定2.5、6.5、12.5、24.5、47.5、92.5、247.5、640.5個采樣周期。 ADC對通道數據的獲取由采樣和轉換兩個部分組成。 采樣先于轉換執行,采樣期間內選通需要轉換的通道,外部電壓對ADC內部采樣電容充電,將持續執行設定的采樣周期長度時間的充電。 采樣結束后就會自動開始轉換,ADC采用逐次逼近的轉換方式,可有效保障轉換數據的準確性。此轉換方式需要分辨率位數個ADCCLK的轉換時間來完成單通道的轉換,再結合數據處理,因此單個通道的整體轉換時間即
?
示例: CSPTx選擇6.5周期,CRSEL選擇10位,一次轉換需要6.5+10+0.5=17個ADCCLK周期。 ?
軟件接口
ADC分辨率設定,軟件由單獨的函數接口實現,其軟件實例如下:
?
注意:ADC的自校準只能在12位分辨率下進行,切分辨需安排在校準完成后執行。
ADC采樣周期設定,軟件由單獨的函數接口實現,其軟件實例如下:
注意: 不同通道可設定不同的采樣周期; 當采用中斷或輪詢方式獲取普通通道數據,為避免溢出,建議合理增大采樣周期; 為避免充電不充分導致轉換數據不準確,應用允許的條件下,建議合理增大采樣周期。 ?
自校準
? 功能介紹
ADC具備自校準能力,軟件可以執行自校準命令,透過自校準可以計算出一個校準值。不需要軟件干預,ADC會自動將該校準值反饋回ADC內部補償ADC基礎偏差,以保障轉換數據的準確性。 校準值有兩種獲取方式:
軟件下自校準命令,由硬件自動計算,產生的校準值保存在ADC->CALVAL寄存器內
軟件直接根據經驗值,手動設定校準值,該值同樣被保存在ADC->CALVAL寄存器內
自校準的軟件流程如下
在12位分辨率狀態下使能ADC
等待ADC的RDY標志置位
執行初始化校準命令并等待初始化校準完成
執行校準命令并等待校準完成
根據應用需求切換到期望配置的分辨率
等待ADC的RDY標志置位
執行完上述流程后,即可開始進行ADC的觸發轉換。
? 軟件接口
完整的校準及設定分辨率需由組合命令實現,依據校準值設定方式可區分如下兩種自校準方式,其軟件實例如下: ?
寫經驗值校準方式,其軟件實例如下:
?
注意: 校準值的存放不會置位OCCE標志,不會產生中斷或DMA請求; ADC的自校準只能在12位分辨率下進行,切分辨需安排在校準完成后執行。 ?
基本模式
? 1、功能介紹
序列模式
ADC支持序列模式設定,開啟序列模式后,每次觸發將序列中的通道依序轉換一次。 用戶于ADC_OSQx配置普通通道序列,普通通道從OSN1開始轉換;于ADC_PSQ配置搶占通道序列,搶占通道是從PSNx開始轉換(x=4-PCLEN)。 搶占通道轉換示例: ADC_PSQ[21:0]=10 00110 00101 00100 00011,此時掃描轉換順序為CH4、CH5、CH6,而不是CH3、CH4、CH5。
圖2. 序列模式
反復模式
ADC支持反復模式設定,開啟反復模式后,當檢測到觸發后就即會反復不斷地轉換普通通道組。
圖3. 反復模式+搶占自動轉換模式
分割模式
ADC支持分割模式設定。 對于普通通道組,分割模式可依據設定將通道組分割成長度較小的子組別。一次觸發將轉換子組別中的所有通道。每次觸發會依序選擇不同的子組別進行轉換。 對于搶占通道組,分割模式直接以通道為單位進行分割,一次觸發將轉換單個通道。每次觸發會依序選擇不同的通道進行轉換。
圖4. 分割模式
搶占自動轉換模式
ADC支持搶占自動轉換模式設定,開啟搶占自動轉換模式后,當普通通道轉換完成后,搶占通道將自動接續著轉換,而不需要進行搶占通道的觸發。
圖5. 搶占自動轉換模式
? ?
2、軟件接口
ADC序列模式和反復模式設定,由ADC基礎部分結構體配置完成,其軟件實例如下:
?
注意: 序列模式對普通及搶占通道組均有效; 反復模式僅對普通通道組有效,搶占通道組不具備反復模式功能; 反復模式與分割模式不可共用; 反復模式可與搶占自動轉換模式共用,將實現依次反復的轉換普通通道序列及搶占通道序列。 ADC分割模式設定,軟件由單獨的函數接口實現,其軟件實例如下:
?
注意: 分割模式對普通及搶占通道組均有效; 搶占通道組分割模式子組別長度不可設定,其固定為單個通道; 分割模式與反復模式、搶占自動轉換模式不可共用,普通通道與搶占通道的分割模式不可共用。 搶占自動轉換模式設定,軟件由單獨的函數接口實現,其軟件實例如下:
?
注意: 搶占自動轉換模式僅對搶占通道組有效; 搶占自動轉換模式與分割模式不可共用。 ?
不同優先權的通道
? 1、功能介紹
ADC設計有具備不同優先權的兩種通道組:普通通道組與搶占通道組。
普通通道組
通常用于執行常規的數據轉換。支持最多配置16個通道,轉換將按照設定的通道順序依次進行。其不具備搶占能力。
搶占通道組
通常用于執行相對緊急的數據轉換。支持最多配置4個通道,轉換將按照設定的通道順序依次進行。其具備搶占能力,即搶占通道組的轉換可以打斷正在執行的普通通道轉換,待搶占通道組轉換完畢后再恢復執行被打斷的普通通道組轉換。
? 2、軟件接口
普通通道組設定,軟件包括通道數量、通道數值、轉換順序、采樣周期的設定,其軟件實例如下:
?
搶占通道組設定,軟件包括通道數量、通道數值、轉換順序、采樣周期的設定,其軟件實例如下:
?
注意: 不同通道可以設定不同的采樣周期; 同一通道可以被反復編排進轉換序列進行轉換; 序列模式下,普通通道組從OSN1開始轉換,搶占通道組是從PSNx開始轉換(x=4-PCLEN)。 ?
多種獨立的觸發源
? 功能介紹
ADC支持多種觸發源,包含軟件寫寄存器觸發(ADC_CTRL2的OCSWTRG與PCSWTRG)以及外部觸發。外部觸發包含定時器觸發與引腳觸發,外部觸發可設定觸發極性(觸發極性可選擇禁止邊沿觸發、上升沿觸發、下降沿觸發或任意邊沿觸發)。 表1. 普通通道觸發源
?
表2. 搶占通道觸發源
? ?
軟件接口
軟件寫寄存器觸發設定,軟件由單獨的函數接口實現,其軟件實例如下:
?
在ADC Ready后,軟件即可執行adc_ordinary_software_trigger_enable(ADC1,TRUE);/adc_preempt_software_trigger_enable(ADC1,TRUE);來進行普通/搶占通道的觸發。 外部觸發設定,軟件由單獨的函數接口實現,其軟件實例如下:
?
在ADC Ready后,TMR1CH1的上升沿事件就會觸發普通通道組轉換,TMR3CH4的上升沿事件就會觸發搶占通道組轉換。 注意: 觸發間隔需要大于通道組轉換的時間,轉換期間發生的相同通道組的觸發會被忽略; 使用軟件寫寄存器觸發時,對應觸發極性必須選擇禁止邊沿觸發; 搶占通道轉換優先權最高,不管當前是否有普通通道轉換,其觸發后就會立即開始響應轉換; 普通觸發具備記憶功能,在搶占轉換時執行普通觸發,該觸發會被記錄并在搶占轉換完畢后響應; 多ADC的主從模式下,需要將從ADC的觸發極性選擇為禁止邊沿觸發。 ?
數據后級處理
? 1、功能介紹
ADC具備專有的數據寄存器,普通通道轉換完成后數據存儲于普通數據寄存器(ADC_ODT),搶占通道轉換完成后數據存儲于搶占數據寄存器x(ADC_PDTx)。數據寄存器內存儲的是經過處理后的數據。該處理包括數據對齊、搶占數據偏移。 數據對齊 分左對齊和右對齊。分辨率CRSEL為6位時,數據存儲方式以字節為基準擺放,其余皆以半字為基準擺放。
搶占數據偏移
搶占通道的數據會減去搶占數據偏移寄存器x(ADC_PCDTOx)內的偏移量,因此搶占通道數據有可能為負值,以SIGN作為符號。 圖6. 數據內容處理
? ?
2、軟件接口
數據對齊設定,軟件由ADC基礎部分結構體配置完成,其軟件實例如下:
?
搶占數據偏移設定,軟件由單獨的函數接口實現,其軟件實例如下:
? ?
轉換中止
? 功能介紹
ADC具備轉換中止功能。在ADC轉換過程中,用戶可利用ADC_CTRL2的ADABRT使ADC停止轉換。停止轉換后,轉換順序回歸第一個通道,用戶即可重新編排通道順序,再次觸發ADC將從頭開始執行新序列的轉換。 圖7. 轉換中止時序 ?
軟件接口
轉換中止設定,軟件由單獨的函數接口實現,其軟件實例如下:
?
注意: 轉換中止命令對普通及搶占通道轉換都有效; 轉換中止功能類似ADC重上電,但是轉換中止不會使ADC掉電,不存在ADC上電喚醒時間; 轉換中止的執行需要時間,在執行轉換中止命令后一定要等待ADABRT位被硬件清除后才可進行后續的觸發轉換。 ?
過采樣器
? 1、功能介紹
ADC具備過采樣功能。一次過采樣是透過轉換多次相同通道,累加轉換數據后作平均實現的。
由ADC_OVSP的OSRSEL選擇過采樣率,此位用來定義過采樣倍數;
由ADC_OVSP的OSSSEL選擇過采樣移位,此位用來定義平均系數。
若平均后數據大于16位,只取靠右16位數據,放入16位數據寄存器。 使用過采樣時,忽視數據對齊及搶占數據偏移的設定,數據一律靠右擺放。
表3. 最大累加數據與過采樣倍數及位移系數關系
普通通道過采樣被打斷后的恢復方式
普通通道過采樣中途被搶占通道轉換打斷后的恢復方式由OOSRSEL設定
OOSRSEL=0:接續模式。保留已累加的數據,再次開始轉換時將從打斷處轉換;
OOSRSEL=1:重轉模式。累加的數據被清空,再次開始轉換時重新開始該通道的過采樣轉換。
圖8. 普通過采樣被打斷后的恢復方式
普通通道過采樣觸發模式
普通通道過采樣的觸發模式由OOSTREN設定
OOSTREN=0:關閉觸發模式。通道的所有過采樣轉換僅需一次觸發;
OOSTREN=1:開啟觸發模式。通道的每個過采樣轉換均需進行觸發。
此模式下,中途被搶占通道觸發打斷后,須重新觸發普通通道才會恢復轉換普通通道過采樣。
圖9. 普通過采樣觸發模式
搶占通道過采樣
搶占過采樣可與普通過采樣同時使用,也可分別使用。搶占過采樣不影響到普通過采樣的各種模式。
圖10. 搶占自動轉換下的過采樣模式
? ?
2、軟件接口
過采樣率、過采樣移位及過采樣使能設定,軟件由單獨的函數接口實現,其軟件實例如下:
?
普通通道過采樣被打斷后的恢復方式設定,軟件由單獨的函數接口實現,其軟件實例如下:
?
普通通道過采樣觸發模式設定,軟件由單獨的函數接口實現,其軟件實例如下:
? ?
電壓監測
? 功能介紹
ADC具備電壓監測功能。用以監控輸入電壓與設定閾值的關系。 當轉換結果大于高邊界ADC_VMHB[11:0]寄存器或是小于低邊界ADC_VMLB[11:0]寄存器時,電壓監測超出標志VMOR會置起。 透過VMSGEN選擇對單一通道或是所有通道監測。對單一通道監測的話,由VMCSEL配置通道。 ?
軟件接口
監測單一通道,軟件由單獨的函數接口實現,其軟件實例如下:
?
監測所有通道,軟件由單獨的函數接口實現,其軟件實例如下:
?
注意: 電壓監測一律以轉換的原始數據與12位邊界寄存器做比較,無視分辨率、搶占偏移量與數據對齊的設定; 若使用過采樣器,則是以ADC_VMHB[15:0]與ADC_VMLB[15:0]完整的16位寄存器與過采樣數據作比較。 ?
中斷及狀態事件
? 功能介紹 ADC含有多種中斷及狀態標志。應用需要結合這些標志進行程序設計。
ADC準備就緒標志(RDY)
指示ADC狀態,只讀位,軟件不可清除,無產生中斷能力。 ADC上電完畢后會置位,只有RDY標志置位后,才可進行校準及觸發轉換。
普通通道轉換溢出標志(OCCO)
指示ADC轉換數據溢出,標志由軟件對其自身寫零清除,有產生中斷能力。 無獨立的溢出檢測使能位,在使能DMA傳輸或者EOCSFEN=1時有效,當上一筆轉換數據未被讀走,下一筆轉換數據已產生時就會置位此標志。標志清除后的轉換恢復分如下兩種情況: 1)非組合模式下,此標志置位后,當前轉換停止,轉換序列不被清零,因此可不用復位ADC, 直接清除標志再次觸發轉換即可; 2)組合模式下,此標志置位后,當前轉換停止,轉換序列同樣保持,但由于此時可能已丟失同步規則,因此需要復位各ADC,然后重新進行觸發轉換。
普通通道轉換開始標志(OCCS)
指示普通通道轉換開始,由軟件對其自身寫零清除,無產生中斷能力。
搶占通道轉換開始標志(PCCS)
指示搶占通道轉換開始,由軟件對其自身寫零清除,無產生中斷能力。
搶占通道組轉換結束標志(PCCE)
指示搶占通道組轉換完成,由軟件對其自身寫零清除,有產生中斷能力。 在搶占通道組轉換完成后置位,通常應用使用此標志來讀取搶占通道組的轉換數據。
普通通道轉換結束標志(OCCE)
指示普通通道轉換完成,由軟件對其自身寫零或讀ODT寄存器清除,有產生中斷能力。 在普通通道轉換完成后置位,應用可使用此標志來讀取普通通道的轉換數據(EOCSFEN=1)。 注意:DMA讀取轉換數據會同步清除OCCE標志,因此在使用DMA時禁止再使用OCCE標志。
電壓監測超出范圍標志(VMOR)
指示通道電壓超出設定閾值,由軟件對其自身寫零清除,有產生中斷能力。 在ADC的通道轉換數據超過設定閾值后置位,通常應用使用此標志來監控通道電壓。 ?
軟件接口
中斷使能設定,軟件由單獨的函數接口實現,其軟件實例如下:
?
標志狀態獲取,軟件由單獨的函數接口實現,其軟件實例如下:
?
標志狀態清除,軟件由單獨的函數接口實現,其軟件實例如下:
?
注意: 435的三個ADC共用一個中斷向量; 通用狀態寄存器內有每個ADC的狀態標志的映像,此映像為只讀,不可通過映像來清除標志。 ?
多種轉換數據的獲取方式
? 1、功能介紹
ADC具備多種轉換數據的獲取方式。不同通道類型、不同組合模式可支持的數據獲取方式不同。
CPU讀取搶占通道數據
搶占通道不具備DMA能力,因此不管什么組合模式,搶占通道數據均由CPU讀取搶占數據寄存器x(ADC_PDTx)獲得。
CPU讀取普通通道數據(非組合模式)
只適用于非組合模式,軟件設置ADC_CTRL2的EOCSFEN位讓每次普通數據寄存器更新時置位OCCE標志,軟件通過OCCE標志讀取轉換數據。
DMA讀取普通通道數據(非組合模式)
非組合模式下,普通通道數據存儲于 ADC 自己獨立的數據寄存器中。軟件設置OCDMAEN及OCDRCEN位讓每次普通數據寄存器更新時產生DMA請求,DMA在每次收到DMA請求時讀取轉換數據。
DMA讀取普通通道數據(組合模式)
組合模式下,普通通道數據會共同存儲于通用普通數據寄存器中。存儲方式透過ADC_CCTRL的MSDMASEL位配置,提供5種模式。只要MSDMASEL不為0,就會在每次數據備齊時使用ADC1的DMA通道請求DMA搬運數據。
表4. 主從組合模式的DMA模式
?
圖11. DMA模式與ADC模式對應關系
? ?
2、軟件接口
CPU讀取搶占通道數據,軟件由單獨的函數接口實現,其軟件實例如下:
?
CPU讀取普通通道數據(非組合模式),軟件由單獨的函數接口實現,其軟件實例如下:
?
DMA讀取普通通道數據(非組合模式),軟件由單獨的函數接口實現,其軟件實例如下:
?
DMA讀取普通通道數據(組合模式),軟件由單獨的函數接口實現,其軟件實例如下:
?
注意: 使用CPU讀取普通轉換數據時,為避免溢出,通道采樣周期需要足夠大; 三個ADC共用一個中斷向量,故中斷服務函數一定要簡潔,以避免因中斷無法及時響應而導致數據溢出; 組合模式下,不可使用CPU讀取普通通道轉換數據; 組合模式下,一定要按照可支持的對應關系選用DMA模式。 ?
聯動多ADC的主從模式
? 功能介紹 ADC主從模式即通過觸發主機來聯動從機進行通道轉換,并且將通用普通數據寄存器作為獲取主從ADC普通通道數據的單一接口。 單從機主從模式以ADC1作為主機,ADC2作為從機,ADC3獨立動作。雙從機主從模式以ADC1作為主機,ADC2與ADC3作為從機。
圖12. 主從模式的ADC框圖
同時模式
同時模式可用于普通/搶占/普通搶占組合。配置同時模式后,可觸發主機,使主機與從機同時轉換各自的通道。在此模式下,必須使用相同的采樣時間以及相同的序列長度,以避免主從之間失去同步,遺失數據。
圖13. 普通同時模式
?
圖14. 搶占同時模式
?
注意: 同時模式下,需要禁止來自從機的觸發; 同時模式下,觸發間隔需要大于任意通道組的轉換周期; 同樣的通道不可同時被多個ADC采樣,因此禁止將相同通道安排在不同ADC的同樣序列位置。
交錯觸發模式
交錯觸發模式適用于搶占通道組,可單獨使用也可與普通同時模式組合使用。配置搶占交錯觸發模式后,可多次觸發主機的搶占通道,促使主從ADC輪流轉換搶占通道組。
圖15. 搶占交錯觸發模式
位移模式
位移模式適用于普通通道組,此模式只可單獨使用,不能與搶占通道組合使用。配置普通位移模式后,可觸發主機普通通道,使各ADC之間自動在普通通道的轉換上時序位移。 位移長度可由軟件經ADC_CCTRL寄存器中的ASISEL位進行設定。 此模式下,硬件會保證不同ADC間的采樣間隔至少2.5個ADCCLK。當軟件設定的位移長度無法滿足這個條件時,軟件設定將會變得無效。因此利用這個特性,可以將相同通道安排在不同ADC的同樣序列位置。
圖16. 普通位移模式
?
圖17. 使用DMA模式2時的位移轉換
?
注意: 位移模式下禁止搶占通道觸發、禁止從機的普通通道觸發 ? 軟件接口 聯動多ADC的主從模式設定,軟件由公共部分結構體配置完成,其軟件實例如下:
?
注意: 為避免主從間失去同步,主從機必須配置相同分辨率; 組合模式下,一定要按照可支持的對應關系選用DMA模式; 若有同時使用多個ADC低解析度轉換的需求,建議使用主從模式搭配DMA1或DMA2。 ?
ADC配置解析
? 以下對ADC的配置流程及數據獲取方法進行說明。 ?
ADC配置流程
? ADC的配置一般包括如下內容
外部觸發源配置
ADC外部觸發源有TMR或EXINT,其配置無特殊性,參考普通的TMR或EXINT配置即可。 注意:此處僅是觸發源的配置,觸發源的使能需在ADC全部配置完畢后才可進行。
DMA配置使能
ADC普通通道轉換數據可通過DMA傳輸,若應用需要DMA傳輸時,需提前進行DMA的初始化配置,其配置無特殊性,參考普通的DMA配置即可。
開啟ADC數字時鐘
開啟ADC數字時鐘,允許進行相關功能配置。
ADC公共部分結構體配置
包括主從模式、ADC分頻、主從模式的DMA模式、DMA請求接續使能、位移模式位移長度、內部溫度傳感器及Vintrv、Vbat相關配置。
主從模式
依據從機數量、通道類型、組合類型進行選擇,支持多達13種模式。
ADC分頻
設定ADC模擬部分的時鐘,其由HCLK分頻而來,可設定2~17中的任意一種分頻。
主從模式的DMA模式
需要結合主從模式進行選擇,支持多達5種模式,搶占組合模式下需禁止DMA模式
DMA請求接續使能
設定在傳輸完DMA設定個數數據后,普通通道轉換完畢是否再產生DMA請求。
位移模式位移長度
設定位移模式下相鄰ADC間的采樣間隔時間,可設定5~20個ADCCLK中的任意一種。
內部溫度傳感器及Vintrv
使能內部溫度傳感器及內部參考電壓,其分別連接到ADC1的CH16和CH17。
Vbat
使能電池電壓,電池電壓經除4電路后連接到了ADC1的CH18。
注意:用ADC采集VBAT電壓,當使能VBATEN后,VBAT會一直耗電,如果應用對功耗敏感,建議只在VBAT采樣時才打開,采樣結束后關閉。
ADC基礎部分結構體配置
包括序列模式、反復模式、數據對齊、普通轉換序列長度。
序列模式
不論普通還是搶占組,只要配置有多個通道,就需要開啟序列模式。
反復模式
若應用需要周期性的觸發轉換時,就需要關閉反復模式,不然周期性的觸發將變得無效。 當應用不想周期性的觸發,而期望單次觸發后就不停的轉換設定通道組時需開啟反復模式。
數據對齊
設定轉換數據靠右或是靠左對齊放置于數據寄存器。
普通轉換序列長度
可設定1~16中的任何一個長度,指示單個普通序列包含的通道個數,需與實際普通通道序列個數一致。
普通通道配置
包含通道配置、觸發配置、數據傳輸方式。
通道配置
由轉換順序、通道值、采樣周期的設定組成。其中不同順序可配置相同通道值。
觸發配置
由觸發源和觸發邊沿檢測的設定組成。若使用軟件觸發時,需要禁止觸發邊沿檢測。
數據傳輸方式
可設定CPU或DMA傳輸轉換數據。在主從組合模式下,需禁止此項配置。
搶占通道配置
包含通道個數、通道配置、觸發配置。
通道個數
可設定1~4中的任何一個長度,指示單個搶占序列包含的通道個數,需與實際搶占通道序列個數一致。
通道配置
由轉換順序、通道值、采樣周期的設定組成。其中不同順序可配置相同通道值。
觸發配置
由觸發源和觸發邊沿檢測的設定組成。若使用軟件觸發時,需要禁止觸發邊沿檢測。
特殊模式配置(非必需)
分割模式
包括每次觸發轉換的普通通道個數、普通通道分割模式使能、搶占通道分割模式使能。
搶占自動轉換模式
用于設定普通組轉換結束后的搶占通道組自動轉換使能。
過采樣
包括過采樣率、過采樣移位、普通過采樣觸發模式使能、普通過采樣重轉模式選擇、普通及搶占過采樣使能的設定。
中斷配置
使能對應中斷,包括溢出中斷、普通通道轉換結束中斷、搶占通道組轉換結束中斷、電壓檢測超過范圍中斷中的一個或多個。
ADC上電
使能ADC讓ADC上電,由于上電需要穩定時間,因此ADC上電后需等待ADC的RDY標志處于置位后才可進行后續動作。
ADC校準
為保障ADC轉換數據準確,在ADC上電后需進行校準。其包含: A/D初始化校準、等待初始化校準完成、A/D校準、等待校準完成。
ADC分辨率調整
在ADC校準完畢后,即可進行分辨率切換。切換分辨率后,軟件需要等待ADC的RDY標志處于置位后才可進行后續動作。 至此,ADC的初始化配置就算全部完成。隨后,可通過軟件或使能硬件觸發源進行觸發轉換。 ?
ADC數據獲取方法
? ADC支持多種數據獲取方法,通常可概括為如下幾種
CPU獲取搶占通道數據
搶占通道數據不具備DMA能力,只能透過CPU獲取。推薦使用中斷獲取,方法如下 1) 搶占通道組轉換結束中斷使能; 2) 搶占通道組轉換結束中斷函數內將轉換數據緩存進數組內; 3) 其他應用邏輯內透過數組內的數據進行數據的后續算法處理。
CPU讀取普通通道數據
435額外支持通過CPU讀取普通通道數據。為保障數據讀取的實時性,同樣推薦使用中斷獲取,方法如下 1) 軟件設置ADC_CTRL2的EOCSFEN位讓每次數據寄存器更新時置位OCCE標志; 2) 普通通道組轉換結束中斷使能; 3) 普通通道組轉換結束中斷函數內將轉換數據緩存進數組內; 4) 其他應用邏輯內透過數組內的數據進行數據的后續算法處理。
DMA讀取普通通道數據(單buffer模式)
普通通道數據具備DMA能力。為避免軟件耗時,可直接采用DMA讀取轉換數據,方法如下 1) 初始化并使能DMA; 2) 使能ADC的DMA模式; 3) 在DMA傳輸完成中斷函數內獲取DMA的buffer數據; 4) 其他應用邏輯內透過buffer數據進行數據的后續算法處理。
DMA讀取普通通道數據(雙buffer模式)
435的EDMA支持雙buffer模式。為避免數據處理不及時,可嘗試使用雙buffer緩存數據,方法如下 1) 初始化EDMA成雙buffer模式并使能EDMA; 2) 使能ADC的DMA模式,使能普通通道數據的DMA請求接續; 3) 在EDMA傳輸完成中斷函數內交叉獲取EDMA的buffer數據; 4) 其他應用邏輯內透過獲取到的buffer數據進行數據的后續算法處理。 ?
案例 ADC過采樣
功能簡介
? ADC支持過采樣功能,在一些要求轉換數據準確性的場合,可以使用過采樣來實現。 本例將同時使用普通及搶占通道組的過采樣。設定8倍過采樣,保持12位分辨率。 ?
資源準備
? 1) 硬件環境 對應產品型號的AT-START BOARD PA4 and PA7——3.3V PA5 and PB0——GND PA6 and PB1——1.5V左右 2) 軟件環境 projectat_start_f4xxexamplesadcordinary_preempt_oversampling ?
軟件設計
? 1) 配置流程
配置ADC使用的GPIO
配置用于普通通道數據傳輸的DMA
ADC相關配置設定
軟件觸發轉換
獲取轉換數據
2) 代碼介紹
GPIO配置函數代碼
DMA配置函數代碼
ADC配置函數代碼
中斷服務函數代碼
main函數代碼
實驗效果
? 可通過串口打印查看實現效果,最終串口打印的轉換數據如下。 圖18. ADC過采樣實驗結果
? ?
案例 ADC電壓監測
功能簡介
? ADC支持電壓監測功能,在需要監測通道電壓時,可參考本例進行設計。 本例將固定監控普通通道組的Channel5,監控閾值為0~Vref+/3。 ?
資源準備
? 1) 硬件環境 對應產品型號的AT-START BOARD PA4——3.3V PA5——0V PA6——1.5V左右 2) 軟件環境 projectat_start_f4xxexamplesadcvoltage_monitoring ?
軟件設計
? 1) 配置流程
配置ADC使用的GPIO
配置用于普通通道數據傳輸的DMA
ADC相關配置及電壓監測設定
普通通道軟觸發
獲取轉換數據
2) 代碼介紹
GPIO配置函數代碼
DMA配置函數代碼
ADC配置函數代碼
中斷服務函數代碼
main函數代碼
實驗效果
? 可通過串口打印查看實現效果,測試過程中隨機將Channel5外接1.5V,最終串口打印信息如下。 通過打印信息可以看到:有實際監測到Channel5超過監控閾值,且記錄到的實際監控值為1.5V。 圖19. ADC電壓監測實驗結果 ? ?
案例 ADC雙Buffer
功能簡介
? EDMA具備雙緩沖模式功能,ADC配合這個功能使用,可有效提高數據轉換效率。 本案例將以該EDMA的雙緩沖功能為基礎,示范如何配置使用ADC的快速轉換。 ?
資源準備
? 1) 硬件環境 對應產品型號的AT-START BOARD PA4——3.3V PA5——0V PA6——1.5V左右 2) 軟件環境 projectat_start_f4xxexamplesadcedma_double_buffer ?
軟件設計
? 1) 配置流程
配置ADC使用的GPIO
配置用于普通通道數據傳輸的DMA
ADC相關配置及設定
普通通道軟觸發
獲取轉換數據
2) 代碼介紹
GPIO配置函數代碼
DMA配置函數代碼
ADC配置函數代碼
中斷服務函數代碼
main函數代碼
實驗效果
? 可通過串口打印查看實現效果,如下圖所示,ADC轉換數據被硬件循環的存儲到EDMA設定的兩個buffer內了。 圖20. ADC電壓監測實驗結果
案例 ADC DMA模式1
功能簡介
? ADC主從組合模式下的普通通道轉換數據需經DMA傳輸。DMA支持多種模式,不同模式數據的傳輸規則存在明顯差異。 當選擇不適用的DMA模式傳輸轉換數據時,會因傳輸不及時導致數據溢出等問題。因此應用中ADC主從組合模式與DMA模式需要按照RM要求搭配使用。 DMA模式1適用ADC組合模式如下: 普通同時模式(單從機)、普通位移模式(單從機)、普通同時模式(雙從機)、普通位移模式(雙從機)本案例將以“DMA模式1+普通同時模式(雙從機)”為基礎進行使用示范。 ?
資源準備
? 1) 硬件環境 對應產品型號的AT-START BOARD PA4 and PA7 and PC0——3.3V PA5 and PB0 and PC2——GND PA6 and PB1 and PC3——1.5V左右 2) 軟件環境 projectat_start_f4xxexamplesadccombine_mode_ordinary_smlt_twoslave_dma1 ?
軟件設計
? 1) 配置流程
配置ADC使用的GPIO
配置用于觸發的TMR(TMR1_TRGOUT2 event)
配置用于普通通道數據傳輸的DMA
ADC相關配置及設定
等待觸發完畢后關閉觸發TMR
獲取轉換數據
2) 代碼介紹
GPIO配置函數代碼
TMR配置函數代碼
DMA配置函數代碼
ADC配置函數代碼
中斷服務函數代碼
main函數代碼
實驗效果
? 可通過串口打印查看實現效果,最終串口打印的轉換數據如下。 ADC轉換數據以半字為單位進行傳輸,傳輸順序為: ADC1第一個轉換通道; ADC2第一個轉換通道; ADC3第一個轉換通道; ADC1第二個轉換通道; ADC2第二個轉換通道; ADC3第二個轉換通道; ADC1第三個轉換通道; ADC2第三個轉換通道; ADC3第三個轉換通道; ADC1第一個轉換通道……
圖21. ADC DMA模式1實驗結果
案例 ADC DMA模式2
功能簡介
? ADC主從組合模式下的普通通道轉換數據需經DMA傳輸。DMA支持多種模式,不同模式數據的傳輸規則存在明顯差異。 當選擇不適用的DMA模式傳輸轉換數據時,會因傳輸不及時導致數據溢出等問題。因此應用中ADC主從組合模式與DMA模式需要按照RM要求搭配使用。 DMA模式2適用ADC組合模式如下: 普通同時模式(單從機)、普通位移模式(單從機)、普通位移模式(雙從機) 本案例將以“DMA模式2+普通同時模式(單從機)”為基礎進行使用示范。 ?
資源準備
? 1) 硬件環境 對應產品型號的AT-START BOARD PA4 and PA7——3.3V PA5 and PB0——GND PA6 and PB1——1.5V左右 2) 軟件環境 projectat_start_f4xxexamplesadccombine_mode_ordinary_smlt_oneslave_dma2 ?
軟件設計
? 1) 配置流程
開ADC使用的GPIO配置
配置用于普通通道數據傳輸的DMA
ADC相關配及設定
普通通道軟觸發
獲取轉換數據
2) 代碼介紹
GPIO配置函數代碼
DMA配置函數代碼
ADC配置函數代碼
中斷服務函數代碼
main函數代碼
實驗效果
? 可通過串口打印查看實現效果,最終串口打印的轉換數據如下。 ADC轉換數據以字為單位進行傳輸,傳輸順序為: (ADC2第一個轉換通道<<16)|ADC1第一個轉換通道; (ADC2第二個轉換通道<<16)|ADC1第二個轉換通道; (ADC2第三個轉換通道<<16)|ADC1第三個轉換通道; (ADC2第一個轉換通道<<16)|ADC1第一個轉換通道……
圖22. ADC DMA模式2實驗結果
? ?
案例 ADC DMA模式3
功能簡介
? ADC主從組合模式下的普通通道轉換數據需經DMA傳輸。DMA支持多種模式,不同模式數據的傳輸規則存在明顯差異。 當選擇不適用的DMA模式傳輸轉換數據時,會因傳輸不及時導致數據溢出等問題。因此應用中ADC主從組合模式與DMA模式需要按照RM要求搭配使用。 DMA模式3適用ADC組合模式如下: 6/8位分辨率的普通同時模式(單從機)、6/8位分辨率的普通位移模式(單從機)、6/8位分辨率的普通位移模式(雙從機) 本案例將以“DMA模式3+8位分辨率的普通位移模式(雙從機)”為基礎進行使用示范。 ?
資源準備
? 1) 硬件環境 對應產品型號的AT-START BOARD PA4——3.3V PA7——GND PC0——1.5V左右 2) 軟件環境 projectat_start_f4xxexamplesadccombine_mode_ordinary_shift_twoslave_dma3 ?
軟件設計
? 3) 配置流程
配置ADC使用的GPIO
配置用于觸發的TMR(TMR1_TRGOUT event)
配置用于普通通道數據傳輸的DMA
ADC相關配置及設定
等待觸發完畢后關閉觸發TMR
獲取轉換數據
4) 代碼介紹
GPIO配置函數代碼
TMR配置函數代碼
DMA配置函數代碼
ADC配置函數代碼
中斷服務函數代碼
main函數代碼
實驗效果
? 可通過串口打印查看實現效果,最終串口打印的轉換數據如下。 ADC轉換數據以半字為單位進行傳輸,傳輸順序為: (ADC2的轉換通道<<8)|ADC1的轉換通道; (ADC1的轉換通道<<8)|ADC3的轉換通道; (ADC3的轉換通道<<8)|ADC2的轉換通道; (ADC2的轉換通道<<8)|ADC1的轉換通道……
圖23. ADC DMA模式3實驗結果
? ?
案例 ADC DMA模式4
功能簡介
? ADC主從組合模式下的普通通道轉換數據需經DMA傳輸。DMA支持多種模式,不同模式數據的傳輸規則存在明顯差異。 當選擇不適用的DMA模式傳輸轉換數據時,會因傳輸不及時導致數據溢出等問題。因此應用中ADC主從組合模式與DMA模式需要按照RM要求搭配使用。 DMA模式4適用ADC組合模式如下: 6/8位分辨率的普通同時模式(雙從機)、6/8位分辨率的普通位移模式(雙從機) 本案例將以“DMA模式4+8位分辨率的普通位移模式(雙從機)”為基礎進行使用示范。 ?
資源準備
? 1) 硬件環境 對應產品型號的AT-START BOARD PA4——3.3V PA7——GND PC0——1.5V左右 2) 軟件環境 projectat_start_f4xxexamplesadccombine_mode_ordinary_shift_twoslave_dma4 ?
軟件設計
? 1) 配置流程
配置ADC使用的GPIO
配置用于觸發的TMR(TMR1_TRGOUT event)
配置用于普通通道數據傳輸的DMA
ADC相關配置及設定
等待觸發完畢后關閉觸發TMR
獲取轉換數據
2) 代碼介紹
GPIO配置函數代碼
TMR配置函數代碼
DMA配置函數代碼
ADC配置函數代碼
中斷服務函數代碼
main函數代碼
實驗效果
? 可通過串口打印查看實現效果,最終串口打印的轉換數據如下。 ADC轉換數據以字為單位進行傳輸,傳輸順序為: (ADC3的轉換通道<<16)|(ADC2的轉換通道<<8)|ADC1的轉換通道; (ADC3的轉換通道<<16)|(ADC2的轉換通道<<8)|ADC1的轉換通道…… 圖24. ADC DMA模式4實驗結果 ? ?
案例 ADC DMA模式5
功能簡介
? ADC主從組合模式下的普通通道轉換數據需經DMA傳輸。DMA支持多種模式,不同模式數據的傳輸規則存在明顯差異。 當選擇不適用的DMA模式傳輸轉換數據時,會因傳輸不及時導致數據溢出等問題。因此應用中ADC主從組合模式與DMA模式需要按照RM要求搭配使用。 DMA模式5適用ADC組合模式如下: 普通同時模式(雙從機)、普通位移模式(雙從機) 本案例將以“DMA模式5+普通同時模式(雙從機)”為基礎進行使用示范。 ?
資源準備
? 1) 硬件環境 對應產品型號的AT-START BOARD PA4 and PA7 and PC0——3.3V PA5 and PB0 and PC2——GND PA6 and PB1 and PC3——1.5V左右 2) 軟件環境 projectat_start_f4xxexamplesadccombine_mode_ordinary_smlt_twoslave_dma5 ?
軟件設計
? 1) 配置流程
配置ADC使用的GPIO
配置用于觸發的TMR(TMR1_CH1 event)
配置用于普通通道數據傳輸的DMA
ADC相關配置及設定
等待觸發完畢后關閉觸發TMR
獲取轉換數據
2) 代碼介紹
GPIO配置函數代碼
TMR配置函數代碼
DMA配置函數代碼
ADC配置函數代碼
中斷服務函數代碼
main函數代碼
實驗效果
? 可通過串口打印查看實現效果,最終串口打印的轉換數據如下。 ADC轉換數據以字為單位進行傳輸,傳輸順序為: (ADC2第一個轉換通道<<16)|ADC1第一個轉換通道; ADC3第一個轉換通道; (ADC2第二個轉換通道<<16)|ADC1第二個轉換通道; ADC3第二個轉換通道; (ADC2第三個轉換通道<<16)|ADC1第三個轉換通道; ADC3第三個轉換通道 (ADC2第一個轉換通道<<16)|ADC1第一個轉換通道…… 圖25. ADC DMA模式5實驗結果
案例 ADC偵測Vref電壓
功能簡介
? 實際應用場景中,受外部電路等因素影響,ADC的模擬參考電壓可能出現波動,導致ADC轉換結果出現失真。當無法優化硬件時,可嘗試如下解決辦法。 ADC通道ADC1_IN17連接到了MCU的內部參考電壓,該內部參考電壓是經LDO輸出的穩定的1.2V電壓值。故可通過ADC1_IN17的轉換數據來反推當前的實際模擬參考電壓值。再以獲取的模擬參考電壓進行ADC轉換通道數據的計算。 本例將示例如何以ADC1_IN17的轉換結果來反推當前的模擬參考電壓值。 ?
資源準備
? 1) 硬件環境: 對應產品型號的AT-START BOARD 2) 軟件環境 projectat_start_f4xxexamplesadccurrent_vref_value_check ?
軟件設計
? 1) 配置流程
配置ADC使用的GPIO
配置用于普通通道數據傳輸的DMA
ADC相關配置及設定
普通通道軟觸發
獲取轉換數據反推當前Vref值
2) 代碼介紹
DMA配置函數代碼
ADC配置函數代碼
中斷服務函數代碼
main函數代碼
實驗效果
? 可通過串口打印查看實現效果,測試未獨立外接Vref,并使用AT-Link供電,可以看到實際Vref電壓固定保持3.32V左右。 圖26. ADC偵測Vref電壓實驗結果 ? ? ? ?
審核編輯:湯梓紅
評論
查看更多