发表于:2010/4/22 11:02:02
#0楼
在工业控制领域,数字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信号名称,新名称与老名称的对应关系如下:
旧名称
新名称
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
针对新的数字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”中,应用程序在调用这些函数时,需包含这个头文件。
[查看全文]
[关于英创]
[更多文章]
[技术论坛]
本文PDF格式下载
为了保护客户在EM9000上已经进行的开发,整个数字IO的增强扩展都是在与过去功能和代码完全兼容的前提下进行的,即EM9000原有的数字IO功能及API函数仍然有效。新增的API函数主要是面向新开发而设置。为了方便新API函数的操作,我们在V4.0及以后版本的数据手册中,采用了新的数字IO信号名称,新名称与老名称的对应关系如下:
旧名称
新名称
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
针对新的数字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”中,应用程序在调用这些函数时,需包含这个头文件。
[查看全文]
[关于英创]
[更多文章]
[技术论坛]
本文PDF格式下载