SemiDrive E3 SSDK driver_demo adc_Async_int 介紹

一、前言

本文介紹如何使用 E3 晶片 ADC 的 Async mode 轉換和中斷處理功能。

使用 adc_Async_int 示例程序,完成 ADC 轉換 A12、A14、A15 這些管腳上的電壓信號,並輸出相應的電壓數據。

硬體平台:芯馳 E3640 E3_GATEWAY_A03 開發板

軟體平台:SemiDrive_E3 SSDK PTG2.0

 
Demo流程概述:

- ADC 初始化;

- 在 0~2 位置上配置三種 ADC 轉換的模擬參數,如採樣時間、參考電壓、單端差分模式;

- 在 rc0 entry 的 0~3 位置上配置通道轉換參數,包含通道號、模擬參數所在位置等;

- 配置 rc0 timer 的運行和觸發參數;

- 設置控制器要記錄的中斷狀態,以及哪些狀態可以觸發中斷,註冊中斷回調函數並使能;

- 啟動 rc0 timer 進行觸發,啟動 ADC 的 Async mode。 Async mode 下,調度器按固定的優先級順序(RCHT>RC0>RC1>RC2>RC3),接收來自各 rc 的觸發信號並進行模數轉換;

- 中斷觸發時將數據讀走;

- 讀滿數據後停止轉換,關閉中斷,清空餘下的轉換數據;

- 計算轉換值並列印輸出相應的電壓值。

 

二、電氣原理圖

E3_REF_GATEWA_A03_SCH 可知 GPIO_A12 外接 VDD3.3V,GPIO_A14(A15) 外接 VDD1.8V。




圖 1 原理圖部分

三、程序分析

例程路徑:E3_SSDK_PTG2.0_Source_Code\ssdk\boards\e3_gateway\driver_demo

\adc\adc_Async_int,程序進入主函數中,在一系列初始化、復位後,循環設置片外引腳與片內 ADC 通道連接,然後調用 ADC 異步例程,最終進入到死循環。



圖 2 入口函數

 

異步例程介紹:

- 在 0~2 位置上配置三種 ADC 轉換的模擬參數,如採樣時間、參考電壓、單端差分模式;

- 在 rc0 entry 的 0~3 位置上配置通道轉換參數,包含通道號、模擬參數所在位置等;

- 配置 rc0 timer 的運行和觸發參數;



圖 3 異步例程


- 設置控制器要記錄的中斷狀態,以及哪些狀態可以觸發中斷,註冊中斷回調函數 adc_demo_int() 並使能;




圖 4 例程中斷相關

 

- 啟動 rc0 timer 進行觸發,啟動 ADC 的 Async mode。 Async mode 下,調度器按固定的優先級順序(RCHT>RC0>RC1>RC2>RC3),接收來自各 rc 的觸發信號並進行模數轉換;


圖 5 例程啟動相關

 

- 中斷觸發時將數據讀走;


圖 6 中斷處理函數

 

- 讀滿數據後停止轉換,關閉中斷,清空餘下的轉換數據;



圖 7 轉換停止相關

 

- 計算轉換值並列印輸出相應的電壓值。



圖 8 例程輸出相關

 

調用的函數及電壓轉換公式:


圖 9 輸出相關細節

 

 

四、運行現象:

 列印的電壓值與原理圖所示相符,輸出邏輯與異步例程代碼一致。



圖 10 運行現象

 

五、參考文檔

《E3400_E3600_MCU_Datasheet_Rev00.16》

《SemiDrive_E3_SSDK_User_Guide》

《SD103_E3_REF_GATEWAY_ePOWERTRAIN產品用戶手冊》


歡迎在博文下方留言評論,我們會及時回復您的問題。如有更多需求,歡迎聯繫大聯大世平集團 ATU 部門:atu.sh@wpi-group.com
作者:Alan Li / 李亞楠

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

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

評論