EM9560工控主板是以EM9460工控主板為基礎,并針對客戶應用的需求,增加了更多通用數字IO,于2012年初推出的一款低成本嵌入式主板產品。該產品保持了Linux操作系統作為客戶應用程序的軟件平臺,其基本接口功能API函數上也與前期產品EM9460完全兼容,從而保證了客戶的應用程序可不加修改的直接運行于EM9560。
為了充分利用主板寶貴的管腳資源,我們為EM9560的精簡ISA總線配置了更加靈活的使用方法,其中一種典型應用是保持精簡ISA總線的LCD接口,而精簡ISA總線的高位地址和擴展控制線共6位則作為數字輸出DOUT0–DOUT5,其具體的對應關系如下:
精簡ISA總線 | 專用數字輸出 | 簡要說明 |
ISA_SA3 | DOUT0 | 上電初始狀態為高電平 |
ISA_SA4 | DOUT1 | 上電初始狀態為高電平 |
ISA_CS0n | DOUT2 | 上電初始狀態為高電平 |
ISA_CS1n | DOUT3 | 上電初始狀態為高電平 |
ISA_WEn | DOUT4 | 上電初始狀態為高電平 |
ISA_RDn | DOUT5 | 上電初始狀態為高電平 |
在上述方案中,由于不再使用精簡ISA總線擴展功能,這時系統的IO資源就只有GPIO0-GPIO15、GPIOX0–GPIOX29、以及DOUT0–DOUT5。如果IO資源仍然不夠,可通過在精簡ISA總線的數據總線上掛接一片簡單的總線驅動芯片(如74HCT245),就可獲得額外的8路專用的數字輸入DIN0–DIN7。具體的電路如下:
上圖中,SD0–SD7為精簡ISA的數據總線,DIN0–DIN7為外部需要監測的數字輸入,而DIN_EN#信號則由ISA_SA2充當。當應用程序進行相應的讀操作時,ISA_SA2(即DIN_EN#)將輸出低電平脈沖把DIN0–DIN7導入EM9560。
應用程序通過打開“/dev/em9x60_isa”設備驅動文件,通過標準的讀寫操作就可實現對專用數字IO的讀寫。具體代碼如下:
打開設備驅動程序文件
int fd;
fd = open('/dev/em9x60_isa', O_RDWR); // 打開ISA驅動程序
設置數字輸出DOUT
unsigned int uDout = 0x3F; // 設置DOUT全高,低6位有效
rc = write(fd, &uDout, sizeof(unsigned int));
uDout = 0; // 設置DOUT全低,低6位有效
rc = write(fd, &uDout, sizeof(unsigned int));
讀取數字輸入DIN的當前狀態
unsigned int uDin; // 注意,讀取的數據只有低8位有效
rc = read(fd, &uDin, sizeof(unsigned int));
在上述的數據訪問中,read / write函數的緩沖區長度必須是unsigned int類型的,否則函數將返回出錯。
-
Linux
+關注
關注
87文章
11345瀏覽量
210389 -
嵌入式主板
+關注
關注
7文章
6086瀏覽量
35613
發布評論請先 登錄
相關推薦
評論