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