文章目錄
- 1. 模塊簡介
- 2. 主要功能
- 3. 縮略語
- 4. API接口
- 5. 功能介紹
- 5.1. ChannelGroup
- 5.2. Dio_MaskedWritePort
- 6. 序列圖
- 6.1.讀GPIO電平
- 6.2. 設置GPIO電平
- 7. EB 工具配置
- 7.1.General
- 7.2.DioPort
- 8. 參考資料
1. 模塊簡介
Dio,全稱“Digital Input Output”。Dio模塊(Digital Input/Output Driver)是MCAL層(微控制器抽象層)的核心基礎驅動,負責對微控制器(MCU)的數字引腳進行標準化、硬件無關的訪問與控制。通俗講就是給Pin和Port做一層抽象,可根據具體功能去命名。
2. 主要功能
- 提供通道(Pin)的讀寫操作
- 提供端口組(Port)的讀寫操作
- 提供通道組(一個端口中相鄰Pin的組合)的讀寫操作
- 翻轉輸出端口狀態,周期為T的任務中循環調用,就能得到一個周期2T,50%占空比的方波
備注:Pin相關配置(輸入/輸出、上拉/下拉、推挽/開漏等配置)均在Port模塊完成,Dio模塊僅負責數字接口的讀寫操作
3. 縮略語
4. API接口
備注:除Dio_GetVersionInfo以外,其他函數的參數,均使用Dio_Cfg.h中的宏定義,就不會出現開發錯誤。
Eg:P00端口的P00.3是LED0的GPIO引腳,對Pin命名時即可考慮端口號 + 功能作為描述。
5. 功能介紹
主要提供數字IO讀寫相關的操作。此處主要講一下Dio_ReadChannelGroup、Dio_WriteChannelGroup和Dio_MaskedWritePort三個接口,Channel和Port分別對應硬件的哪個Pin和哪個端口,無特殊講解。
5.1. ChannelGroup
Dio_ReadChannelGroup、Dio_WriteChannelGroup傳入的參數是一個結構體類型地址,而不是簡單的某個ChannelId或PortId,此處結構體中包含端口號、掩碼、偏移三個參數。通過三個參數去確認具體的哪個Port下的哪些相鄰的Pin。
在Ifx的EB配置頁面中,偏移固定為0,用戶不可配,只能通過掩碼確認ID號,例如下面的14對應二進制的1110B,即端口組包括P00.1~P00.3四個引腳。用戶使用時同樣使用Dio_Cfg.h中的宏定義。
5.2. Dio_MaskedWritePort
非標準接口,作為Dio_WriteChannelGroup的補充,可以同時設置任意不相鄰通道的輸出電平在工具配置頁面只有該功能的使能開關,該接口有PorId、Level、Mask三個參數。
PortId:端口號
Level:uint16類型的變量,bit0bit15分別對應Pxx.0Pxx.15
Mask:需要操作的引腳
6. 序列圖
6.1.讀GPIO電平
6.2. 設置GPIO電平
7. EB 工具配置
Dio模塊簡單,只是對Channel、Channel組、Port進行抽象,無太多注意事項。
7.1.General
無特殊講解,都是針對功能進行裁剪的開關。
7.2.DioPort
根據實際需要增加相應的Port組,一般情況下Port的名字與物理的端口號或某個功能保持一致,增加可讀性。
選中某個Port組向下展開后,可配置需要使用的Channel或ChannelGroup。
8. 參考資料
AUTOSAR Mcal Port - 模塊介紹 + EB工具配置介紹
General Purpose I/O Ports and Peripheral I/O Lines (Ports)