AURIX™中DMA模塊對TIM的FIFO數據搬運

作者:英飛凌 楊飛

DMA的應用場景較為廣泛, 其源地址和目的地址可以是我們的RAM, 也可以是我們的外設寄存器, 如各種FIFO寄存器或者結構寄存器。

本文主要介紹DMA的一種使用場景, 將GTM的TIM通道的FIFO數據通過DMA搬運到RAM中進行處理。 

基本功能

客戶在汽車軟體開發過程中經常會遇到需要實時採集PWM信號(邊沿時刻和個數)的情況,本文就是基於該應用場景介紹DMA在其中的實際應用。利用AURIX™強大的GTM_TIM模塊可以實現對各種複雜的PWM輸入信號的捕獲,採集其邊沿觸發時刻,並對邊沿個數進行計數。出於降低CPU負荷的角度考慮,採用DMA對TIM中的FIFO數據進行實時搬運, 供軟體進行處理。

 

配置方法

  • 利用GTM的某個TIM通道對PWM輸入信號進行採集, TIM Channel工作在TPWM模塊,相應的時間戳存儲在GPR0和GPR1寄存器當中,邊沿的Counter信息存儲在GPR0和GPR1的ECNT bits當中(ECNT的數據存儲範圍是0-255)。 

  • 通過DMA對該通道的GPR0和GPR1中的數據進行搬運, 存儲到固定的RAM空間(某個數組當中)。

 

開發環境

1、開發板布置 

Board A用於產生PWM的輸入信號。 

Board B用於實際工作的ECU對PWM信號的處理, TIM0 Channel(採用P0.9), DMA通道選擇DMA Channel 60, 使用的MCU為TC277TP, 黃色的導線是GND, 對兩個開發板進行工地, 灰色的線是PWM的信號線。 

圖1 開發板布置圖

 

2、編譯器

採用TASKING 4.3.1-Tricore Eclipse IDE。

3、調試器

採用UDE5.2。
 

4、軟體開發工具

採用EB Tresos開發MCAL的驅動軟體。

 

PWM輸入信號

PWM的輸入信號波形如下圖(圖2)所示在, 為100ms的高電平和100ms低電平的輸入信號。

 

圖2 PWM輸入信號

 

 GPIO口採用P33.6作為Board A是GPIO普通輸出口。相應的參考代碼如下:

 

 

MCAL配置

1、MCU

GTM的時鐘需要配置為80MHz, 如圖3所示:

 

圖3 GTM時鐘配置

 

 TIM的時鐘輸入源為Clock0, 80MHz/(99+1) = 0.8MHz,如圖4:

 

圖4 TIM的時鐘源配置

 

DMA Channel選擇60,在DmaConfiguration選項中進行設置,如圖5所示:

 

圖5 DMA Channel選擇

 

2、TIM

TIM Channel的配置包含如下幾個方面:

  • TIM Channel的使能

  • Port的選擇

  • 上升沿下降沿檢測

  • GPR0和GPR1加載值的選擇

  • TIM的工作模式

  • 中斷的種類和中斷模式的選擇

     

具體參數選擇, 詳見圖6:

 

圖6 TIM Channel的配置

 

3、IRQ

中斷選擇DMA觸發,優先級等於DMA的通道號60。

 

圖7 IRQ配置

 

4、DMA

DMA通道的配置需要考慮如下幾個方面:

  • DMA通道號

  • Data Move的數據寬度

  • Data Move的次數

  • 連續模式還是單次模式

  • 源地址和目的地址的循環長度等等

     

具體配置見圖8:

 

圖8 DMA Channel配置


代碼實現

首先需要頂一個32個元素的數組

 

 

Tim的Notification函數定義

 

 

以及通過硬體硬體觸發DMA搬運的啟動函數調用,設置好DMA的通道號, 源地址和目標地址等等。

 

 
調試

上電之後, 我們可以觀測到GTM_TIM0_CH0_GPR0和GPR1的寄存器值以及他們的ECNT bits的變化。見圖9:

 

圖9 GPR0/1的寄存器觀測值

 

而針對DMA部分, 可以看到DMA的源地址在GPR0寄存器(0xF0101000)和GPR1寄存器(0x101004)之間來回切換, 目的地址會在我們RAM的地址(u32g_EdgeTime數組)裡面輪詢中存放。見圖10:

 

圖10 DMA源地址和目標地址觀測值

總結

本文介紹了DMA在AURIX™ 1G/2G的一種應用場景,即用於GTM的TIM FIFO數據的搬運,採用DMA可以在保證時效性的同時有效降低CPU負荷。 

DMA還有其他的應用場景:

  • 通過DMA將ADC的結果寄存器的數據搬運到RAM

  • 通過DMA將RAM中帶有PWM信息的數據搬運到ATOM的FIFO中

  • 通過DMA實現RAM和QSPI的TX FIFO, RX FIFO數據的搬運等等


該文章來源於“英飛凌汽車電子生態圈”官方微信,英飛凌汽車電子生態圈對該內容擁有最終解釋權。如需轉載,請註明來源,英飛凌保留所有權利。
QR Code. (英飛凌汽車電子生態圈)官方微信公眾號

★博文內容參考自 網站,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

參考來源

false: https://mp.weixin.qq.com/s/LQMj3MbPkFFv7SWDv6JpIw

評論