SemiDrive E3 MCAL 配置 :ADC 採樣使用 DMA 搬運數據

一、前言

      芯馳提供滿足 AUTOSAR 標準的 MCAL,實現微控制器、存儲、通信和 I/O 等硬體的驅動程序,芯馳提供了 AUTOSAR Demo 程序,在設定的應用場景中展示這些基本模塊的調用。但是關於模塊的一些特定用法,Demo 程序沒有進行說明,例如 ADC 模塊的 Demo 程序採用的是中斷的模式,對應 DMA 模式並未提及如何使用,本文旨在介紹 ADC 的 DMA 模式的配置和使用,對一些模塊的使用方法進行補充。

二、軟硬體

      硬體平台:芯馳 E3640 SD103_E3_GATEWAY_A02_043 開發板
      軟體平台:SemiDrive_E3_MCAL_PTG3.0

三、DMA 介紹

      E3 系列有 DMA_SF0、DMA_SF1、DMA_AP 三個 Controller,其中 DMA_SF0、DMA_SF1 分別有 24 個通道 ( E3206/E3205/E3106/E3104 系列分別有 16 個通道),DMA_AP 有 8 個通道。DMA_SF0 和 DMA_SF1 支持 Lockstep 模式。 Dma 支持 Multicore 和靜態通道配置, DMA 會根據分配在每個 Core 上的通道信息,自動註冊中斷。
      注意事項:ADC 支持 DMA 搬運數據,使用 DMA 的 Group 所在的 ADC Unit,只能配置一個 Group,並且 AdcStreamingNumSamples 需要配置為 1,並且 DMA 模式僅支持 SW 觸發。

四、配置流程

  1. 配置對應的 PORT,將引腳與 ADC 模塊鏈接上。
  2. 使用 Unit 為 ADC1 ,每個 Unit 只能一個 Group 為 DMA 模式。
  3. DMA 模塊分配 FIFO3 進行 ADC 數據搬運。
  4. 增加配置代碼。

五、EB 配置

  1. ADC 配置如下

  1. DMA 配置
       分配 FIFO3 進行 DMA 傳輸


 
       3. ResM

       將 DMA 分配到 SF 核上



 
       4. 通過 MCAL 配置使能後,ADC 不能順利啟動 DMA 傳輸,需要手動添加部分代碼。
 
       正常來說,DMA 傳輸被集成到下列函數中,通過 EB General 使能 DMA 傳輸,ADC 設置為 DMA 模式就能開啟 DMA 轉換。

       Adc_StartGroupConversion(AdcConf_AdcGroup_Adc1Group_0);

       然而關於此函數,直接運行不能實現 DMA 傳輸,建議添加兩行寫入寄存器的代碼,才能正常進行 DMA 傳輸,如下:
 


       5. DMA 配置如下



       6. ADC 使用




       7. 關於 DMA 的傳輸驗證如下

       設置斷點 1

       設置斷點 2

       在指定地址可以看到 ADC 採樣數據被傳輸到指定地址中。



六、結語

       本文介紹了 ADC 觸髮結合 DMA 進行數據傳輸的配置流程。

七、參考文檔

       1. 《SemiDrive_E3_MCAL_User_Guide_Rev03.00》
       2. 《E3400_E3600_MCU_TRM_Rev01.00》

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

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

參考來源

評論