在使用 LuatIO 進行嵌入式應用開發時,合理配置 GPIO 的復用功能是實現外設控制的前提。本文全面解析 GPIO 引腳由普通 IO 轉換為復用功能引腳的初始化流程,包括時鐘使能、模式選擇、速度設置與函數調用順序,提供結構化配置思路與最佳實踐建議。
LuatIO工具可以將模塊內多個引腳同時支持的一個功能指定給配置的引腳使用,方便進行管腳復用配置操作,目前的主流型號都可以用此工具進行配置。
一、LuatIO工具在LuaTools的入口
LuatIO工具現已集成在LuaTools中,截圖說明如下;
1. LuaTools如何初次下載LuatIO或者升級LuatIO版本?


2. LuatIO在LuaTools中的入口在哪里?



二、GPIO 配置
GPIO 配置的全過程,我們分為三部分進行說明,分別是:
1、LuatIO 可視化 GPIO 復用功能配置工具;
2、由 LuatIO 生成 pins_$model.json 文件;
3、API 庫函數 pins 動態配置;
4、通過 LuaTools 將 pins_$model.json 文件下載到模組中;
1,LuatIO 工具
注意:LuatIO工具僅支持Win10及之上Windows操作系統。
LuatIO工具使用; 目前LuatIO工具已集成在luatools中,可以在項目管理界面打開:

LuatIO 界面截圖如下:

其中:
左側為 GPIO 復用功能配置選擇欄,空白框內可以寫該管腳相應的注釋說明;
右側為 Air780EPM 的管腳排列圖,其中淡綠色部分為可以配置的 GPIO 管腳;
以 Air780EPM 開發板 V1.3 為例,根據其硬件實際使用情況配置后的截圖如下:

2,生成 pins_$model.json 文件
生成對應型號的json文件分為以下幾步
1.打開LuatIO配置工具。

2.點擊型號選擇

3.配置自己需要復用的管腳

4.配置完成后管腳處會顯示對應功能,右側俯視圖對應管腳顯示會變暗,下方會顯示對應功能。

5.點擊保存即可
生成.josn配置文件最新固件兼容三種命名,以Air780EPM為例:
pins_Air780EPM.json
pins_AIR780EPM.json
pins_air780epm.json

2.1,生成 pins_Air8000A.json 文件
1.點擊“保存”;

2.命名"pins_Air8000A";

說明:
(1)文件名必須嚴格遵守 pins_$model.json 格式:pins_Air8000A;
(2)pins_Air8000A.json 截圖如下:

2.2,生成 pins_Air780EPM.json 文件
1.點擊"保存";

2.命名"pins_Air780EPM";

說明:
(1)文件名必須嚴格遵守 pins_$model.json 格式:pins_Air780EPM;
(2)pins_Air780EPM.json 截圖如下:


2.3,生成 pins_air8101.json 文件
1.點擊"保存";

2.命名"pins_air8101.json";

說明:
(1)文件名必須嚴格遵守 pins_$model.json 格式:pins_air8101.json;
(2)pins_air8101.json 截圖如下:

3,API 庫函數 pins 動態配置
首先,請使用 LuatIO 的可視化工具進行配置,如果不需要io復用功能通常用不到pins這個功能;
其次,本庫的 API 屬于高級用法, 僅動態配置管腳時使用(LuatIO 本來已經初始化好了,但在代碼運行過程中需要對某個或某些 GPIO 的復用功能進行動態調整);
再次,pins 是 LuatOS 核心庫,在腳本代碼中不需要 require,可以直接使用;
pins.setup(pin, func)
在 pins_$model.json 文件初始化之后,再一次或多次指定某個或多個管腳的功能變化;
說明!此功能是為了動態修改管腳復用,99% 的用戶可能不會用到本 API;

4,將 pins_$model.json 下載到模組
首先,本小節我們只針對不需要"API 庫函數 pins 動態配置"的情況進行演示;
其次,即便需要"API 庫函數 pins 動態配置"的情況,pins 的使用方法跟其它 API 核心庫函數沒有區別。
4.1,將 pins_Air8000A.json 下載到模組
1.以 Air8000A V2008固件為例;
截圖如下:

2.pins_Air8000A 保存在 json 文件夾內;

3.下載到 Air8000A 中;

4.2,將 pins_Air780EPM.json 下載到模組
1.以 Air780EPM 開發板 V1.3 出廠固件為例;
截圖如下:

2.pins_Air780EPM 保存在 json 文件夾內;

3.下載到 Air780EPM 開發板 V1.3 中;

4.3,將 pins_air8101.json 下載到模組
1.以 Air8101 核心板為例,選擇最新的固件;

2.將pins_air8101.json引腳配置文件增加到腳本和資源列表;

3.將pins_air8101.json 同代碼一起下載到 Air8101 核心板中;

三,其它說明
1. Lua 代碼中,需要聲明調用 pins_Air780EPM.json 文件嗎?
答案:
不需要;
2. 只有 Air780EPM 支持 pins_Air780EPM.json 和 API 庫函數 pins 搭配的配置方式嗎?
回答:
不是的;
注意!LuatIO 工具(pins_$model.json)和 API 函數 pins 都支持主推型號,老型號都不再支持。
3. 雖然該工具很方便,但我已經習慣了 mcu.altfun()函數配置,還可以繼續使用嗎?
回答:
不可以了;
Air780EPM 底層固件從 V2006 開始,將只支持 pins_Air780EPM.json 一種 GPIO 復用功能配置方式,之前的 mcu.altfun()方式將不再繼續支持!遇到動態配置的情況,可以結合 API 庫函數 pins 進行操作。
也就是說,如果您使用 Air780EPM 底層固件 V2005 或之前的版本已經量產出貨,后續您因某種原因需要遠程升級基于 V2006 及其后續底層固件版本的軟件時,您的腳本文件也需要通過 pins_Air780EPM.json 的方式重新對 GPIO 復用功能進行配置,原來的 mcu.altfun()配置方式將會失效。
4. 為什么我在Docs 文檔網站里還經常看到關于 mcu.altfun()函數的出現?
回答:
在整理了;
mcu.altfun()的 API 庫函數說明已經從 Docs 上撤掉,但確實還有非常多的其它文檔說明仍然"保留",我們可能要花一段時間才能完全"清除";
5. 如果未進行pins_Air780EPM.json的配置,代碼可以運行嗎?
回答:
可以運行;
會以Air780EPM各GPIO的默認功能執行;
如果所引用的GPIO復用功能跟默認功能不一致,代碼就會無法執行。
6. 模組的demo和json文件需要分開燒錄嗎?
回答:
不用分開燒錄,在項目管理界面添加自己的demo和配置好的文件后燒錄一次即可。
今天的內容就分享到這里了~
審核編輯 黃宇
-
GPIO
+關注
關注
16文章
1328瀏覽量
56218
發布評論請先 登錄
MCU工程初始化,到底該不該交給工具?
EtherCAT總線初始化步驟
CW32F030C8T6:GPIO配置的全攻略
關于野火stm32開發板,自己構建庫函數點亮LED中GPIO初始化函數的優化
VVIC 平臺商品詳情接口高效調用方案:從簽名驗證到數據解析全流程
GraniStudio:IO初始化以及IO資源配置例程
GraniStudio:初始化例程
MCU外設初始化:為什么參數配置必須優先于使能
是否必須使用LuatIO?Air8000 GPIO配置與設計規范深度解析
定義IO初始化結構體
NVMe高速傳輸之擺脫XDMA設計之七:系統初始化
LuatIO:一鍵可視化,讓GPIO配置成為物聯網開發的“絲滑體驗”!
掌握 LuatIO:GPIO 復用模式初始化配置全流程解析
評論