在工业控制领域,数字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”中,应用程序在调用这些函数时,需包含这个头文件。
|