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