本文介紹如何通過EsDA開發(fā)套件,快速熟悉常用IO設(shè)備節(jié)點及其使用方法,大大縮短了用戶對EsDA的學(xué)習(xí)開發(fā)周期。
本文選用EPC6450-AWI開發(fā)板,以及圖形化設(shè)計工具AWFlow Designer進行測試講解,對常用IO設(shè)備節(jié)點和使用方法進行詳細說明。
前期了解
對AWFlow工具以及AWFlow理論并不了解的,可以點擊AWFlow文檔進行學(xué)習(xí):https://awtk.zlg.cn/pro/docs/AWFlow/
對AWFlow有一定的了解但是對EsDA和相關(guān)節(jié)點的綜合應(yīng)用并不了解的,可以點擊Z站的EsDA專欄進行學(xué)習(xí):https://z.zlg.cn/specialInfo?id=134
常用節(jié)點簡介
本文將對gpio引腳電平操作的gpio節(jié)點,gpio_in節(jié)點,gpio_out節(jié)點三個節(jié)點,對led燈操作的led節(jié)點,對按鍵操作的button節(jié)點,對adc通道采集的adc節(jié)點進行詳細描述。
1. gpio節(jié)點
1.1 查看幫助文檔
在搜索框中輸入gpio關(guān)鍵字即可檢索出gpio節(jié)點,點擊gpio節(jié)點即可看到右邊彈出gpio節(jié)點的幫助文檔界面,里面包含節(jié)點的簡介以及屬性,輸入和輸出的相關(guān)參數(shù)介紹。用戶可以在此操作下找尋相關(guān)節(jié)點的幫助文檔去了解節(jié)點的相關(guān)參數(shù)。
此節(jié)點將屬性值“GPIO序號”配置為GPIO輸入模式。因該節(jié)點為filter類型節(jié)點,所以有1輸入1輸出,當本節(jié)點輸入值msg.payload不為0時,則讀取屬性值“GPIO序號”的電平值作為輸出;若輸入值msg.payload為0則不將讀取到的引腳電平值進行輸出傳遞,此時無輸出。1.2 屬性
- 名稱:可用于索引查找本節(jié)點;顯示名稱:用于畫布上顯示的名稱,僅做顯示;GPIO序號:對需要操作的GPIO引腳序號進行選定,此引腳序號與目標板的絲印一一對應(yīng);模式:設(shè)置GPIO序號引腳的輸入模式,float是浮空輸入,pull up是輸入上拉,pull down是輸入下拉。
1.3 輸入
msg.payload :不為0則表示讀取屬性值“GPIO序號”的電平值,為0則不將讀取到的電平值進行輸出傳遞給下一個節(jié)點。
所有節(jié)點的輸入?yún)?shù)都是由上級節(jié)點的輸出提供的,且通常為msg對象攜帶的對應(yīng)屬性參數(shù)。
1.4 輸出
msg.payload:輸出的數(shù)據(jù),需要注意的是只有當輸入的msg.payload不為0時才有輸出,0表示讀取屬性值“GPIO序號”的電平值為低電平,1表示讀取到的是高電平。
1.5 加載demo示例
在相關(guān)節(jié)點的幫助文檔旁邊有一個示例,點擊后則可以看到對應(yīng)的節(jié)點demo示例,選中查看的demo示例,并加載到項目中即可查看。
1.6 自定義demo1.6.1 繪制流圖添加timer,fscript,gpio,fscript節(jié)點到畫布中并連線如下圖。
1.6.2 節(jié)點配置timer節(jié)點周期性的觸發(fā)fscript節(jié)點,需要更改周期性的時長可雙擊timer節(jié)點,修改屬性值“定時周期”即可。而fscript節(jié)點作為gpio的上級節(jié)點,那么傳遞的則是gpio的輸入值,在此希望能周期性的讀取電平值,所以msg.payload的值不為0即可,gpio的上級節(jié)點fscript的內(nèi)容:
msg.payload = 666
雙擊gpio節(jié)點,選擇目標板對應(yīng)絲印的GPIO序號,在此選擇的模式是浮空輸入如下圖。
gpio節(jié)點的消費者fscript節(jié)點作為輸出,直接打印gpio節(jié)點的輸出值顯示電平值即可,gpio節(jié)點的消費者fscript節(jié)點內(nèi)容如下:
print("read gpio level value is "+msg.payload)
關(guān)于timer,fscript節(jié)點的介紹可參考AWFlow節(jié)點使用手冊:
https://awtk.zlg.cn/pro/docs/AWFlow/1.6.3 下載驗證
將此流圖下載到目標板后,連接調(diào)試串口后,打開串口助手,改變UTX5的電平值可得到如下顯示:
2. gpio_in節(jié)點
將GPIO配置為輸入模式,并輪詢讀取電平狀態(tài)且將其作為輸出值。與gpio節(jié)點功能類似,都是配置為輸入模式且可以將讀取到的電平值作為輸出,只不過gpio_in是不間斷循環(huán)的輸出?,并且gpio節(jié)點還加了一個是否開啟讀電平的輸入。
2.1 屬性
名稱:可用于索引查找本節(jié)點;
顯示名稱:用于畫布上顯示的名稱,僅做顯示;
GPIO序號:對需要操作的GPIO引腳序號進行選定,此引腳序號與目標板的絲印一一對應(yīng);
模式:設(shè)置GPIO序號引腳的輸入模式,float是浮空輸入,pull up是輸入上拉,pull down是輸入下拉;
輪詢:是否開啟以設(shè)定值去輪詢的讀取GPIO序號的電平狀態(tài),off則關(guān)閉用設(shè)定值去輪詢讀取電平狀態(tài)而使用默認的50ms去輪詢讀取,on則以設(shè)定值去輪詢讀取電平狀態(tài)值;
輪詢間隔(ms):以設(shè)定值去輪詢讀取電平狀態(tài),設(shè)置生效的前提是輪詢需為on。
2.2 輸出
-
- msg.payload:屬性值“GPIO序號”的電平狀態(tài)值,0為低電平,1為高電平;
msg.topic:固定輸出gpio_in字符串。
pump類型節(jié)點無輸入,相關(guān)類型節(jié)點介紹可查看AWFlow節(jié)點開發(fā)指南進行更多的了解。
2.3 使用方法
2.3.1 繪制流圖
添加timer,fscript,log節(jié)點到畫布中并連接如下圖所示:
2.3.2 節(jié)點配置雙擊gpio_in節(jié)點,選擇目標板對應(yīng)絲印的GPIO序號,在此選擇的模式是浮空輸入,開啟以設(shè)定值2000ms去輪詢讀取gpio電平狀態(tài)值如下圖所示。
gpio_in節(jié)點的消費者節(jié)點fscript是對gpio_in的輸出參數(shù)進行輸出顯示,內(nèi)容如下:
msg.payload = "read gpio status is " + msg.payload + "n" + "msg.topic:"+msg.topic
用log節(jié)點對上一級節(jié)點的msg.payload輸出到調(diào)試窗口進行顯示。
2.3.3 下載驗證
將此流圖以下載運行的模式下載到目標板后,可在AWFlow Designer的調(diào)試窗口查看到如下信息:
3. gpio_out節(jié)點
配置為GPIO輸出,將輸入的msg.payload的值設(shè)置為GPIO的電平值。
3.1 屬性
名稱:可用于索引查找本節(jié)點;
顯示名稱:用于畫布上顯示的名稱,僅做顯示;
GPIO序號:對需要操作的GPIO引腳序號進行選定,此引腳序號與目標板的絲印一一對應(yīng);
模式:設(shè)置GPIO輸出模式,push pull為推挽輸出模式,open drain為開漏輸出模式;
GPIO初始狀態(tài):設(shè)置GPIO初始輸出的狀態(tài)值,0為低電平,1為高電平。
3.2 輸入
msg.payload:設(shè)置屬性GPIO序號的輸出電平值,0為低電平,1為高電平,2為電平翻轉(zhuǎn)。
sink類型節(jié)點無輸出。
3.3 使用方法
3.3.1 繪制流圖添加timer,fscript,gpio_out節(jié)點到畫布中,并連線如下圖所示。
3.3.2 節(jié)點配置timer節(jié)點周期性定時觸發(fā)fscript節(jié)點,這里的timer的屬性定時周期值配置為3000ms,而fscript節(jié)點作為gpio_out節(jié)點的上一級節(jié)點,主要內(nèi)容是設(shè)置gpio_out的輸入?yún)?shù),內(nèi)容如下:
if(((msg.payload/1000)%2)==0) {
msg.payload = 0
print("low leveln")
}else {
msg.payload = 1
print("high leveln")
}
雙擊gpio_out節(jié)點,選擇目標板對應(yīng)絲印的GPIO序號,在此選擇的模式是推挽輸出。
3.3.3 下載驗證
下載流圖到目標板后,可以用萬用表去查詢GPIO序號對應(yīng)的引腳電平值可知,電平是周期性的翻轉(zhuǎn)。
4. led節(jié)點
該節(jié)點主要有兩種模式,一種是設(shè)置led燈的狀態(tài),一種是設(shè)置快閃燈。
4.1 屬性
名稱:可用于索引查找本節(jié)點;
顯示名稱:用于畫布上顯示的名稱,僅做顯示;
led設(shè)備名稱:Led設(shè)備名稱,可根據(jù)不同的目標板對應(yīng)絲印進行設(shè)備選擇;
初始狀態(tài):對選中的led的設(shè)備設(shè)置初始狀態(tài)值,0為led燈的初始狀態(tài)為滅,1為led燈的初始狀態(tài)為亮。
4.2 輸入
-
- msg.device_name:led設(shè)備名稱,將與屬性值“l(fā)ed設(shè)備名稱”進行對比,若不同則該節(jié)點功能無效;msg.payload:模式一,設(shè)置led的狀態(tài)值。0為關(guān)閉led燈,1為開啟led燈,2為翻轉(zhuǎn)led燈;msg.timer:模式二,快閃燈。該輸入?yún)?shù)為設(shè)置定時閃爍的時間,單位ms,若為0則關(guān)閉快閃,大于0則設(shè)置閃爍間隔時間;
msg.fast_blink:模式二,快閃燈。設(shè)置定時快閃的次數(shù),在定時閃爍周期中的快閃次數(shù),輸入?yún)?shù)msg.timer與msg.fast_blink需同步設(shè)置才能生效。
sink類型節(jié)點無輸出。
4.3 設(shè)置燈狀態(tài)示例
4.3.1 繪制流圖
添加timer,fscript,led節(jié)點到畫布中并連線如下圖所示:
4.3.2 節(jié)點配置
timer節(jié)點周期性的去設(shè)置led燈的狀態(tài)值,fscript節(jié)點作為led的上一級節(jié)點,其內(nèi)容主要是對led設(shè)備狀態(tài)的設(shè)置:
msg.payload = 2
雙擊led節(jié)點,在屬性“l(fā)ed設(shè)備名稱”的下拉框中選擇對應(yīng)絲印的LED設(shè)備如下:
4.3.3 下載驗證下載流圖后可看到RUN燈周期性的3s翻轉(zhuǎn)一次。
4.4 快閃燈示例
4.4.1 繪制流圖
添加gpio_in,fscript,led節(jié)點到畫布,并連線如下圖所示:
4.4.2 節(jié)點配置
雙擊gpio_in節(jié)點,本節(jié)點主要作用就是運行流圖后只觸發(fā)一次fscript節(jié)點,所以要開啟定時輪詢,且輪詢間隔需設(shè)置盡量大一點如下圖所示:
fscript節(jié)點作為led的上一級節(jié)點,主要內(nèi)容是led相關(guān)的輸入?yún)?shù),內(nèi)容如下:
if(msg.payload == 0) {
msg.timer = 2000
msg.device_name = "/dev/led_run"
msg.fast_blink = 2
print("fast ledn")
}
雙擊led節(jié)點,在屬性“l(fā)ed設(shè)備名稱”的下拉框中選擇對應(yīng)絲印的LED設(shè)備如下:
4.4.3 下載驗證
下載流圖到目標板后,對gpio_in節(jié)點配置的引腳進行電平置低,5s內(nèi)切換到高電平后即可看到led燈2s閃爍2次的實驗現(xiàn)象。
5. button節(jié)點
5.1 屬性
- 名稱:可用于索引查找本節(jié)點;顯示名稱:用于畫布上顯示的名稱,僅做顯示;對應(yīng)的GPIO編號:對需要操作的GPIO引腳序號進行選定,此引腳序號與目標板的絲印一一對應(yīng);觸發(fā)條件:按鈕按下時的觸發(fā)條件,fall表示按鈕按下的觸發(fā)條件為GPIO下降沿觸發(fā),up表示按鈕按下的觸發(fā)條件為GPIO上升沿觸發(fā)。
5.2 輸出msg.payload :按鈕按下狀態(tài)輸出為on,松開狀態(tài)輸出為off,在初始化完成以及按鈕狀態(tài)發(fā)生改變的時候會輸出當前的狀態(tài)。
pump類型節(jié)點沒有輸入。
5.3 使用方法
5.3.1 繪制流圖
添加button,fscript,led節(jié)點到畫布中并連線如下圖所示:
5.3.2 節(jié)點配置
雙擊button節(jié)點,對需要操作的引腳進行選擇如下:
fscript節(jié)點作為button的消費者節(jié)點,內(nèi)容是button的相關(guān)輸出參數(shù):
if(msg.payload == "on"){
? ?msg.payload = 1
}else if(msg.payload == "off") {
? ?msg.payload = 0
}
雙擊led節(jié)點,選擇閃燈的led設(shè)備。
5.3.3 下載驗證
下載流圖后,對button配置的按鈕進行按下和松開的操作可以看到相應(yīng)led燈的效果。
6. adc節(jié)點
6.1 屬性
- 名稱:可用于索引查找本節(jié)點;顯示名稱:用于畫布上顯示的名稱,僅做顯示;通道號:進行采樣的ADC通道號,可根據(jù)不同的目標板對應(yīng)絲印進行設(shè)備選擇;采集次數(shù):ADC 通道對ADC值的采集次數(shù);采樣率:ADC通道號采樣率(每秒ADC的采樣次數(shù))。
6.2 輸出
-
- msg.payload:通道采樣的最終電壓值(mv);msg.vref:基準電壓;msg.bits:ADC通道位數(shù);
msg.rate:ADC通道采樣率。
pump類型節(jié)點沒有輸入。
6.3 使用方法
6.3.1 繪制流圖
添加adc,fscript,log節(jié)點到畫布中并連線。
6.3.2 節(jié)點配置
雙擊adc選擇對應(yīng)絲印的ADC設(shè)備如下:
fscript節(jié)點作為adc的消費者節(jié)點,其內(nèi)容主要是adc的相關(guān)輸出參數(shù):
msg.payload = "adc value is "+msg.payload
log節(jié)點對上一級fscript節(jié)點進行輸出顯示。6.3.3 下載流圖
下載流圖后,對adc配置的通道號進行不同電壓值的采樣結(jié)果如下: