首先介紹MCAL的Port Driver模塊。
PortDriver模塊作為一個最基本的模塊主要完成MCU的Port_Pin引腳的相關功能定義和初始化。通常而言Port_Pin的主要功能是作為GPIO、ADC、CAN、ICU、PWM、SPI等功能使用。
而對于一個Port_Pin而言,具體作為什么功能使用,要結合實際的原理圖進行定義。無論一個Port作為什么功能使用,在AutoSAR中大概的策略就是通過IO HardWareAbs層進行相關的控制,具體的控制邏輯如下所示。
IO HardWare Abstraction SW根據用戶設置的操作結合Port Driver模塊對Port不同模式的設置,發出調用命令,然后Port Driver對Port中的相關寄存器進行操作,從而達到對Port具體Pin腳輸入輸出的控制。
AutoSAR架構中對Port Driver模塊提供了幾個以下幾個具體的功能:
1.配置Port_Pin的屬性
對于Port_Pin屬性的定義主要包括:引腳不同功能的定義,也就是我們常說的復用功能,定義Port_Pin作為GPIO使用還是作為ADC或者是CAN等特殊功能使用;引腳方向定義(輸入還是輸出)、引腳初始值定義、是否支持輸入輸出方向變化、是否支持復用模式轉換功能等;作為輸入時選擇上拉還是下拉、作為輸出時選擇開漏還是推挽輸出、是否支持回讀功能;未使用到的Port_Pin狀態的定義;定義Port_Pin在使用中的Symbol Name(常見的定義方式PORT_A_PIN_0)等。
2.版本校驗
對于特定的Port Driver在AutoSAR中都有相應的版本號,對于版本號的校驗通過該功能進行使能與否,一旦使能,可以通過相應的API來核對版本號。
3.開發中相關錯誤的追溯
對Port Driver在實際開發中出現的相關錯誤進行定義,在開發階段可以結合Det模塊對Port Driver常見的錯誤進行追溯,快速定位開發中因為考慮不全或者粗心產生的錯誤。AutoSAR提供的Det功能可以快速定位相關錯誤。然后,根據具體的錯誤去修改相應的配置和進行代碼優化。
4.常用的API
Port Driver模塊主要做一些基礎的初始化配置使用,因此用的API相對較少,主要包括Port_Init、Port_SetPinDirection、Port_RefreshPortDirection 、Port_GetVersionInfo、 Port_SetPinMode 等,具體的函數功能結合API的名字一般能猜到,具體的使用請參考AutoSAR的標準文檔。在Port模塊這些函數可以直接調用。
對于Port Driver這個模塊在工具中的配置,AutoSAR標準文件也提供了詳細的說明。下面圖片展示了相關的配置內容。ETAS、Vector、EB等配置工具都是基于AutoSAR標準提供的參考進行定義的。
無論是基于工具的配置,還是手寫功能對于Port層面的設計按照以上圖中包含的內容進行設計基本上能滿足大多數要求,但是有一些額外的設置可以根據具體的芯片型號結合配置工具實現。
下面結合本人在使用的時候出現的問題總結了幾點經驗:
1.在使用該模塊的時候一定要結合具體的硬件進行選擇相應的Port_Pin的模式,如果在使用的時候用到了模式切換的功能,一定要添加所有切換的模式狀態,同時使能模式切換相關的API。
2.在選擇輸入輸出方式的時候要考慮硬件的外部電路,據具體的電路和芯片相關的要求選擇。
3.對于PartionRef功能的使用可能要結合具體的功能安全需求以及整個系統的Partion區分做選擇。
4.對于沒有使用的Port一定要根據要求配置,多數情況下默認狀態就可以,但是也要具體問題具體分析。
5.對于支持方向變化的Port_Pin,作為方向切換使用時,一定要注意配置的端口的屬性,防止使用的時候因為配置原因導致讀出或者寫入的電平出現不一致。
審核編輯:劉清
-
CAN總線
+關注
關注
145文章
1955瀏覽量
130968 -
寄存器
+關注
關注
31文章
5363瀏覽量
120932 -
AUTOSAR
+關注
關注
10文章
363瀏覽量
21725 -
GPIO
+關注
關注
16文章
1216瀏覽量
52275
發布評論請先 登錄
相關推薦
評論