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