在工業(yè)控制領(lǐng)域,數(shù)字IO以其簡(jiǎn)單、靈活的特性,得到了廣泛的應(yīng)用。為了進(jìn)一步提高英創(chuàng)公司的嵌入式工控主板EM9000上32位數(shù)字IO的使用效率,在向下兼容的原則下,我們專門針對(duì)數(shù)字IO進(jìn)行了一次增強(qiáng)升級(jí)。升級(jí)后的數(shù)字IO被簡(jiǎn)單的規(guī)劃為三類,即8位數(shù)字輸入DIN0–DIN7、8位數(shù)字輸出DOUT0–DOUT7、以及16位通用數(shù)字GPIO0–GPIO15,相應(yīng)地提供了一組新的API函數(shù)。對(duì)GPIO,新的API函數(shù)提供了按位操作的功能。
為了保護(hù)客戶在EM9000上已經(jīng)進(jìn)行的開發(fā),整個(gè)數(shù)字IO的增強(qiáng)擴(kuò)展都是在與過去功能和代碼完全兼容的前提下進(jìn)行的,即EM9000原有的數(shù)字IO功能及API函數(shù)仍然有效。新增的API函數(shù)主要是面向新開發(fā)而設(shè)置。為了方便新API函數(shù)的操作,我們?cè)赩4.0及以后版本的數(shù)據(jù)手冊(cè)中,采用了新的數(shù)字IO信號(hào)名稱,新名稱與老名稱的對(duì)應(yīng)關(guān)系如下:
舊名稱 |
新名稱 |
CN2 |
新名稱 |
舊名稱 |
|
PIN# |
PIN# |
||||
P1.0 |
DIN0 |
1 |
2 |
DIN1 |
P1.1 |
P1.2 |
DIN2 |
3 |
4 |
DIN3 |
P1.3 |
P1.4 |
DIN4 |
5 |
6 |
DIN5 |
P1.5 |
P1.6 |
DIN6 |
7 |
8 |
DIN7 |
P1.7 |
P2.0 |
DOUT0 |
9 |
10 |
DOUT1 |
P2.1 |
P2.2 |
DOUT2 |
11 |
12 |
DOUT3 |
P3.0 |
P3.1 |
DOUT4 |
13 |
14 |
RSTOUT# |
RSTOUT# |
P3.2 |
GPIO12 |
15 |
16 |
DOUT7 |
P3.3 |
P3.4 |
DOUT5 |
17 |
18 |
DOUT6 |
P3.5 |
P4.0 |
GPIO8 |
19 |
20 |
GPIO9 |
P4.1 |
P4.2 |
GPIO10 |
21 |
22 |
GPIO11 |
P4.3 |
P2.3 |
GPIO13 |
23 |
24 |
PWM_OUT |
PWM_OUT |
P2.4 |
GPIO14 |
25 |
26 |
GPIO15 |
P2.5 |
P5.0 |
GPIO0 |
27 |
28 |
GPIO1 |
P5.1 |
P5.2 |
GPIO2 |
29 |
30 |
GPIO3 |
P5.3 |
P5.4 |
GPIO4 |
31 |
32 |
GPIO5 |
P5.5 |
P5.6 |
GPIO6 |
33 |
34 |
GPIO7 |
P5.7 |
+5V |
+5V |
35 |
36 |
+5V |
+5V |
RSTIN# |
RSTIN# |
37 |
38 |
BATT3V |
BATT3V |
GND |
GND |
39 |
40 |
GND |
GND |
針對(duì)新的數(shù)字IO所增加的新API函數(shù)原型定義如下:
///////////////////////////////////////////////////////////////////////////////////////
// 功能描述:對(duì)各個(gè)GPIO位執(zhí)行輸出使能操作,即設(shè)置為輸出狀態(tài)。
// 其中EnBit字中比特為1所對(duì)應(yīng)的GPIO位設(shè)置為輸出,為0則保持原來的
// 狀態(tài)不變。
// 注意:對(duì)設(shè)置為輸出的GPIO,仍然保留了輸入的功能。
//
// 輸入參數(shù) EnBits: 16-bit字變量,其中為1的bit位,表示需要輸出使能。
//
// EnBits各比特位與EM9000各位GPIO的對(duì)應(yīng)關(guān)系如下:
// ---------------------------------------------------------------------------
// 輸入?yún)?shù) | 對(duì)應(yīng)GPIO | EM9000老定義
// ---------------------------------------------------------------------------
// EnBits.D0 | GPIO0 | P5.0 / SA5
// EnBits.D1 | GPIO1 | P5.1 / SA6
// EnBits.D2 | GPIO2 | P5.2 / SA7
// EnBits.D3 | GPIO3 | P5.3 / SA8
// EnBits.D4 | GPIO4 | P5.4 / SA9
// EnBits.D5 | GPIO5 | P5.5 / SA10
// EnBits.D6 | GPIO6 | P5.6 / SA11
// EnBits.D7 | GPIO7 | P5.7 / SA12
// EnBits.D8 | GPIO8 | P4.0 / IRQ1
// EnBits.D9 | GPIO9 | P4.1
//EnBits.D10 | GPIO10 | P4.2
// EnBits.D11 | GPIO11 | P4.3
// EnBits.D12 | GPIO12 | P3.2 / CS0#
// EnBits.D13 | GPIO13 | P2.3
// EnBits.D14 | GPIO14 | P2.4
// EnBits.D15 | GPIO15 | P2.5
// -------------------------------------------------------------------------
//
// 返回值 = 0: 操作成功
// < 0: 操作失敗
///////////////////////////////////////////////////////////////////////////////////////
int PIO_OutEnable( UINT16 EnBits );
///////////////////////////////////////////////////////////////////////////////////////
// 功能描述:對(duì)各個(gè)GPIO位執(zhí)行輸出禁止操作。其中DisBit字中為1的對(duì)應(yīng)GPIO位輸
// 出被禁止,
// 為0時(shí)則保持原來的輸入輸出特性。當(dāng)輸出被禁止后,該GPIO位只能作為
// 輸入。
//
// 輸入?yún)?shù) DisBits: 16-bit字變量,其中為1的bit位,表示輸出需禁止。
//
// DisBits各比特位與EM9000各位GPIO的對(duì)應(yīng)關(guān)系如下:
// ---------------------------------------------------------------------------
// 輸入?yún)?shù) | 對(duì)應(yīng)GPIO | EM9000老定義
// ---------------------------------------------------------------------------
// DisBits.D0 | GPIO0 | P5.0 / SA5
// DisBits.D1 | GPIO1 | P5.1 / SA6
// DisBits.D2 | GPIO2 | P5.2 / SA7
// DisBits.D3 | GPIO3 | P5.3 / SA8
// DisBits.D4 | GPIO4 | P5.4 / SA9
// DisBits.D5 | GPIO5 | P5.5 / SA10
// DisBits.D6 | GPIO6 | P5.6 / SA11
// DisBits.D7 | GPIO7 | P5.7 / SA12
// DisBits.D8 | GPIO8 | P4.0 / IRQ1
// DisBits.D9 | GPIO9 | P4.1
// DisBits.D10 | GPIO10 | P4.2
// DisBits.D11 | GPIO11 | P4.3
// DisBits.D12 | GPIO12 | P3.2 / CS0#
// DisBits.D13 | GPIO13 | P2.3
// DisBits.D14 | GPIO14 | P2.4
// DisBits.D15 | GPIO15 | P2.5
// -----------------------------------------------------------------------------
//
// 返回值 = 0: 操作成功
// < 0: 操作失敗
///////////////////////////////////////////////////////////////////////////////////////
int PIO_OutDisable( UINT16 DisBits );
///////////////////////////////////////////////////////////////////////////////////////
// 功能描述:對(duì)輸出使能的GPIO位,其中SetBits為1的GPIO對(duì)應(yīng)位被置高電平, 為0
// 不變。
//
// 輸入?yún)?shù) SetBits: 16-bit字節(jié)變量,其中為1的bit位,表示需要置1的位。
//
// SetBits各比特位與EM9000各位GPIO的對(duì)應(yīng)關(guān)系如下:
// -------------------------------------------------
// 輸入?yún)?shù) | 對(duì)應(yīng)GPIO | EM9000老定義
// -------------------------------------------------
// SetBits.D0 | GPIO0 | P5.0 / SA5
// SetBits.D1 | GPIO1 | P5.1 / SA6
// SetBits.D2 | GPIO2 | P5.2 / SA7
// SetBits.D3 | GPIO3 | P5.3 / SA8
// SetBits.D4 | GPIO4 | P5.4 / SA9
// SetBits.D5 | GPIO5 | P5.5 / SA10
// SetBits.D6 | GPIO6 | P5.6 / SA11
// SetBits.D7 | GPIO7 | P5.7 / SA12
// SetBits.D8 | GPIO8 | P4.0 / IRQ1
// SetBits.D9 | GPIO9 | P4.1
// SetBits.D10 | GPIO10 | P4.2
// SetBits.D11 | GPIO11 | P4.3
// SetBits.D12 | GPIO12 | P3.2 / CS0#
// SetBits.D13 | GPIO13 | P2.3
// SetBits.D14 | GPIO14 | P2.4
// SetBits.D15 | GPIO15 | P2.5
// -------------------------------------------------
//
// 返回值 = 0: 操作成功
// < 0: 操作失敗
///////////////////////////////////////////////////////////////////////////////////////
int PIO_OutSet( UINT16 SetBits );
///////////////////////////////////////////////////////////////////////////////////////
// 功能描述:對(duì)輸出使能的GPIO位,其參數(shù)ClearBits字中比特位為1所對(duì)應(yīng)的
// GPIO位被置為低電平, 為0不變。
//
// 輸入?yún)?shù) ClearBits: 16-bit字節(jié)變量,其中為1的bit位,表示需要置1的位。
//
// ClearBits各比特位與EM9000各位GPIO的對(duì)應(yīng)關(guān)系如下:
// ----------------------------------------------------
// 輸入?yún)?shù) | 對(duì)應(yīng)GPIO | EM9000老定義
// ----------------------------------------------------
// ClearBits.D0 | GPIO0 | P5.0 / SA5
// ClearBits.D1 | GPIO1 | P5.1 / SA6
// ClearBits.D2 | GPIO2 | P5.2 / SA7
// ClearBits.D3 | GPIO3 | P5.3 / SA8
// ClearBits.D4 | GPIO4 | P5.4 / SA9
// ClearBits.D5 | GPIO5 | P5.5 / SA10
// ClearBits.D6 | GPIO6 | P5.6 / SA11
// ClearBits.D7 | GPIO7 | P5.7 / SA12
// ClearBits.D8 | GPIO8 | P4.0 / IRQ1
// ClearBits.D9 | GPIO9 | P4.1
// ClearBits.D10 | GPIO10 | P4.2
// ClearBits.D11 | GPIO11 | P4.3
// ClearBits.D12 | GPIO12 | P3.2 / CS0#
// ClearBits.D13 | GPIO13 | P2.3
// ClearBits.D14 | GPIO14 | P2.4
// ClearBits.D15 | GPIO15 | P2.5
// ----------------------------------------------------
//
// 返回值 = 0: 操作成功
// < 0: 操作失敗
///////////////////////////////////////////////////////////////////////////////////////
int PIO_OutClear( UINT16 ClearBits );
///////////////////////////////////////////////////////////////////////////////////////
// 功能描述:讀取GPIO狀態(tài)到*pInValue。
// 若pInValue為NULL,函數(shù)將直接退出,返回-1。
//
// 輸出參數(shù) pInValue: 指向16-bit字變量,函數(shù)操作后為讀入的GPIO狀態(tài)值。
// *pInValue各比特與GPIO各位的對(duì)應(yīng)關(guān)系與其他PIO_XXX(...)函
// 數(shù)一致。
//
// 返回值 = 0: 操作成功
// < 0: 操作失敗
///////////////////////////////////////////////////////////////////////////////////////
int PIO_State( UINT16* pInValue );
///////////////////////////////////////////////////////////////////////////////////////
// 功能描述:返回DIN的8bit狀態(tài)。
//
// 返回8-bit數(shù)據(jù)與EM9000相應(yīng)管腳對(duì)應(yīng)關(guān)系
// ----------------------------------------
// 返回值 | EM9000老定義
// ----------------------------------------
// DIN.D0 | P1.0 / SD0
// DIN.D1 | P1.1 / SD1
// DIN.D2 | P1.2 / SD2
// DIN.D3 | P1.3 / SD3
// DIN.D4 | P1.4 / SD4
// DIN.D5 | P1.5 / SD5
// DIN.D6 | P1.6 / SD6
// DIN.D7 | P1.7 / SD7
// ----------------------------------------
//
///////////////////////////////////////////////////////////////////////////////////////
UCHAR DIN( );
///////////////////////////////////////////////////////////////////////////////////////
// 功能描述:設(shè)置DOUT的8bit狀態(tài)。
//
// 輸入?yún)?shù) ucValue: 8-bit字節(jié)變量,對(duì)應(yīng)DOUT各個(gè)輸出位。
//
// ucValue各比特位與EM9000各位DOUT的對(duì)應(yīng)關(guān)系如下:
// ----------------------------------------------------------------------------
// 輸入?yún)?shù) | 對(duì)應(yīng)GPIO | EM9000老定義
// ----------------------------------------------------------------------------
// ucValue.D0 | DOUT0 | P2.0 / SA0
// ucValue.D1 | DOUT1 | P2.1 / SA1
// ucValue.D2 | DOUT2 | P2.2 / SA2
// ucValue.D3 | DOUT3 | P3.0 / SA3
// ucValue.D4 | DOUT4 | P3.1 / SA4
// ucValue.D5 | DOUT5 | P3.4 / WE#
// ucValue.D6 | DOUT6 | P3.5 / RD#
// ucValue.D7 | DOUT7 | P3.3 / CS1#
// ----------------------------------------------------------------------------
//
///////////////////////////////////////////////////////////////////////////////////////
void DOUT( UCHAR ucValue );
新的API函數(shù)將包含在EM9000_ISA_API.LIB庫中,為了使用這些新API函數(shù),一種方法是客戶從英創(chuàng)網(wǎng)站下載新的SDK,并重新安裝;另一種方法是像英創(chuàng)技術(shù)支持部門索取新的EM9000_ISA_API.LIB文件,并拷貝到SDK的相關(guān)目錄中。新的API函數(shù)均定義在頭文件“EM9000_DIO_EX.H”中,應(yīng)用程序在調(diào)用這些函數(shù)時(shí),需包含這個(gè)頭文件。
-
嵌入式主板
+關(guān)注
關(guān)注
7文章
6085瀏覽量
35308
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論