天天看點

EB配置工具 MCAL NXP S32 Dio配置說明

Port代碼配置內建

先講下底層代碼在哪裡找,後面就不寫了。

EB配置工具 MCAL NXP S32 Dio配置說明

所有的底層代碼都在你安裝的NXP 提供的mcal包裡面,我這邊是在c盤下面,src和include就是我們內建需要的代碼。

1、先看一下上次配置生成的代碼

主要分為兩部分,一部分是Port_Cfg.c Port_Cfg.h與Port_PBcfg.c, 我是不太懂這個postbuild和prebuild的分類的,好像是後面那個初始化的時候,生成的那個config是不需要入參的。

EB配置工具 MCAL NXP S32 Dio配置說明
EB配置工具 MCAL NXP S32 Dio配置說明

我這個是選的postbuild,是以Port_Cfg.c裡面是空的,Port_Cfg.h 裡面主要是一些API的宏的開關,還有一些配置的IO口的索引,這個比較簡單,隻要你配置了,拿出來一看就基本上懂了。

Port_PBcfg.c裡面,基本上都是配置的内容了,包括未使用的管腳,屬性以及需要設定的預設值,最重要的一個表就是所使用的管腳的表。

EB配置工具 MCAL NXP S32 Dio配置說明

這裡面就是我要使用的一些管腳配置生成的一個數組。

2、Port代碼內建

內建的話,在那個內建手冊裡面都有寫需要的檔案支援,如果不想去看的話,可以直接編譯,提示你沒有的檔案就去給我的mcal包裡面去搜一下,基本上涉及到其他子產品的都是通用的檔案,比如Base裡面的Port_MemMap.h。最主要的是Port的代碼。

EB配置工具 MCAL NXP S32 Dio配置說明

我這裡面就是這些底層檔案,來支撐配置檔案的使用。

Port的內建比較簡單,隻要在初始化的時候調用Port_Init(&Port_Config)就可以了。

EB配置工具 MCAL NXP S32 Dio配置說明

這個裡面包括了未使用管腳以及已經使用管腳的配置,隻需要調用這個初始化函數就OK了,其他的函數可以直接去看一下。

Dio配置

Dio的配置稍微簡單點,主要是配合Port的使用一些基本的IO輸入與輸出,channel組什麼的我也沒用過,使用的過程中我也隻是一個一個的設定。這裡面前面的API勾選就不看了,主要是針對Dio_Port的這個配置。看簡介寫的是這樣的:

EB配置工具 MCAL NXP S32 Dio配置說明

意思應該是每一個Dio Port Id代表着一組IO口,是以我這邊把所有的都标注了下。

EB配置工具 MCAL NXP S32 Dio配置說明

再看每一個選項裡面,DioChannel選項,我本來以為是對應的Dio Channel Id 是我Port裡面設定的Id,後面再點燈的時候發現寫寄存器的值和IO口是不對的,後來才發現這個是端口的符号,比如我的LED燈在的位置是PA6,這裡面對應的Dio Channel Id就是6,然後代碼會自動生成PA6對應的MSCR的number,這個等下看下生成的代碼就清楚了。

EB配置工具 MCAL NXP S32 Dio配置說明

Dio我就配置到這裡就結束了,至于DioChannelGroup我就沒有再看,反正現在也用不到,有興趣的就看一下吧。

Dio代碼內建

先把Dio需要的底層代碼拷貝一下,再看下配置生成代碼。

Dio應該是不需要初始化的,可能是我配置的太少,這個沒試過,用的也都是自己嘗試的,Dio_Cfg.c裡面的也沒用。

EB配置工具 MCAL NXP S32 Dio配置說明

這邊好像是我配置了所有的組 A - I ,生成了9個可找到的進行讀寫的PIN,還有個Dio_Config,是空的,就不看了。

看下剛才管腳組生成的索引吧。

Dio_Cfg.h 裡面前面就是API的宏開關,後面是生成的管腳索引。

EB配置工具 MCAL NXP S32 Dio配置說明

這個是配置的PE[13] 生成的果然是MSCR的值 GPIO[77],下面看下使用。

點亮LED訓示燈

前面Port的初始化工作已經完成了,這裡直接調用輸出就可以實作了。我這邊使用的是Dio_WriteChannel這個函數

Dio_WriteChannel(DioConf_DioChannel_DioChannel_LED,STD_HIGH);

Dio_WriteChannel(DioConf_DioChannel_DioChannel_LED,STD_LOW);

将Dio_Cfg.h 裡面生成的配置直接放到入口參數就OK了,代碼也很簡單,可以看到最後是寫進去了對應的寄存器,可以設定個計數,反轉LED就可以閃爍起來了,其他的API也可以嘗試下讀寫,初期可以多實踐實踐。

寫的隻是經驗,有啥搞錯的也請大家指明一下,也是第一次玩這個,看網上教程很少,基本是都是自己在嘗試,順便記錄下,發現寫出來也能自己更清晰些。

繼續閱讀