资源描述
SBS ADT652卡 驱动程序包使用阐明书
目 录
SBS ADT652卡 驱动程序包使用阐明书 1
一. 简介 4
1) 产品名称 4
2) 硬件简介 4
3) 开发目 4
4) 使用环境 4
5) 有关产品 4
二. 驱动程序阐明 5
1) 文献列表 5
2) 安装环节 5
3) API函数 6
Ø ADT652_DevLoad:加载设备驱动 6
Ø ADT652_DevClose:卸载设备驱动 6
Ø ADT652_InitBoard:设备初始化 6
Ø ADT652_SetEvent:将告知事件发送到驱动程序 7
Ø ADT652_ConfigIOPorts:配备数字I/O口 7
Ø ADT652_ReadDigitIO:读数字I/O口 7
Ø ADT652_WriteDigitIO:写数字I/O口 8
Ø ADT652_ClearIRQ:清除中断 8
Ø ADT652_ClockMode:设立计数器/定期器工作方式 9
Ø ADT652_ClockDivisor:设立计数器/定期器计数值 9
Ø ADT652_ReadPITStatus:读取计数器/定期器状态 10
Ø ADT652_ClockReadBack:读回计数器/定期器计数值 10
Ø ADT652_ADSettings:设立模仿输入电压量程和极性 10
Ø ADT652_SetChannel:设立模仿输入通道 11
Ø ADT652_EnableIRQ:设立中断使能 11
Ø ADT652_DisableIRQ:设立中断禁止 12
Ø ADT652_SetIRQSource:选取中断源 12
Ø ADT652_ADConfig:配备A/D 12
Ø ADT652_WriteDataDA:向DA通道写DA代码 13
Ø ADT652_ChannelSwitch:AD通道切换状态 14
Ø ADT652_IRQStatus:中断状态 14
Ø ADT652_StartConversion:启动A/D变换 14
Ø ADT652_ConversionDone:监测A/D变换状态 15
Ø ADT652_ReadData:读取A/D变换数据 15
Ø ADT652_DigitToSBS:将A/D变换数据转换为输入电压值 15
Ø ADT652_ReadADFIFOFlag:读取A/DFIFO数据标志 16
Ø ADT652_ADFIFOReset:复位A/DFIFO 16
Ø ReadIOPort:读取IO地址 16
Ø WriteIOPort:写入IO地址 17
Ø ADT652_GetFifo 17
三. 示例程序阐明 18
1) 硬件设立 18
2) 使用阐明 18
核心字: ADT652卡驱动、A/D变换、D/A变换、数字I/O、计数器/定期器
摘要: 本文档描述了SBS ADT652卡在Windows NT()下驱动程序用法,重要涉及了SBS ADT652卡初始化、加载、配备、A/D变换、D/A变换、I/O控制、计数/定期API函数接口。
缩微语:无
一. 简介
1) 产品名称
本文档描述对象是:SBS ADT652 Driver for Windows NT().
2) 硬件简介
ADT652 模块化中速模仿输入模块可将与IBM PC 兼容PC/104 CPU 模块系统构成一种高性能数据采集与控制系统。构造紧凑,适于嵌入式与便携式应用ADT652 模块特点是:
l 八/十六个单端模仿输入通道
l 12 位100KHz A/D 变换器
l ±5V ±10V 或0 到+10V 模仿输入量程可选
l 可用软件配备增益
l -5~+5V,-10~+10V,0~5V,0~10V模仿输出量程可选
l 24 通道基于uPD71055 芯片可编程数字量I/O
l 三个独立16 位10MHz 定期器/计数器(或5MHz)
3) 开发目
本文描述是SBS ADT652卡在Windows NT()操作系统下驱动程序。
使用本文描述驱动程序,应用系统开发顾客可以迅速地把SBS ADT652卡集成到基于Windows NT()应用环境,屏蔽了实际硬件系统,通过驱动提供API函数接口,顾客可以更以便、快捷地实现面相应用开发,也可使应用系统具备较好可移植性。
4) 使用环境
操作系统:Windows XP
调试环境:Visual C++6.0
硬件环境:CDM1351-10D 、ADT652卡
驱动程序:SBS ADT652 Driver for Windows2K/XP V6.0
5) 有关产品
二. 驱动程序阐明
1) 文献列表
本驱动程序包提供如下文献:
1) ADT652CD1Sys.sys :该文献为驱动主体文献,包括所有API函数实现。
2) ADT652.dll :该文献为动态链接库文献。
3) ADT652.lib :该文献为静态链接库文献。
4) ADT652.h :该文献为API函数声明头文献,在使用API函数之前必要被包括。
5) ADT652CD1Sys.inf :该文献为设备信息文献。
2) 安装环节
安装环节如下:
1、在控制面板中选取添加新硬件
2、添加新硬件
3、显示所有设备
4、从磁盘安装
5、选取文献目录Driver下ADT652CD1Sys.inf,进行安装
6、配备资源,依照需要选取基地址、中断;需要注意,用中断7一定要关闭并口!
7、重新启动系统
8、将ADT652.dll,ADT652.lib和ADT652.h拷贝至你应用程序所在目录下。在应用工程中引入ADT652.lib:
A、如果你ADT6520.lib放在VC原则LIB文献夹中
单击Project- >Project Settings...
在link选卡object/library modules中加上ADT652.lib即可
B. 如果你ADT652.lib不是放在VC原则LIB文献夹中
单击Project- >Add to Project- >files...
找到ADT652.lib文献,按OK 。
3) API函数
Ø ADT652_DevLoad:加载设备驱动
函数原型:
HANDLE ADT652_DevLoad( )
函数阐明:
该函数告知系统加载设备驱动,然后才干对其他API函数进行操作。
输入:
无
输出:
无
返回值:
成功返回标记此设备驱动句柄,失败返回INVALID_HANDLE_VALUE。
Ø ADT652_DevClose:卸载设备驱动
函数原型:
BOOL ADT652_DevClose(HANDLE hDevice)
函数阐明:
该函数告知系统卸载设备驱动.
输入:
hDevice:从ADT652_DevLoad( )函数中返回句柄
输出:
无
返回值:
成功返回1,失败返回0。
Ø ADT652_InitBoard:设备初始化
函数原型:
BOOL ADT652_InitBoard (HANDLE hDevice,unsigned int BaseAddr,int irq_chn)
函数阐明:
该函数对设备进行初始化,涉及设立设备基地址、中断号等。
输入:
hDevice:从ADT652_DevLoad( )函数中返回句柄
BaseAddr:设备基地址
irq_chn:设备中断号
输出:
无
返回值:
成功返回1,失败返回0。
Ø ADT652_SetEvent:将告知事件发送到驱动程序
函数原型:
int ADT600_SetEvent(HANDLE hDevice,HANDLE hEvent)
函数阐明:
该函数用来将告知事件发送到驱动程序。详细参照示例程序。
输入:
hDevice:从ADT652_DevLoad( )函数中返回句柄
hEvent: 事件句柄
输出:
无
返回值:
成功返回0,失败返回非0错误值。
Ø ADT652_ConfigIOPorts:配备数字I/O口
函数原型:
void ADT652_ConfigIOPorts(HANDLE hDevice,unsigned char Port0,unsigned char Port1,unsigned char Port2)
函数阐明:
该函数对71055芯片3个I/O口工作于模式0进行配备
输入:
hDevice:从ADT652_DevLoad( )函数中返回句柄
Port0:71055芯片A口,1表达输入,0表达输出
Port1:71055芯片B口,1表达输入,0表达输出
Port2:71055芯片C口,1表达输入,0表达输出
输出:
无
返回值:
无
Ø ADT652_ReadDigitIO:读数字I/O口
函数原型:
unsigned char ADT652_ReadDigitIO(HANDLE hDevice,unsigned char InputPort);
函数阐明:
该函数对71055芯片3个I/O口进行读操作。
输入:
hDevice:从ADT652_DevLoad( )函数中返回句柄
InputPort:71055芯片3个I/O口,0表达A口,1表达B口,2表达C口
输出:
无
返回值:
返回从指定I/O口读出值
Ø ADT652_WriteDigitIO:写数字I/O口
函数原型:
void ADT652_WriteDigitIO(HANDLE hDevice,unsigned char OutputPort,unsigned char v);
函数阐明:
该函数对71055芯片3个I/O口进行写操作。
输入:
hDevice:从ADT652_DevLoad( )函数中返回句柄
OutputPort:71055芯片3个I/O口,0表达A口,1表达B口,2表达C口
v: 从指定I/O口写入值
输出:
无
返回值:
无
Ø ADT652_ClearIRQ:清除中断
函数原型:
void ADT652_ClearIRQ(HANDLE hDevice)
函数阐明:
该函数用于清除中断。在中断产生后必要调用该函数。
输入:
hDevice:从ADT652_DevLoad( )函数中返回句柄
输出:
无
返回值:
无
Ø ADT652_ClockMode:设立计数器/定期器工作方式
函数原型:
void ADT652_ClockMode(HANDLE hDevice,unsigned char Clock,unsigned char Mode)
函数阐明:
该函数对82C54芯片3个计数器/定期器工作方式进行设立(ADT652有2个82C54,共计6个数器/定期器)。
输入:
hDevice:从ADT652_DevLoad( )函数中返回句柄
Clock:82C54芯片3个计数器/定期器,0表达计数器0,1表达计数器1,2表达计数器2(对于ADT652,第二个82C543个计数器/定期器分别表达为:3表达计数器0,4表达计数器1,5表达计数器2)
Mode:82C54芯片工作方式,0~5分别表达方式0~方式5
输出:
无
返回值:
无
Ø ADT652_ClockDivisor:设立计数器/定期器计数值
函数原型:
void ADT652_ClockDivisor(HANDLE hDevice,unsigned char Clock,unsigned int Divisor)
函数阐明:
该函数对82C54芯片3个计数器/定期器计数值进行设立(ADT652有2个82C54,共计6个数器/定期器)
输入:
hDevice:从ADT652_DevLoad( )函数中返回句柄
Clock:82C54芯片3个计数器/定期器,0表达计数器0,1表达计数器1,2表达计数器2(对于ADT652,第二个82C543个计数器/定期器分别表达为:3表达计数器0,4表达计数器1,5表达计数器2)
Divisor: 16位计数器/定期器计数值
输出:
无
返回值:
无
Ø ADT652_ReadPITStatus:读取计数器/定期器状态
函数原型:
char ADT652_ReadPITStatus(HANDLE hDevice,unsigned char Timer)
函数阐明:
该函数对82C54芯片3个计数器/定期器单次计数状态进行读取(ADT652有2个82C54,共计6个数器/定期器)。
输入:
hDevice:从ADT652_DevLoad( )函数中返回句柄
Timer:82C54芯片3个计数器/定期器,0表达计数器0,1表达计数器1,2表达计数器2(对于ADT652,第二个82C543个计数器/定期器分别表达为:3表达计数器0,4表达计数器1,5表达计数器2)
输出:
无
返回值:
单次计数结束返回1,否则返回0。
Ø ADT652_ClockReadBack:读回计数器/定期器计数值
函数原型:
unsigned int ADT652_ClockReadBack(HANDLE hDevice,char Timer)
函数阐明:
该函数对82C54芯片3个计数器/定期器计数值进行读取(ADT652有2个82C54,共计6个数器/定期器)。
输入:
hDevice:从ADT652_DevLoad( )函数中返回句柄
Timer:82C54芯片3个计数器/定期器,0表达计数器0,1表达计数器1,2表达计数器2(对于ADT652,第二个82C543个计数器/定期器分别表达为:3表达计数器0,4表达计数器1,5表达计数器2)
输出:
无
返回值:
返回读取计数器/定期器计数值。
Ø ADT652_ADSettings:设立模仿输入电压量程和极性
函数原型:
void ADT652_ADSettings(HANDLE hDevice,float Range,char Polarity)
函数阐明:
该函数对模仿输入电压量程和极性进行设立。
输入:
hDevice:从ADT652_DevLoad( )函数中返回句柄
Range:模仿输入电压量程,可输入5和10
Polarity:模仿输入电压极性,0表达单极性,1表达双极性
输出:
无
返回值:
无。
Ø ADT652_SetChannel:设立模仿输入通道
函数原型:
void ADT652_SetChannel(HANDLE hDevice,unsigned int ChannelL,unsigned int ChannelH)
函数阐明:
该函数对模仿输入通道进行设立。
输入:
hDevice:从ADT652_DevLoad( )函数中返回句柄
ChannelL:模仿输入低通道,可输入0~15,分别表达通道1~通道16
ChannelH:模仿输入高通道,可输入0~15,分别表达通道1~通道16
注:低通道和高通道相似表达同一通道。
输出:
无
返回值:
无。
Ø ADT652_EnableIRQ:设立中断使能
函数原型:
void ADT652_EnableIRQ(HANDLE hDevice)
函数阐明:
该函数设立中断使能。
输入:
hDevice:从ADT652_DevLoad( )函数中返回句柄
输出:
无
返回值:
无。
Ø ADT652_DisableIRQ:设立中断禁止
函数原型:
void ADT652_DisableIRQ (HANDLE hDevice)
函数阐明:
该函数设立中断禁止。
输入:
hDevice:从ADT652_DevLoad( )函数中返回句柄
输出:
无
返回值:
无。
Ø ADT652_SetIRQSource:选取中断源
函数原型:
void ADT652_SetIRQSource(HANDLE hDevice,unsigned char IrqSou)
函数阐明:
该函数选取中断源。
输入:
hDevice:从ADT652_DevLoad( )函数中返回句柄
IrqSou:0表达AD转换数据有效,1表达计数/定期器0输出,2表达外部中断,3表达计数/定期器1输出,4表达计数/定期器3输出,5表达计数/定期器4输出,6表达计数/定期器5输出。
输出:
无
返回值:
无。
注: AD 转换数据有效表达:
当FIFOEn 为“1”时,FIFO 半满标记(HF)触发中断
当FIFOEn 为“0”时,AD 转换结束触发中断
FIFOEn是函数ADT652_ADConfig参数
Ø ADT652_ADConfig:配备A/D
函数原型:
void ADT652_ADConfig(HANDLE hDevice unsigned char Timer2Con,unsigned char DMACon,unsigned char ADTrig,unsigned char GainCon,unsigned char FIFOEn);
函数阐明:
该函数用来配备A/D转换触发方式、可编程增益放大控制和FIFO 选取等。
输入:
hDevice:从ADT652_DevLoad( )函数中返回句柄
Timer2Con:A/D转换计数/定期器2(OUT2)触发使能控制。
置“0”时为不容许计数/定期器2(OUT2)触发(缺省)。
置“1”时为容许计数/定期器2(OUT2)触发。
DMACon: A/D转换DMA传送使能控制。
置“0”时为不容许DMA(缺省)。
置“1”时为容许DMA。
ADTrig: A/D转换触发方式配备。
置“0”时为软件触发。
置“1”时为硬件触发。
GainCon: 可编程增益放大控制。
置“1”时增益为1。
置“2”时增益为2。
置“4”时增益为4。
置“8”时增益为8。
通过增益放大可对某些较弱信号进行采集,提高其精度。
FOFIEn:AD 转换数据FIFO 选取
置“0”时为FIFO 禁止。
置“1”时为AD 转换数据进入FIFO。
输出:
无
返回值:
无。
Ø ADT652_WriteDataDA:向DA通道写DA代码
函数原型:
void ADT652_WriteDataDA(HANDLE hDevice,unsigned int DAChannel,int DigitalValue)
函数阐明:
该函数向DA通道写DA代码。
输入:
hDevice:从ADT652_DevLoad( )函数中返回句柄
DAChannel:DA通道,可输入0~3,分别表达通道0~通道3
DigitalValue: DA代码
输出:
无
返回值:
无
Ø ADT652_ChannelSwitch:AD通道切换状态
函数原型:
unsigned char ADT652_ChannelSwitch(HANDLE hDevice)
函数阐明:
该函数返回AD通道切换状态。
输入:
hDevice:从ADT652_DevLoad( )函数中返回句柄
输出:
无
返回值:
AD通道切换完毕返回0,否则返回1
Ø ADT652_IRQStatus:中断状态
函数原型:
unsigned char ADT652_IRQStatus(HANDLE hDevice)
函数阐明:
该函数返回中断状态。
输入:
hDevice:从ADT652_DevLoad( )函数中返回句柄
输出:
无
返回值:
有中断返回1,否则返回0
Ø ADT652_StartConversion:启动A/D变换
函数原型:
void ADT652_StartConversion(HANDLE hDevice)
函数阐明:
该函数用于软件启动A/D变换。
输入:
hDevice:从ADT652_DevLoad( )函数中返回句柄
输出:
无
返回值:
无。
Ø ADT652_ConversionDone:监测A/D变换状态
函数原型:
char ADT652_ConversionDone(HANDLE hDevice)
函数阐明:
该函数用于监测A/D变换状态。
输入:
hDevice:从ADT652_DevLoad( )函数中返回句柄
输出:
无
返回值:
A/D变换结束返回0,否则返回1。
Ø ADT652_ReadData:读取A/D变换数据
函数原型:
int ADT652_ReadData(HANDLE hDevice)
函数阐明:
该函数用于读取A/D变换数据。
输入:
hDevice:从ADT652_DevLoad( )函数中返回句柄
输出:
无
返回值:
返回读取A/D变换数据。
Ø ADT652_DigitToSBS:将A/D变换数据转换为输入电压值
函数原型:
float ADT652_DigitToSBS(HANDLE hDevice,int DigitalValue,int *Curcha)
函数阐明:
该函数用于将A/D变换数据转换为输入电压值。
输入:
hDevice:从ADT652_DevLoad( )函数中返回句柄
DigitalValue:A/D变换数据
输出:
*Curcha:指向当前采样通道
返回值:
返回转换后输入电压值。
Ø ADT652_ReadADFIFOFlag:读取A/DFIFO数据标志
函数原型:
unsigned char ADT652_ReadADFIFOFlag(HANDLE hDevice)
函数阐明:
该函数用于读取A/DFIFO数据标志。
输入:
hDevice:从ADT652_DevLoad( )函数中返回句柄
输出:
无
返回值:
返回1表达FIFO数据半满,返回2表达FIFO数据全满,返回3表达FIFO数据空。
Ø ADT652_ADFIFOReset:复位A/DFIFO
函数原型:
void ADT652_ADFIFOReset(HANDLE hDevice)
函数阐明:
该函数用于复位A/DFIFO。
输入:
hDevice:从ADT652_DevLoad( )函数中返回句柄
输出:
无
返回值:
无。
Ø ReadIOPort:读取IO地址
函数原型:
unsigned char ReadIOPort(HANDLE hDevice,unsigned int portAddr)
函数阐明:
该函数对指定IO地址进行读取。
输入:
hDevice:从ADT652_DevLoad( )函数中返回句柄
portAddr:IO地址
输出:
无
返回值:
返回从指定IO地址读取值。
Ø WriteIOPort:写入IO地址
函数原型:
void WriteIOPort(HANDLE hDevice,unsigned int portAddr,unsigned int byte)
函数阐明:
该函数对指定IO地址进行写入。
输入:
hDevice:从ADT652_DevLoad( )函数中返回句柄
portAddr:IO地址
byte: 向指定IO地址写入值
输出:
无
返回值:
无
Ø ADT652_GetFifo
函数原型:
BOOL ADT652_GetFifo(HANDLE hDevice,PUCHAR DataFifo ,USHORT DataNum);
函数阐明:
该函数直接提取FIFO数据。
输入:
hDevice:从ADT652_DevLoad( )函数中返回句柄
DataFifo:接受FIFO数据数据空间;
DataNum: 读取数据个数
输出:
无
返回值:
操作完毕返回TRUE
三. 示例程序阐明
项目文献Demo,涉及了SBS ADT652卡加载设备驱动、初始化、卸载设备驱动、A/D变换、I/O控制、计数等操作。
1) 硬件设立
在ADT652卡S1跳线上设立基地址为300H(出厂设立),在S2中断跳线上设立中断号为IRQ7,在S3跳线上设立成第一片82C54芯片内部三个计数器极联。在S5跳线上设立模仿输入电压量程为+/-10V。
2) 使用阐明
⑴.运营ADT652_Demo.exe,屏幕上浮现一种对话框。
⑵.程序会自动加载设备驱动;
(3).数字I/O演示:
A. 读数字I/O口
选取读操作(程序默以为读操作),选取要测试通道,程序会自动执行;
B. 写数字I/O口
选取写操作,选取要测试通道,然后在数据框内写入数据,按回车键Enter即可;
(4).A/D变换演示:
选取要测试通道,程序会去读取相应通道信息,然后显示在数据框内;
(5).计数器演示:
程序开始运营计数器就开始工作,如果跳线和中断设立对的,数据框内会显示对的计数值;
(6).测试完毕关闭对话框,程序自动卸载设备驱动。
展开阅读全文