在工業控制領域,數字IO以其簡單、靈活的特性,得到了廣泛的應用。為了進一步提高英創公司的嵌入式工控主板EM9000上32位數字IO的使用效率,在向下兼容的原則下,我們專門針對數字IO進行了一次增強升級。升級后的數字IO被簡單的規劃為三類,即8位數字輸入DIN0 – DIN7、8位數字輸出DOUT0 – DOUT7、以及16位通用數字GPIO0 – GPIO15,相應地提供了一組新的API函數。對GPIO,新的API函數提供了按位操作的功能。
為了保護客戶在EM9000上已經進行的開發,整個數字IO的增強擴展都是在與過去功能和代碼完全兼容的前提下進行的,即EM9000原有的數字IO功能及API函數仍然有效。新增的API函數主要是面向新開發而設置。為了方便新API函數的操作,我們在V4.0及以后版本的數據手冊中,采用了新的數字IO信號名稱,新名稱與老名稱的對應關系如下:
針對新的數字IO所增加的新API函數原型定義如下:
針對新的數字IO所增加的新API函數原型定義如下:
/////////////////////////////////////////////////////////////////////////////////////// // 功能描述:對各個GPIO位執行輸出使能操作,即設置為輸出狀態。 // 其中EnBit字中比特為1所對應的GPIO位設置為輸出,為0則保持原來的 // 狀態不變。 // 注意:對設置為輸出的GPIO,仍然保留了輸入的功能。 // // 輸入參數 EnBits: 16-bit字變量,其中為1的bit位,表示需要輸出使能。 // // EnBits各比特位與EM9000各位GPIO的對應關系如下: // --------------------------------------------------------------------------- // 輸入參數 | 對應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位執行輸出禁止操作。其中DisBit字中為1的對應GPIO位輸 // 出被禁止, // 為0時則保持原來的輸入輸出特性。當輸出被禁止后,該GPIO位只能作為 // 輸入。 // // 輸入參數 DisBits: 16-bit字變量,其中為1的bit位,表示輸出需禁止。 // // DisBits各比特位與EM9000各位GPIO的對應關系如下: // --------------------------------------------------------------------------- // 輸入參數 | 對應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對應位被置高電平, 為0 // 不變。 // // 輸入參數 SetBits: 16-bit字節變量,其中為1的bit位,表示需要置1的位。 // // SetBits各比特位與EM9000各位GPIO的對應關系如下: // ------------------------------------------------- // 輸入參數 | 對應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位,其參數ClearBits字中比特位為1所對應的 // GPIO位被置為低電平, 為0不變。 // // 輸入參數 ClearBits: 16-bit字節變量,其中為1的bit位,表示需要置1的位。 // // ClearBits各比特位與EM9000各位GPIO的對應關系如下: // ---------------------------------------------------- // 輸入參數 | 對應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狀態到*pInValue。 // 若pInValue為NULL,函數將直接退出,返回-1。 // // 輸出參數 pInValue: 指向16-bit字變量,函數操作后為讀入的GPIO狀態值。 // *pInValue各比特與GPIO各位的對應關系與其他PIO_XXX(...)函 // 數一致。 // // 返回值 = 0: 操作成功 // < 0: 操作失敗 /////////////////////////////////////////////////////////////////////////////////////// int PIO_State( UINT16* pInValue );
/////////////////////////////////////////////////////////////////////////////////////// // 功能描述:返回DIN的8bit狀態。 // // 返回8-bit數據與EM9000相應管腳對應關系 // ---------------------------------------- // 返回值 | 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( );
/////////////////////////////////////////////////////////////////////////////////////// // 功能描述:設置DOUT的8bit狀態。 // // 輸入參數 ucValue: 8-bit字節變量,對應DOUT各個輸出位。 // // ucValue各比特位與EM9000各位DOUT的對應關系如下: // ---------------------------------------------------------------------------- // 輸入參數 | 對應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函數將包含在EM9000_ISA_API.LIB庫中,為了使用這些新API函數,一種方法是客戶從英創網站下載新的SDK,并重新安裝;另一種方法是像英創技術支持部門索取新的EM9000_ISA_API.LIB文件,并拷貝到SDK的相關目錄中。新的API函數均定義在頭文件“EM9000_DIO_EX.H”中,應用程序在調用這些函數時,需包含這個頭文件。
|