文章目錄
- 前言
- ADC配置
-
- AdcGroupRequestSource
- AdcGroupTriggSrc
- AdcHwExtTrigSelect
- AdcHwGatePin
- AdcGeneral-AdcHwTriggerApi
- AdcHwGateSignal
- AdcHwTrigSignal
- AdcHwTrigType
- Gtm
-
- GtmConnections
- PWM
- 實際使用
- 總結
前言
在實際項目開發過程中,關于ADC采樣,大部分使用軟體觸發即可,但是在特定情況下,需要應用到硬體觸發采樣,如在測量電流時,可能就需要使用到ADC的硬體觸發功能。本文基于Davinci cfg及TC27x晶片,介紹如何配置通過PWM觸發ADC采樣。
ADC配置
在之前的一篇文章中,介紹了ADC的大部配置設定置,傳送門:Autosar MCAL-ADC詳解(二)-基于Tc27x的cfg軟體
下面介紹和硬體觸發相關的配置
AdcGroupRequestSource
REQSRC0_8STG_QUE對應Group Queued source
REQSRC1_NCH_SCAN對應Group Scan source
REQSRC2_BGND_SCAN對應Background Scan source
此處我們選擇REQSRC0_8STG_QUE,在晶片手冊中對于Group Queued source有如下流程圖:

此處很清楚的可以看到,對于硬體觸發來說,我們要配置trigger inputs和gating inputs的來源。在後面的配置項中介紹。關于其他請求源,可以參考晶片手冊。
cfg中配置:
AdcGroupTriggSrc
此處選擇HW觸發
cfg中配置:
AdcHwExtTrigSelect
由Group Queued source圖可知,該trigger可以由REQTRx[H:A]輸入,也可以由gating的pin直接輸入。
對于trigger的選擇,在晶片手冊中有如下定義:
此處我們選擇trigger由gating input。
cfg中配置:
AdcHwGatePin
配置Gating pin,在晶片手冊中有如下定義:
此處我們選擇GTM_adcx_trig0。
cfg配置:
AdcGeneral-AdcHwTriggerApi
要使用HW觸發ADC,需要使用該API函數。
cfg中配置:
AdcHwGateSignal
此處我們使用的是gate pin作為trigger,且使用PWM波的上升沿觸發,這裡配置NONE即可,不關心Gate的輸入,隻關心跳變沿
在晶片手冊中對應的寄存器為:
對應的位為:
cfg中配置:
AdcHwTrigSignal
此處我們選擇PWM上升沿觸發,具體觸發點在PWM中配置duty實作。
在晶片手冊中對應的位為:
cfg中配置:
AdcHwTrigType
此處配置為外部觸發
Gtm
GtmConnections
現在需要将對應的PWM通道(TOM)和ADC映射,在手冊中有如下映射關系:
該對應關系存在于GTM子產品中,配置也是在這個子產品中配置。
此處我們采用TOM Channel6作為trigger0
cfg中配置:
對應的生成代碼對應的值:
static const uint8 Gtm_kAdcConnections0[GTM_NO_OF_ADC_MODULES] =
{
0x01U, 0x00U, 0x00U, 0x00U, 0x00U,
};
PWM
需要配置對應的PWM子產品關聯對應的TOM子產品
之前有介紹過PWM子產品的配置,具體可以參考:
Autosar PWM配置及使用
實際使用
ADC初始化時使用Adc_EnableHardwareTrigger函數允許ADC硬體觸發
Adc_EnableHardwareTrigger(AdcGroupId);
軟體運作過程中對相應通道的ADC采樣進行處理。
總結
以上介紹了PWM硬體觸發ADC的配置項。在實際使用中,可以按照自己的需求來修改。
若你覺得本文對你有幫助,歡迎點贊,關注,收藏,轉發~~~ 你的鼓勵是對小弟的最大支援~~~
建了一個WX公衆h,《汽車電子學習筆記》感興趣可以關注一下~~~文章都會同步更新