基於 SemiDrive E3640 GateWay MCAL3.1 GPIO 中斷測試

一、 功能需求與測試環境

        在芯馳釋放的 MCAL 功能安全認證版本 MCAL3.1,和 MCAL3.0 對比 GPIO 的中斷代碼發生了改變。為了更符合 Autosar 的代碼規範,中斷回調函數放在 EB 的 DIO 模塊中去定義函數名。具體的實現放在測試代碼中,而不是和 MCAL3.0 版本一樣放在靜態代碼中。


圖(1)

 


二、 代碼分析

1.中斷號的使用

        如圖(2)所示 MCAL3.1 的 GPIO 中斷目前只使用了 4 和 11,分別對應與 SF Domain 和 AP Domain。舊版的以 port  group 為一組的中斷號使用方法在後面的補丁中可能也會加入。


圖(2)

 
2.中斷處理函數

       針對兩個中斷號,在 Dio.c 中實現了  DIO_SFIrqHandler()和 DIO_APIrqHandler()兩個函數。如圖(3)所示,這兩個函數用來判斷中斷源來自 Safety domain 還是 AP domain,然後給  Dio_Ip_IrqHandler()傳入不同的參數。



圖(3)

 

  1. Dio_Ip_IrqHandler( ) 函數

      Dio_Ip_IrqHandler() 用於實際處理中斷信號,包括讀取相關寄存器判斷中斷具體來自哪一個 GPIO,然後將該 GPIO 的 ID 傳給中斷回調函數,在中斷回調函數中做用戶自定義的操作,回調關係參考圖(4),最後清理中斷。


圖(4)

 

 

 三、 測試

  1. 配置

      本次測試中,選取 GPIO_H4 作為測試 GPIO,在 EB 的 Port 模塊中,配置為 GPIO 模式,下降沿觸發。詳細如圖(5)所示。




圖(5)

 

      圖(6)為在 DIO 模塊中配置中斷回調函數。

圖(6)

  1. 測試程序

      測試程序的編寫見圖(7),需要在 dio_example.c 中加上對應的頭文件,實現中斷回調函數,註冊中斷。


圖(7)


  1. 測試

       重新生成鏡像,並燒寫到開發板中,執行 dio test,然後給 GPIO_H4 一個下降沿信號,觀察列印信息可以確認中斷回調函數的正確執行。圖(8)為列印信息。

圖(8)

 

四、 參考文獻:

  1. E3400_E3600_MCU_Technical_Reference_Manual_Rev00.12.pdf
  2. SemiDrive_E3_MCAL User Guide.pdf


        歡迎在博文下方留言評論,我們會及時回復您的問題。

如有更多需求,歡迎聯繫大聯大世平集團 ATU 部門:atu.sh@wpi-group.com
     
        作者:Sim Guo / 郭夕峰


更多資訊,請掃碼關注我們!:


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

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

評論