本回我要說的是低功耗4G模組Air724UG的KEYPAD示例,我已整理成文,特供大家參考。
一、簡介
在電路設(shè)計(jì)中,通常需要較多的外部輸入,如果每個按鍵都單獨(dú)去占用一個 IO 接口,就會非常浪費(fèi)資源,為了減少 I/O 口的占用,通常將按鍵排列成矩陣形式,即矩陣鍵盤。
特性:
KEYIN0
掃描鍵盤輸入 0,與 UBOOT 復(fù)用,此管腳在模塊開機(jī)動作完成之前不能進(jìn)行拉高,電壓域?yàn)?V_GLOBAL_1V8。
KEYIN1
掃描鍵盤輸入 1,此管腳在模塊開機(jī)動作完成之前不能進(jìn)行拉高,電壓域?yàn)?V_GLOBAL_1V8。
KEYIN2、KEYIN3、KEYIN4、KEYIN5
掃描鍵盤輸入管腳,電壓域?yàn)?V_GLOBAL_1V8。
KEYOUT0、KEYOUT1、KEYOUT2、KEYOUT3
掃描鍵盤輸出管腳,電壓域?yàn)?V_GLOBAL_1V8。
KEYOUT4
掃描鍵盤輸出管腳 4,與 UART3_RXD 復(fù)用,電壓域?yàn)?V_GLOBAL_1V8。
KEYOUT5
掃描鍵盤輸出管腳 5,與 UART3_TXD 復(fù)用,電壓域?yàn)?V_GLOBAL_1V8。
注意:鍵盤接口的所有管腳不能復(fù)用為GPIO。
二、演示功能概述
三、準(zhǔn)備硬件環(huán)境
3.1 開發(fā)板準(zhǔn)備
使用 EVB_Air724 開發(fā)板,如下圖所示:
此開發(fā)板的詳細(xì)使用說明參考:
https://docs.openluat.com/air724ug/product/
Air724UG 產(chǎn)品手冊中的《EVB_Air724UG_AXX 開發(fā)板使用說明》,寫這篇文章時最新版本的使用說明為:《EVB_Air724UG_A14 開發(fā)板使用說明》;開發(fā)板使用過程中遇到任何問題,可以直接參考這份使用說明文檔。
API文檔:
https://doc.openluat.com/wiki/21?wiki_page_id=2068
3.2 數(shù)據(jù)通信線
USB數(shù)據(jù)線一根(micro USB)。
3.3 PC 電腦
WIN7以及以上版本的 WINDOWS 系統(tǒng)。
3.4 矩陣鍵盤
4x4 矩陣鍵盤
3.5 組裝硬件環(huán)境
USB 數(shù)據(jù)線插入 USB 口,另一端與電腦相連,撥碼開關(guān)全部撥到 ON,串口切換開關(guān)選擇 UART1,USB 供電的 4V 對應(yīng)開關(guān)撥至 ON 檔,連接矩陣鍵盤,把鍵盤陣列軟排線接口插入開發(fā)板相對印引腳,keyin2 keyin3 keyin4 keyin5 keyout0 keyout1 keyout2 keyout3,如下圖所示。
四、準(zhǔn)備軟件環(huán)境
4.1 下載調(diào)試工具
使用說明參考:
Luatools下載和詳細(xì)使用
https://docs.openluat.com/Luatools/
4.2 源碼及固件
1、底層 core 下載
下載底層固件,并解壓。
鏈接:
https://docs.openluat.com/air724ug/luatos/firmware/
如下圖所示,紅框的是我們要使用到的
2、本教程使用的demo見附件:
https://gitee.com/openLuat/LuatOS-Air724UG/tree/master/script_LuaTask/demo/keypad
4.3 下載固件和腳本到開發(fā)板中
打開 Luatools,開發(fā)板上電開機(jī),如開機(jī)成功 Luatools 會打印如下信息。
點(diǎn)擊項(xiàng)目管理測試選項(xiàng)。
進(jìn)入管理界面,如下圖所示。
點(diǎn)擊選擇文件,選擇底層固件,我的文件放在 D:luatOSAir724 路徑中
點(diǎn)擊增加腳本或資源文件,選擇之前下載的程序源碼,如下圖所示。
點(diǎn)擊下載底層和腳本,下載完成如下圖所示。
五、代碼示例介紹
5.1 API 說明
5.1.1 powerKey.setup(longPrd, longCb, shortCb) 開機(jī)鍵功能配置
配置開機(jī)鍵長按彈起和短按彈起的功能.
如何定義長按鍵和短按鍵,例如長按鍵判斷時長為 3 秒:
按下大于等于 3 秒再彈起判定為長按鍵;
按下后,在3 秒內(nèi)彈起,判定為短按鍵
名稱 | 傳入值類型 | 釋義 |
longPrd | number | 可選參數(shù),默認(rèn)為 3000 長按鍵判斷時長,單位毫秒 |
longCb | function | 可選參數(shù),默認(rèn)為 nil 長按彈起時的回調(diào)函數(shù),如果為 nil,使用默認(rèn)的處理函數(shù) |
shortCb | function | 可選參數(shù),默認(rèn)為 nil 短按彈起時的回調(diào)函數(shù) |
5.1.2 創(chuàng)建一個 tKeypad 表,儲存所有按鍵值(16 個鍵盤元素 +1 個開關(guān)機(jī)鍵元素)
--每個元素的索引為行列值拼接而成的字符串,值為按鍵名的字符串
--例如:按鍵名為"1"的行值為 5,列值為 3,則["53"] = "1"
5.1.3 定義某個 keyName 按鍵的長按下消息處理函數(shù)
5.1.4 定義一個按鍵消息處理函數(shù)
--按鍵消息處理函數(shù)
5.1.5 注冊按鍵消息處理函數(shù)
5.1.6 初始化鍵盤陣列
5.2 testKeypad.lua 代碼
注冊按鍵消息處理函數(shù) rtos.on(rtos.MSG_KEYPAD,keyMsg),初始化鍵盤陣列 rtos.init_module(rtos.MOD_KEYPAD,0,0x0F,0x0F),當(dāng)有鍵盤按下或抬起時按鍵消息處理函數(shù)會打印出對應(yīng)的行列值。
5.3 main.lua 代碼
本代碼為主程序腳本,系統(tǒng)啟動后首先會對 4G 網(wǎng)絡(luò)進(jìn)行配置,等待網(wǎng)絡(luò)連接成功,然后加載矩陣鍵盤測試模塊。
六、開機(jī)調(diào)試
6.1 開發(fā)板開機(jī)
連接好硬件并下載固件后,啟動 Luatools 軟件,系統(tǒng)運(yùn)行信息將顯示在界面中。紅框中為開發(fā)板連接到 PC 機(jī)后正常打印的信息,如下圖所示。
6.2 鍵盤調(diào)試
鍵盤按下或抬起時按鍵消息處理函數(shù)會打印出對應(yīng)的行列,true 為按鍵按下,false 為按鍵抬起。
七、常見問題
7.1 為什么 KEYIN0 的按鍵在開機(jī)時被按下后就會不開機(jī)。
答:因?yàn)?KEYIIN0 信號復(fù)用為是 USB_BOOT,如果被按下就會進(jìn)入下載模式,就進(jìn)入不了開機(jī)流程。只需重新斷電開機(jī)就能恢復(fù)
7.2 為什么按下按鍵時沒反應(yīng)?
1、看下按鍵引腳是否與模塊引腳是否接對?鍵盤是不是 ok?
2、是不是引用了 powKey.lua ,關(guān)機(jī)按鍵默認(rèn)行列是(255,255)不需另外配置。
分享完畢,歡迎關(guān)注
-
電路設(shè)計(jì)
+關(guān)注
關(guān)注
6673文章
2451瀏覽量
204144 -
接口
+關(guān)注
關(guān)注
33文章
8575瀏覽量
151014 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5032瀏覽量
97371 -
模組
+關(guān)注
關(guān)注
6文章
1487瀏覽量
30360
發(fā)布評論請先 登錄
相關(guān)推薦
評論