亚洲欧美国产动漫综合_91久久夜色精品国产免费_日韩国产精品亚洲经典_茄子人成年短视频_女教师的一级毛片_亞洲高清毛片一區二區_黄色三级视频午夜_日韩欧美成人大片中文字幕

登錄 | 注冊 退出

英飛凌Aurix2G TC3XX EVADC模塊詳解

TechLink汽車軟件 2024-07-18

英飛凌Aurix2G TC3XX DMA模塊詳解

本文主要介紹Infineon Aurix2G TC3XX系列芯片EVADC模塊硬件原理,以及MCAL相關配置,和部分代碼示例。

1 模塊介紹

對于汽車芯片來說,模數轉換(Analog Digital Conversion,ADC)是一個必不可少的功能,無論是功能安全的電壓監控,還是板載傳感器的信號交互,都離不開ADC模塊。
Infineon Aurix2G TC3XX中有兩個ADC模塊,一個是DSADC,該模塊轉換速度快,主要為了配合旋變控制器進行電機控制;另一個就是本文要介紹的增強型多功能模數轉換器(Enhanced Versatile Analog-to-Digital Converter,EVADC),采用逐次逼近式轉換原理進行模數轉換。
所謂逐次逼近式轉換,就是采用逐次逼近轉換寄存器(Successive Approximation Register,SAR)來實現的,當開始采樣時,將SAR寄存器的最高位置1,其余位清零,并由DAC(Digital-Analog Converter)輸出與該值匹配的電壓,與輸入電壓進行比較,如果輸入電壓大于該電壓,則保留最高位,否則最高位清零;然后從次高位依次向最低位,循環這個反饋調節,直到最低位比較完畢,此時得到的SAR寄存器值就是采樣值。我們假設SAR的位寬為N,此時的電壓值為Vin=VREF*SAR/2^N,采樣誤差為Verr=VREF/2^N。位寬越高則精度越高,但同時也意味著轉換時間越長。

2 功能介紹

2.1 模塊總覽

EVADC模塊內部有多個硬件轉換單元,每個單元都包含采樣、轉換模塊,能夠獨立進行AD轉換。每個硬件轉換單元可服務多個通道,這些通道由多路連接器連接到轉換單元上,用戶可靈活配置每個轉換單元的轉換通道。

每個硬件轉換單元都是獨立工作的,它所包含的通道可靈活進行組合,也就是我們常說的Adc Group。

EVADC模塊包含三個簇,每個簇有多個硬件轉換單元,也就是按特性分為三組:

Primary converter cluster:主轉換簇,配備8:1多路選擇器,8階段轉換序列,最低0.5μs轉換時長;

Secondary converter cluster:次轉換簇,配備16:1多路選擇器,16階段轉換序列,最低1μs轉換時長;

Fast compare cluster:快速比較簇,單通道,更新速率最快0.2μs;

ADC模塊的總時鐘來源于fADC,除了用于ADC模塊的轉換時鐘源以外,還可以用于仲裁、不同單元的同步等功能。每個硬件轉換單元有獨立的時鐘分頻器DIVA(GxANCFG.DIVA),用于分出轉換模塊使用的時鐘頻率fADCI。計算公式為fADCI=fADC/(DIVA+1)。fADCI時鐘頻率一般為20MHz~40MHz,不宜太高,否則噪聲過大。

fSPB時鐘用于CPU對ADC模塊的寄存器訪問時鐘。

硬件轉換單元可以設置4種轉換模式,通過單元內部的GxARBCFG.ANONS寄存器決定:

ANONS = 11b : Normal Operation,普通模式,硬件轉換單元持續處于工作狀態,出現轉換請求就能夠立刻執行;

ANONS = 10b: Fast Standby mode,待機快速模式,當沒有轉換請求時,硬件單元會進入休眠模式,當出現轉換請求時會被自動喚醒,喚醒的延時大約為1μs;但能夠降低功耗;

ANONS = 01b: SlowStandby mode,待機慢速模式,當沒有轉換請求時,硬件單元會進入休眠模式,當出現轉換請求時會被自動喚醒,喚醒的延時大約為5μs;但最大程度降低功耗;

ANONS = 00b: Converter switched Off,關機模式,復位或啟動之后默認模式,轉換請求之前需要先設置ANONS以離開關機模式。

以上四種模式中有三種工作模式,普通模式是我們最常用也是最簡單的模式。如果系統對功耗有較為嚴格的要求,可以考慮后續兩種模式,但要充分衡量系統對轉換實時性的要求。如果要求采樣頻率僅為毫秒級,則結合GTM等定時器進行持續定時觸發即可。

2.2 ADC kernel 硬件轉換單元結構

我們來看單個硬件轉換單元,它的功能框圖如下圖所示。

它的外部連接主要有以下部分:

Analog reference ground VAGND:ADC參考GND;

Analog reference voltage VAREF:ADC參考電壓,也是ADC采樣的量程;

Analog input channels CHx:ADC輸入通道,也就是被測源;

Extrn.multiplexer control EMUX:多路復用控制器,配合外部復用開關使用,一般很少使用;

它的內部主要有以下幾個模塊:

Request Control:請求控制器,主要負責處理轉換請求,仲裁等;

AD Converter:AD轉換器,主要負責逐次逼近轉換的實現;

Input Channel Selection:輸入選擇器(途中的通道輸入連接處),用于實現通道組合,也就是我們說的Adc Group;

Conversion Control:轉換控制器,主要負責轉換模式的設置,如濾波、預充等;

Result Handling:結果處理器;

Interrupt Generation:中斷發生單元,主要用于向IR模塊產生中斷信號;

當軟件或者硬件向一個EVADC模塊發送請求,由請求控制器進行仲裁和處理,然后由轉換控制器根據配置來控制對應的通道轉換,然后由AD轉換器進行AD轉換,最終結果輸入到結果處理器中,并通過中斷發生單元根據對應的事件觸發中斷。

2.2.1 Request Control

下面我們依次介紹ADC硬件轉換單元中的模塊,首先是請求控制器Request Control。

每個硬件轉換單元內部有三個可配置的轉換請求源,可以配置為多種來源,有硬件觸發如GTM定時采樣、軟件觸發、ADC內部定時器觸發。由于每個ADC硬件可能存在多個Adc Group,多個Group同時進行請求的時候則需要仲裁(使能了優先級的情況),請求控制器中存在仲裁處理單元,能夠對多個同時到達的轉換請求進行仲裁,當一個高優先級請求到達,而當前低優先級請求正在執行時,根據配置有三種處理方式:

cancel-inject-repeat mode:取消正在執行的低優先級轉換請求;

wait-for-start mode:等待當前轉換完成后再立刻開始高優先級轉換;

wait-for-read mode:如果目標轉換的結果未被讀取,則轉換請求會被推遲;

在我們平常使用ADC時,一般一個ADC轉換單元里只配置一個Group,該Group包含了這個轉換單元里的所有通道,ADC請求一次則會執行所有通道,因此很少會用到優先級。

2.2.2 Input Channel Selection

我們看到轉換控制器中有三個轉換源(Request Source),這里對應我們的Group,當我們在一個Group里配置包含哪些通道,最終硬件設置的是這三個轉換源。也就是說,每個轉換源轉換哪些通道,在Group中設定好了,我們只需要請求該轉換源,就可以執行對應Group中所有通道的轉換。

2.2.3 Conversion Control

轉換控制這里包含了通道轉換的相關參數,包括充能時間、降噪模式等,全部包含在InputClass中,這個概念我們后續在配置中會介紹。

2.2.4 Analog/Digital Converter

Converter是實現逐次逼近轉換的物理單元,執行通道的采樣轉換。當選定通道之后,AD轉換器中有一個采樣-保持單元,連接到SAR上,將逐次逼近的采樣結果輸送到結果處理單元中。

2.2.5 Result Handling

每個ADC通道有16個結果寄存器,轉換通道與結果寄存器的連接關系是可以靈活連接的。比如我只選了通道1、4、7,我可以選擇把他們的結果依次存放到結果寄存器1、2、3中。如果使用了wait-for-read模式,每次結果產生后如果沒有被讀取(軟件或DMA讀取),則下一次轉換請求會被拒絕。另外結果寄存器還能構成FIFO隊列,而不是直接覆蓋。

值得一提的是,EVADC的轉換精度是12bit,但是結果寄存器是16位寬,,默認模式下可以選擇使用前12位或者后12位,如果使用了累積模式,也就是多次采樣取均值,則能夠啟用全部16位。

2.2.6 Service Request Generation

TriCore架構中中斷稱為服務請求(Service Request)。ADC模塊能夠產生三個類型的中斷:

Source Event:轉換請求完成中斷,這個是我們主要使用的中斷類型,當一個源請求完成后,向IR模塊發送中斷信號;每個硬件轉換單元有4個中斷輸出信號,一般將前三個配置為三個Source對應的中斷信號;

Channel Event:通道轉換完成事件,這個中斷事件可以和結果限制檢查配合使用,當某個通道的結果位于我們指定的范圍時(一般是過高或過低),可以產生中斷信號;

Result events:結果可用事件,這個中斷是配合累積轉換序列使用的,累積轉換的結果是多次的,因此如果使用該模式,以結果可用事件的中斷信號為準。

這里需要注意的是,EVADC的中斷信號并不是固定連接的,而是可以靈活配置的。

對于硬件單元內部來說,因為一個硬件單元有三個內部的請求源,所以可以產生三個Source Event中斷信號;有8/16個通道,可以產生對應數量的Channel Event中斷信號。

每個硬件單元有4個中斷輸出引腳(Service Request Output Line),這些引腳向外連接到中斷路由器中。用戶可以通過配置,選擇如何使用這4個中斷引腳。

下圖描述了中斷輸出信號的配置關系,Result Event中斷使用場景較少,圖中未畫出。

2.3 轉換請求與仲裁

接下來我們將描述從一個轉換請求到最終采樣到ADC值的過程,本節將著重描述轉換的請求與仲裁。

2.3.1 轉換請求的產生

轉換隊列

在AD轉換的使用中,最常用的是一個轉換請求執行一組通道轉換,而這組通道需要一個載體,告訴硬件哪些通道是需要執行的,其順序如何,這個載體就是轉換隊列(Request Queue)。主轉換簇中的硬件單元支持8級隊列(通道數也為8),次轉換簇最多支持16級隊列(通道數為16),因此一個隊列能夠完成所有通道轉換的配置。

前面我們提到,一個硬件轉換單元內部有3個轉換源控制單元,每個轉換源控制單元內部結構如下:

在框圖的右上角,我們可以看到一個隊列,在請求轉換之前,需要先配置隊列。向GxQINRi(x為硬件單元,i為請求源)寄存器寫入通道的相關配置,就會將通道請求壓入隊列中。QINR的具體位域內容根據通道配置設置即可。

在MCAL驅動代碼中,隊列的最后一條通道請求的中斷服務請求GxQINRi.ENSI需打開,以發送隊列轉換完成信號。如果是硬件觸發,則隊列第一條的GxQINRi.EXTR需置位,以等待硬件觸發。

另外如果是硬件觸發或者軟件觸發連續轉換,則需要將GxQINRi.RF置位,這樣每個完成的轉換會自動回到隊列末尾,以實現自動填充,無需軟件重復操作。

如果是需要硬件觸發,則需要在GxQCTRLi(x為硬件單元,i為請求源)寄存器配置相應的觸發設置。

觸發方式

完成了轉換隊列的配置之后,下一步就是進行觸發了,EVADC轉換請求的觸發方式一共有三種:

軟件觸發:顧名思義,由軟件通過寫寄存器執行一次轉換請求,GxQMRi.TREV=1;

內部定時器觸發:EVADC硬件轉換單元提供了內部定時器,用于定時觸發,但是位寬僅10位,而ADC的頻率一般為MHz級別,所以能夠實現的延時僅微秒級別,所以一般不使用該方式;

外部觸發:這種觸發的可配置性非常強,能夠通過多種方式觸發,包括但不限于外部引腳、GTM定時器觸發。

另外轉換的請求可選擇是單次還是連續(Single Mode or Continuous Mode),單次的每次轉換都需要一次觸發;連續模式下一旦觸發就會連續進行轉換。

這里值得一提的是,外部觸發支持門控觸發,我們就能夠通過外部引腳控制AD轉換的開閉。

2.3.2 轉換請求仲裁

通常情況下我們一個硬件單元只設置一個Group,對應到請求源0。但是在某些場景下,受限于硬件電路設計,功能需求等因素,我們會應對同一硬件單元中存在不同請求源,且需要按照優先級來進行處理的情況。這個時候我們就會用到EVADC的請求仲裁功能。

我們可以通過寄存器GxARBPR來配置不同請求源的優先級,這樣在多個請求同時出現的時候,仲裁單元就會選取優先級最高的先進行處理。

另外值得一提的是,如果使用了跨硬件單元同步處理功能,則該同步觸發源的優先級是最高的。

2.4 硬件轉換流程

本節我們介紹下轉換的流程,這些流程是轉換請求被接收后,由硬件執行的,無需軟件操作。但是熟悉了這些流程后,讀者能夠更好地理解ADC模塊的功能和相關配置。

系統啟動后,硬件會進行AD轉換器的標定,以對轉換進行校準,該流程僅在初始化階段執行。

在運行階段,當接收到轉換請求,并完成仲裁之后,硬件即開始進行AD轉換。AD轉換包括4個步驟:充能、轉換、降噪和后標定。其中采樣和轉換是必須的,降噪和后標定是可選的。

2.4.1 初始化標定流程

在硬件轉換單元啟動之后,會按照用戶設定的時間(GxANCFG.CALSTC)進行標定,該操作只在啟動階段執行一次,后續轉換不再執行。轉換時間計算公式如下:

image.png

其中:

image.png

image.png

向GLOBCFG.SUCAL寫1執行標定流程。

2.4.2 Sampling充能流程

硬件開始轉換的第一個流程是充能,充能是將輸入電壓或參考電壓充入轉換電容中。具體的硬件邏輯此處不作詳細解釋,感興趣的讀者可以自行查閱資料。

充能的時間是可配置的,顆粒度是ADCI時鐘周期(GxIClass.STCS),最低時間是兩個ADCI時鐘周期(STCS=0)。充能時間配置越長,采樣越穩定,但采樣耗時越長。一般使用默認的最低充能時間就夠了。但是如果該硬件單元的時鐘頻率配置過高,則建議增加充能時間,否則充能不充分會導致采樣結果出現較大偏差。

另外Aurxi芯片的EVADC模塊還有輸入緩沖功能(Input Buffer),即在充能階段之前先進入預充能,該功能能夠增強信號輸入能力,防止抖動。輸入緩沖的顆粒度也是ADCI時鐘周期,可配置為0、8、16、32。值得注意的是,如果配置了輸入緩沖功能,配置的充能時長需要至少覆蓋預充和充能兩個階段。

充能階段的耗時為:

image.png

2.4.3 Conversion轉換流程

充能完畢之后轉換單元就需要對充能的電壓進行結果轉換,我們采用的是逐次逼近原理,所以轉換的時間和采樣精度,也就是結果位寬是成正比的。我們的精度是12bit,因此采樣階段的耗時為:

image.png

2.4.4 Noise Reduction降噪流程

熟悉信號處理的讀者都知道,信號的傳遞難免是有噪聲的。噪聲可能是由傳感器本身產生的,也可能是在傳遞過程中產生的,另外AD轉換作為一個數字模塊嵌入在MCU中,也可能存在一些噪聲。因此在進行AD采樣時,如果對信號的要求比較高,則需要進行降噪。Aurix的EVADC提供了降噪功能,作為硬件轉換流程的可選步驟存在,包括如下幾種方式。

Noise-Reduction Conversions 降噪轉換

該功能是在轉換階段增加額外的流程,對轉換進行優化,可選1、3、7降噪強度。降噪時間為:

image.png

Spread Early Sample Point 擴展早期采樣點

除了靜態噪聲外,同步噪聲不能通過采樣消除。擴展早期采樣點特性通過以偽隨機數步長,來移動采樣相位的末端,來衰減同步噪聲。通過配置GxICLASSi.CMS/CME來設置。如果使用了該特性,充能階段會被隨機縮減最多100ns,這個需要計算到采樣時長中。

Accumulated Conversions 累積轉換

除了對信號進行降噪以外,還能通過累積轉換求平均值的方法來獲取可靠的數據。用戶可設定2~16個轉換結果,最后硬件會自動進行累加。

2.4.5 Post-Calibration 后標定流程

后標定流程可以被添加到轉換的末尾,用于矯正初始化中標定效果的老化。據手冊描述,老化其實是非常慢的,而且后標定流程使得轉換電容放電,因此推薦不使用該功能。如果使用了,后標定時間為:

image.png

2.4.6 轉換總時間

介紹完了硬件轉換的流程之后,我們來歸納轉換總時間的計算方法。除了充能、轉換這兩個必要流程,以及降噪、后標定這兩個可選流程,每次轉換還有一個固定的硬件狀態機切換流程,占3個tADC。所以一次轉換的總時間為:

image.png

代入上面的詳細值得到轉換總時間:

image.png

假設我們ADC時鐘頻率為160MHz,取DIVA=7,所以fADCI=20MHz,tADC=6.25ns,tADCI=50ns。我們取STC=0,NRS=1,CALSTC=1,則轉換總時間為T=1.31μs。如果我們不進行降噪和后標定,轉換總時間為T=0.768μs。

2.5 轉換結果與中斷

在硬件完成了通道轉換之后,就要處理轉換結果,將值送到指定的寄存器;而且在一個轉換隊列全部完成之后,要產生對應的中斷,將信號送到中斷路由器,以供CPU或DMA進行處理。

2.5.1 轉換結果處理

結果寄存器

EVADC每個硬件單元有自己的與通道數對應的結果寄存器GxRESy,在我們設置結果關聯時,我們可以選擇通道與結果號一一對應,即通道X的結果保存到結果寄存器X中。事實證明,這種配置方式使得軟件容易維護。

除了單元內部的結果寄存器外,EVADC還有一個全局結果寄存器GLOB.RES,以方便進行跨通道的關聯數據處理,一般情況下是每個硬件單元配置使用各自的單元內部結果寄存器。其結果輸出設定參考下面這張寄存器邏輯圖。

數據對齊

前面提到,EVADC的精度是12位,但是其結果寄存器中對應的結果位域是16位,以供其他功能使用。一般情況下我們是使用右對齊12位。

Wait-for-read模式

EVADC模塊還提供了一個等待讀取模式,在該模式下,如果新的結果沒有被CPU或DMA讀取過,則該通道的轉換請求無法執行(Debug讀取不算)。

FIFO Buffer

EVADC提供了FIFO功能,即兩個或兩個以上相鄰的結果寄存器,組成一個先進先出的隊列,硬件會將用戶指定的轉換通道的結果保存到隊列中,用戶讀取其中序號最小的結果寄存器即可取出隊列中數據。

下圖中結果寄存器0、1組成隊列供通道3使用,2、3、4組成隊列供其他通道使用,6、7組成隊列供通道2、6、7使用。這種配置一般是應對需要多次采樣結果結合使用的場景。

2.5.2 轉換結果中斷

前面我們提到,EVADC模塊的中斷信號類型有三種,轉換請求完成中斷、通道完成中斷和結果可用中斷,他們與4個中斷輸出引腳的連接是可配置的。

通常情況下,對于一個硬件單元,我們一般將三個請求源的中斷信號分別配置給前三個中斷輸出引腳,用于AD轉換結果的處理;將所有的通道結果中斷信號,配置給第4個中斷輸出引腳,用于結果異常處理。

對于請求源中斷信號,其連接配置參考下圖對應的寄存器:

當請求源完成中斷信號產生,則對應的GxSEFLAG中的對應位域會置位,可使用GxSEFCLR寄存器取清除。

當通道中斷信號產生,則對應的GxCEFLAG中的對應位域會置位,可使用GxCEFCLR寄存器取清除。

當結果可用中斷信號產生,則對應的GxREFLAG中的對應位域會置位,可使用GxREFCLR寄存器取清除。

2.6 引腳連接

ADC的硬件引腳連接不像Port模塊,能夠靈活配置,它的連接還是比較固定的,比如硬件引腳的AN0對應的就是EVADC模塊的G0CH0,AN8對應的就是G1CH0(G0通道數為8,AN號依次排開)。具體的連接直接查閱芯片DataSheet中的Analog Inputs表格。

3 MCAL配置示例

介紹完了ADC的硬件原理和整體流程,下面我們結合示例來對EVADC模塊在EB工具中的MCAL配置進行說明。這里我們使用Demo工程中自帶的軟件觸發示例,讀者也可以結合之前GTM介紹文章中描述的GTM->ADC硬件觸發,實現ADC自動定時采樣。

3.1 AdcGeneral

首先我們來到General界面,這里按照實際使用需要配置即可,一般都是軟件使能的配置;

3.2 AdcGlobalInputClass

然后我們來到AdcGlobalInputClass,這里解釋一下,EVADC模塊的通道配置有一個InputClass的概念,即輸入配置類,該配置類包含了一些通道配置。預設了配置類之后,每個通道可獨立選擇使用指定的配置類。對于整個EVADC模塊,存在兩組Global Input Class,即全局配置類。然后每個硬件轉換單元有自己私有的兩個Input Class,即Group配置類。每個ADC通道可以在全局配置類和所在硬件單元的Group配置類中進行選擇。下面那我們介紹配置類的配置內容。

AdcChSampleTime充能時間

前面我們提到了充能階段的充能時間是可配置的(最小為2*tADCI),通過GxIClass.STCS進行設置,總充能時間為(2+STCS)*tADCI。充能時間越長,采樣越充分,一般取STCS=0即可,如果fADCI的頻率較高,考慮增大充能時間參數。

AdcChPreChargeClkCycles 輸入緩沖時間

如果在充能階段使用了Input Buffer,則可配置其緩沖時間,它的配置檔位是0、8、16、32個fADCI。通過GxIClass.AIPS控制。這里我們不使用輸入緩沖。

AdcChConvMode降噪模式

降噪流程是可選的,配置檔位NRS是0、1、3、7,具體時間參考前文降噪流程計算公式。通過GxIClass.CMS控制。這里我們不使用降噪。

Spread Early Sample Point 擴展早期采樣點(AdcChSESPSEnable)

擴展早期采樣點可在Input Class配置中使能,通過GxIClass.SESPS控制。

External Multiplexer配置

EVADC支持對外置的多路選擇控制進行配置,因此在Input Class中支持對應的配置參數,這里不作詳細描述。

3.3 AdcHwUnit

然后我們來到AdcHwUnit_0,進行硬件轉換單元相關配置。

AdcIdlePrechargeEnable & AdcInputBufferEnable & AdcPrechargeReference預充控制

Aurix的EVADC模塊有三種預充,第一種是通道空閑預充,是在通道空閑的時候將其預充到參考電壓的一半,通過GxANCFG.IPE控制;第二種是前文提到的Input Buffer預充,通過GxANCFG.BE控制使能,并通過通道配置控制預充時間;第三種是轉換的時候通過參考電壓對電容進行預充,能夠實現最大精度,通過GxANCFG.RPE控制,該功能默認是使能的。這里我們只使用參考電壓的預充。

AdcCalibrationSampleTime標定時長 & AdcPostCalibrationDisable后標定關閉

如前所述,標定作為可選功能,通過GxANCFG.DPCAL(置1關閉)控制使能,通過GxANCFG.CALSTC控制時間參數CALSTC。后標定使能默認是打開的(勾選為關閉),這里我們使用后標定功能,默認標定時間參數選擇2。

AdcAnalogClockSyncDelay & AdcSampleSyncEnable 同步轉換

不同的硬件轉換單元之間能夠進行同步AD轉換,通過配置可以實現。通過GxANCFG.SSE控制使能。這里我們不使用。

AdcPrescale硬件單元分頻

然后我們來到AdcPrescale選項卡配置時鐘分頻,注意這里配置的值實際是DIVA+1,如果你想配置4倍分頻,這里直接配4,工具會將DIVA寫成3。

3.4 AdcChannel

通道配置這里沒有什么特別的,就是選定你目標通道所連接的硬件引腳,選擇一下InputClass。

3.5 AdcGroup

AdcGroup中配置的就是我們的轉換請求源的選項,首先我們來到General中。

AdcGroupAccessMode Adc組訪問模式

這個配置可選擇是單次還是Stream模式,單次很好理解,一次一停,一組Buffer;Streaming就是能夠進行多次轉換,比如啟動一次,轉換5次,將5次的值存放到用戶指定的Buffer中。

AdcGroupConversionMode Adc組轉換模式

這里我們是單次轉換,選擇oneshot,如果有Streaming需求的需要配置為Continuous。

AdcGroupId

軟件GroupID識別號。

AdcGroupTriggSrc觸發源

這里可以選擇是硬件觸發還是軟件觸發,根據實際需求配置。

AdcStreamingBufferMode緩存區模式

這里如果是單次或Streaming模式的話,需要配置成Linear。如果是連續,且不使用Streaming模式,也就是一次觸發就永遠持續轉換,則需要使用Circular。

AdcStreamingNumSamples Streaming采樣次數

這里定義了Streaming模式下單次觸發的采樣次數,比如定義了5,則一次觸發會進行5次轉換,每次轉換后也都會進一次ADC中斷。這里需要注意的是,軟件初始給的Buffer一定要夠用,一個結果占據uint16,如果該參數為5,Group中配置通道數為8,則Buffer尺寸需要為5*8*uint16,下一次再觸發則會從頭覆蓋該buffer。這里我們是單次轉換,所以配置為1。

AdcGroupDefinition組定義

然后我們來到下一個選項卡AdcGroupDefinition,這個選項卡中定義了Group中所包含的通道,也就是我們前面說的壓入轉換隊列中的內容。一次轉換請求就是將這些通道依次進行轉換,全部轉換完成觸發一個中斷。

AdcResDefinition結果定義

這個選項卡中定義了結果寄存器的選擇,這里和組定義是一一對應的,比如我這里Channel_0_5結果存放到Res0中。

中斷相關的配置這里不做描述了,讀者可以參考之前中斷模塊的文章,在Irq模塊中給G0S0進行配置即可,MCAL代碼對于非同時擁有軟、硬觸發源的單元默認使用G0S0。

AdcNotification

這個選項卡中可以配置一個Notification函數,完成后ADC中斷內會調用該函數通知用戶,形式為void FuncXXXX(void)。

3.6 示例代碼

完成了配置我們就可以編寫相應的代碼了,首先我們進行相關初始化,需要進行Adc模塊初始化,中斷寄存器初始化,并打開中斷。然后設置GroupBuffer,這里我使用單次轉換,因此Buffer數量等于Group通道數。

這里非常值得注意的是,Buffer一定不能給小了,因為這里給的是數組起始地址,底層驅動是不知道Buffer尺寸的,如果給小了,則其后續的其他數據就會被覆蓋。

Adc_Init(&Adc_Config);       /* Adc Init */
IrqAdc_Init();               /* Irq Init */
SRC_VADCG0SR0.B.SRE = 1;     /* Enable EVADC Group0 Source0 INT */
Adc_ValueGroupType  Adc0GroupSWResult[2];;    /* 注意:該變量為全局變量 */
Adc_SetupResultBuffer(AdcConf_AdcGroup_AdcSWGroup, Adc0GroupSWResult);    /* Setup Buffer */

然后我們在軟件中周期進行轉換的軟觸發:

Adc_StartGroupConversion(AdcConf_AdcGroup_AdcSWGroup);    /* Start Group Conversion */

這樣就完成了簡單的代碼,結果Buffer會在中斷函數中更新,如果你沒有使用中斷函數,也可以使用中斷信號連接DMA,直接從結果寄存器中搬運轉換結果。

4 小結

本文介紹了Infineon Aurix 2G TC3XX系列EVADC模塊的原理及功能,內部結構,并描述了其內部轉換請求的處理邏輯,以及硬件轉換的詳細流程,最后通過使用示例詳細介紹了MCAL的配置參數及使用方法,通過理論和實踐結合,幫助讀者掌握該模塊。

0.png

下一篇: 英飛凌Aurix2G TC3XX DMA模塊詳解
上一篇: 英飛凌Aurix2G TC3XX GETH模塊詳解
相關文章
返回頂部小火箭