一、前言
本文介紹如何使用 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 / 李亞楠
評論