在工業(yè)控制領(lǐng)域,數(shù)字IO以其簡單、靈活的特性,得到了廣泛的應(yīng)用。為了進(jìn)一步提高英創(chuàng)公司的嵌入式工控主板EM9000上32位數(shù)字IO的使用效率,在向下兼容的原則下,我們專門針對數(shù)字IO進(jìn)行了一次增強升級。升級后的數(shù)字IO被簡單的規(guī)劃為三類,即8位數(shù)字輸入DIN0 – DIN7、8位數(shù)字輸出DOUT0 – DOUT7、以及16位通用數(shù)字GPIO0 – GPIO15,相應(yīng)地提供了一組新的API函數(shù)。對GPIO,新的API函數(shù)提供了按位操作的功能。
為了保護(hù)客戶在EM9000上已經(jīng)進(jìn)行的開發(fā),整個數(shù)字IO的增強擴(kuò)展都是在與過去功能和代碼完全兼容的前提下進(jìn)行的,即EM9000原有的數(shù)字IO功能及API函數(shù)仍然有效。新增的API函數(shù)主要是面向新開發(fā)而設(shè)置。為了方便新API函數(shù)的操作,我們在V4.0及以后版本的數(shù)據(jù)手冊中,采用了新的數(shù)字IO信號名稱,新名稱與老名稱的對應(yīng)關(guān)系如下:
針對新的數(shù)字IO所增加的新API函數(shù)原型定義如下:
針對新的數(shù)字IO所增加的新API函數(shù)原型定義如下:
/////////////////////////////////////////////////////////////////////////////////////// // 功能描述:對各個GPIO位執(zhí)行輸出使能操作,即設(shè)置為輸出狀態(tài)。 // 其中EnBit字中比特為1所對應(yīng)的GPIO位設(shè)置為輸出,為0則保持原來的 // 狀態(tài)不變。 // 注意:對設(shè)置為輸出的GPIO,仍然保留了輸入的功能。 // // 輸入?yún)?shù) EnBits: 16-bit字變量,其中為1的bit位,表示需要輸出使能。 // // EnBits各比特位與EM9000各位GPIO的對應(yīng)關(guān)系如下: // --------------------------------------------------------------------------- // 輸入?yún)?shù) | 對應(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 );
/////////////////////////////////////////////////////////////////////////////////////// // 功能描述:對各個GPIO位執(zhí)行輸出禁止操作。其中DisBit字中為1的對應(yīng)GPIO位輸 // 出被禁止, // 為0時則保持原來的輸入輸出特性。當(dāng)輸出被禁止后,該GPIO位只能作為 // 輸入。 // // 輸入?yún)?shù) DisBits: 16-bit字變量,其中為1的bit位,表示輸出需禁止。 // // DisBits各比特位與EM9000各位GPIO的對應(yīng)關(guān)系如下: // --------------------------------------------------------------------------- // 輸入?yún)?shù) | 對應(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 );
/////////////////////////////////////////////////////////////////////////////////////// // 功能描述:對輸出使能的GPIO位,其中SetBits為1的GPIO對應(yīng)位被置高電平, 為0 // 不變。 // // 輸入?yún)?shù) SetBits: 16-bit字節(jié)變量,其中為1的bit位,表示需要置1的位。 // // SetBits各比特位與EM9000各位GPIO的對應(yīng)關(guān)系如下: // ------------------------------------------------- // 輸入?yún)?shù) | 對應(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 );
/////////////////////////////////////////////////////////////////////////////////////// // 功能描述:對輸出使能的GPIO位,其參數(shù)ClearBits字中比特位為1所對應(yīng)的 // GPIO位被置為低電平, 為0不變。 // // 輸入?yún)?shù) ClearBits: 16-bit字節(jié)變量,其中為1的bit位,表示需要置1的位。 // // ClearBits各比特位與EM9000各位GPIO的對應(yīng)關(guān)系如下: // ---------------------------------------------------- // 輸入?yún)?shù) | 對應(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各位的對應(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)管腳對應(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é)變量,對應(yīng)DOUT各個輸出位。 // // ucValue各比特位與EM9000各位DOUT的對應(yīng)關(guān)系如下: // ---------------------------------------------------------------------------- // 輸入?yún)?shù) | 對應(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ù)時,需包含這個頭文件。
|