英創公司的ARM9工控主板產品 EM9360是一款預裝WinCE操作系統,以多種通訊接口、支持各種擴展為其技術特色。EM9360的板載的3路以太網接口、6路串口以及1路CAN接口,均帶有標準的WinCE驅動程序,支持應用程序通過WinCE相應的API函數來操作各路網絡接口。此外EM9360還與英創公司其他ARM9主板一樣,帶有精簡ISA擴展總線以及12位通用GPIO,精簡ISA總線的基本使用方法可參考英創網站的相關信息,而本文則主要介紹EM9360主板中12位GPIO的各種使用方法。
EM9360的12位通用數字IO的各種使用方法列表如下:
數字IO |
高位地址 |
時間同步 |
外部中斷 |
矩陣鍵盤 |
|
GPIO0 |
PPS_IN# |
||||
GPIO1 |
PPS_OUT# |
||||
GPIO2 |
IRQ2 |
||||
GPIO3 |
IRQ3 |
||||
GPIO4 |
ISA_SA5 |
4X4矩陣鍵盤 |
|||
GPIO5 |
ISA_SA6 |
||||
GPIO6 |
ISA_SA7 |
COM2_RST# |
|||
GPIO7 |
ISA_SA8 |
COM3_RST# |
|||
GPIO8 |
ISA_SA9 |
COM4_RST# |
|||
GPIO9 |
ISA_SA10 |
COM5_RST# |
|||
GPIO10 |
ISA_SA11 |
COM6_RST# |
|||
GPIO11 |
ISA_SA12 |
COM7_RST# |
通用GPIO
EM9360上電后的各位IO均處于數字輸入狀態,通過相應的API函數(定義在em9360_isa_dio.h文件中)這12位GPIO可獨立設置為輸入或輸出,輸出電平也可獨立設置。
精簡ISA總線的高位地址線
基本的精簡ISA總線只包含低5為地址總線SA0 – SA4,對大多數IO類型的擴展,5位地址線已足夠使用。為了支持存儲器類型的擴展,EM9360提供對高位地址總線的支持,其中的SA5 – SA12與GPIO4 – GPIO11復用管腳。為了激活高位地址總線,應用程序需在程序初始化階段,通用調用API函數
int ISA_ReadUchar( int nSeg, UINT nOffset, UCHAR* pRdValue );
進行一次“啞讀”即可。具體需要激活的高位地址還可通過偏移量nOffset的輸入值來選擇,但至少需要激活SA5和SA6這2位地址總線。舉例說明如下:
1、激活SA5和SA6,而其他的還是保持為GPIO,則nOffset = 0x007F;
2、激活SA5–SA7,而其他的還是保持為GPIO,則nOffset = 0x00FF;
3、激活SA5–SA12,最大訪問8KB空間,則nOffset = 0x1FFF;
在使用高位地址擴展時,需要注意以下事宜:
·精簡ISA總線有2個片選輸出,其中CS1#只支持最大1KB的訪問空間,而CS0#則可支持最大8KB的訪問空間,所以通常用CS0#作為存儲器單元的片選控制。
·若客戶應用還需要訪問更大空間,EM9360還可引出SA13 – SA15信號,使CS0#的訪問空間達到64KB。
精簡ISA總線擴展的存儲器單元一般只能用作數據存儲,不能作為程序運行空間。
·激活的地址線應當是由小至大,連續地址空間。
時間同步功能
EM9360支持時間同步功能,基本的使用方法是應用程序打開“PPS1:”設備驅動程序,此時GPIO0將自動轉為同步脈沖輸入PPS_IN#(低電平有效)。PPS驅動程序被PPS_IN#脈沖觸發后,將立即發送時間同步事件,供上層應用線程做必要處理。根據用戶設置,PPS驅動程序還可在GPIO1上輸出同步脈沖PPS_OUT#(同樣是低電平有效),以及自動對當前時間進行整秒調整。
更多的外部中斷
基本的精簡ISA總線只提供1條外部硬件中斷輸入IRQ1,上升沿有效。若客戶應用需要擴展更多的通訊接口,如增加第二路CAN接口、增加8路串口等等,這時僅僅一條外部中斷就不夠了,需要更多的外部中斷支持,GPIO2和GPIO3則可用于外部中斷輸入。事實上EM9360的驅動已可支持類似這樣的擴展,感興趣的客戶可與英創公司聯系了解進一步的使用方法。
作為RS485接口的RST#
GPIO6–GPIO11還可分別作為COM2 – COM7的RTS#控制信號,低電平有效。對RS485接口,若需要使用RTS方向控制方案,則在設置串口參數時,需要特別地把RTS控制段設置為RTS_CONTROL_TOGGLE,相關的代碼如下所示:
GetCommState( m_hSer, &dcb ); // 讀取當前參數塊
dcb.fRtsControl = RTS_CONTROL_TOGGLE; // 設置RTS方向控制
SetCommState(m_hSer, &dcb); // 重設串口參數
上述代碼中m_hSer為打開串口文件“COMx:”的文件句柄。
在使用RS485通訊時,一般把RTS#有效(低電平)作為發送狀態,RTS#無效(高電平)為接收狀態。從發送狀態切換回接收狀態,作為方向控制信號的RTS#,可能會有最長1ms的延時,因此為了防止系統出現收發狀態沖突的情況,RS485的波特率最好不超過9600bps。
矩陣鍵盤
EM9360支持由GPIO驅動的4×4矩陣鍵盤,具體配置如下:
虛擬鍵碼 |
GPIO5 - KIN0 |
GPIO7 - KIN1 |
GPIO8 - KIN2 |
GPIO10 - KIN3 |
GPIO4 - KOUT0 |
VK_ESCAPE |
VK_0 |
VK_DECIMAL |
VK_BACK |
GPIO6 - KOUT1 |
VK_CAPITAL |
VK_1 |
VK_2 |
VK_3 |
GPIO8 - KOUT2 |
VK_SPACE |
VK_4 |
VK_5 |
VK_6 |
GPIO10 - KOUT3 |
VK_RETURN |
VK_7 |
VK_8 |
VK_9 |
EM9360已內置了基于GPIO的矩陣鍵盤驅動程序,加載方法是在應用程序中調用:
HANDLE hDevice = NULL;
hDevice = ActivateDevice( TEXT('Drivers\\gpio_keypad'), 0);
注意在應用程序退出時,應卸載該驅動程序,以避免矩陣鍵盤驅動程序被反復加載。
我們會根據客戶的應用需求,對EM9360的GPIO賦予更多的功能,但無論GPIO有多少功能,在面向具體應用時,每位GPIO只能選擇一種應用。對此,客戶在進行GPIO功能配置時需特別小心,避免在一個管腳選擇多種功能,造成運行結果異常,長期處于這種異常狀態還可能導致主板硬件損壞。
已購買EM9360的客戶,若需要使用本文所介紹的新增功能,如RS485 RTS#方向控制等,一般需要更新內核和SDK。可以把主板寄回由我們免費更新內核,并從英創公司網站上下載新的SDK,就可使用本文所介紹的全部功能了。
-
嵌入式主板
+關注
關注
7文章
6094瀏覽量
36053
發布評論請先 登錄
相關推薦
英創信息技術工控主板EM9160介紹

英創信息技術ARM9工控主板的ETA754 PWM模塊應用

評論