PCIe8422使用说明书.docx

上传人:b****6 文档编号:5998081 上传时间:2023-01-02 格式:DOCX 页数:16 大小:857.62KB
下载 相关 举报
PCIe8422使用说明书.docx_第1页
第1页 / 共16页
PCIe8422使用说明书.docx_第2页
第2页 / 共16页
PCIe8422使用说明书.docx_第3页
第3页 / 共16页
PCIe8422使用说明书.docx_第4页
第4页 / 共16页
PCIe8422使用说明书.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

PCIe8422使用说明书.docx

《PCIe8422使用说明书.docx》由会员分享,可在线阅读,更多相关《PCIe8422使用说明书.docx(16页珍藏版)》请在冰豆网上搜索。

PCIe8422使用说明书.docx

PCIe8422使用说明书

北京慧孚达科技有限公司

多路RS422/485/232通讯接口卡

PCIe8422

 

使用说明书

第一章功能概述

现今社会是飞速发展的信息社会,信息技术对社会发展有着深远影响,而数据采集是信息技术的关键环节。

我公司推出的基于PCI总线、PCIe总线、USB总线及嵌入式等数据采集卡综合了国内外众多同类产品的优点,以其使用的便捷、性能的稳定、性价比高,获得了客户的一致好评,是您理想的选择。

第一节、简介

PCIe8422是具有PCIe接口的8路422/485/232接口通讯板卡。

接口类型可以配置成RS232、RS422、RS485任意一种,或者RS232/RS422、RS232/RS485复合类型;可以配置为8路RS422异步接口模式,或配置为4路RS422同步接口模式。

灵活的定制方案,极大限度地满足客户的个性化应用要求。

可广泛用于航天测控、工业测控等系统中。

第二节、板卡性能指标

Ø总线接口PCIe,总线宽度x1,支持2.5Gbit/S的双向数据传输速度。

ØRS422数据传输速率可调节,最高可达4Mbps。

ØRS485/RS232模式支持异步通讯,RS422模式支持异步、同步通讯。

Ø支持用户自定义波特率。

ØRS422模式收、发独立,全双工工作方式。

Ø通讯接口起始位、数据位、停止位及校验位均可设置。

Ø每一路422/485/232发送及接收通道都对应有2KbytesFIFO,用于数据缓存。

Ø板卡有16路数字IO,可扩充为外触发信号。

支持外触发,软触发。

Ø数据接收方式支持查询、中断、DMA方式。

Ø数据发送方式可以单次发送,也可连续发送。

Ø可根据用户需求定制传输协议,如发送时添加帧头、帧尾;接收时检测帧头、帧尾等。

第三节、软件支持

PCIe8422多路422通讯卡为客户提供丰富的软件支持,提供集成软件和驱动程序以及编程接口、动态连接库、使用例程等。

第二章硬件详述

第一节、板卡外形

 

第二节、板卡构造说明

1:

RS422/485/232外部接口(D型头信号定义,J2)

RS422_Tn_N和RS422_Tn_P构成第n路RS422输出差分对信号。

RS422_Rn_N和RS422_Rn_P构成第n路RS422接收差分对信号。

RS485_n_N和RS485_n_P构成第n路RS485差分对信号。

RS232_TXn是第n路RS232输出信号。

RS232_RXn是第n路RS232接收信号。

DGND是板卡地信号。

 

2:

J3接口定义(数字IO)

IO0~IO7数字输入信号。

IO8~IO15数字输入信号。

其中IO0~IO7可以用作外触发信号。

4:

LED指示灯

LED1:

用来指示系统上电复位成功。

LED2:

用来指示板卡接收FIFO中有数据。

LED3:

用来指示板卡发送FIFO中有数据。

5:

安装驱动

将PCIe8422.inf文件和PCIe8422.sys文件分别拷贝到C:

\windows\inf\文件夹和C:

\windows\system32\drivers\文件夹下。

将PCIe8422板卡插入计算机PCIe插槽中,打开计算机,系统的“设备管理器”中显示“PCIe8422”设备。

第三章软件使用说明

第一节、界面构成

用户界面分为3个部分:

接收通道数据显示区、发送通道数据定义区、通道参数配置区。

其中通道参数配置区包括通道选择、通道设置、接收模式设置、发送模式设置。

第二节、操作指南

1:

参数配置选项

通道选择:

用于选择哪些通道用于传输数据。

通道设置:

波特率设置选择1200、9600、115200、614400等等,可以自己输入波特率数值

数据位选择5、6、7、8

起始位选择1、2

停止位选择1、1.5、2

校验位选择无、奇校验、偶校验

选择设置通道0~7

如何进行通道的参数设置:

波特率、数据位、起始位、停止位、校验位等参数设置完成后,选择设置通道用来将参数写入相应通道寄存器中;然后依照相应方法进行下一通道参数设置。

接收模式:

接收方式:

DMA、查询、中断

启动接收:

用于启动或停止接收通道数据

清除窗口:

用于清除接收窗口接收到的数据

发送模式:

发送方式:

连续发送、单次发送

HEX发送:

发送数据为十六进制

启动发送:

用于启动或停止发送通道数据

2:

接收数据显示区

用于显示接收通道的数据。

3:

发送数据定义区

用于定义选定通道的发送数据。

如何定义发送通道数据:

首先在发送数据定义区写入要发送的数据,然后在选择通道选项选择要发送通道,接下来点击设置通道数据按钮,数据写入通道数据缓冲区中,等待发送。

依照此方法设置下一通道数据。

第三节、二次开发指南

1:

编程接口

PCIe8422提供驱动文件为PCIe8422.inf和PCIe8422.sys,提供高级应用程序例程。

用户在此基础上二次开时,工程文件中需要包含PCIe8422.lib及头文件PCIe8422.h。

2:

PCIe8422.lib库函数简介

//用于传输的实际硬件参数

typedefstruct__PCIE8422_CHANNEL_PARAMETER

{

intm_BaudRate;

intm_DataBit;

intm_StartBit;

doublem_StopBit;

intm_ParityBit;

BOOLm_channel_enable[8];

BOOLm_rxbuffer_status[8];

}PCIE8422_CHANNEL_PARAMETER,*PPCIE8422_CHANNEL_PARAMETER;

 

typedefstruct_PCIE8422_STATUS_SEND

{

LONGbNotEmpty;//板载FIFO存储器的非空标志,=TRUE非空,=FALSE空

LONGbHalf;//板载FIFO存储器的半满标志,=TRUE半满以上,=FALSE半满以下

LONGbDynamic_Overflow;//板载FIFO存储器的动态溢出标志,=TRUE已发生溢出,=FALSE 未发生溢出

LONGbStatic_Overflow;//板载FIFO存储器的静态溢出标志,=TRUE已发生溢出,=FALSE 未发生溢出

}PCIE8422_STATUS_SEND,*PPCIE8422_STATUS_SEND;

 

typedefstruct_PCIE8422_STATUS_RECEIVE

{

LONGbNotEmpty;//板载FIFO存储器的非空标志,=TRUE非空,=FALSE空

LONGbHalf;//板载FIFO存储器的半满标志,=TRUE半满以上,=FALSE半满以下

LONGbDynamic_Overflow;//板载FIFO存储器的动态溢出标志,=TRUE已发生溢出,=FALSE 未发生溢出

LONGbStatic_Overflow;//板载FIFO存储器的静态溢出标志,=TRUE已发生溢出,=FALSE 未发生溢出

LONGulRemainCount;//板载FIFO存储器里剩余数据个数

}PCIE8422_STATUS_RECEIVE,*PPCIE8422_STATUS_RECEIVE;

//########################常量定义#################################

//CreateFileObject所用的文件操作方式控制字(可通过或指令实现多种方式并操作)

#definePCIE8422_modeRead0x0000//只读文件方式

#definePCIE8422_modeWrite0x0001//只写文件方式

#definePCIE8422_modeReadWrite0x0002//既读又写文件方式

#definePCIE8422_modeCreate0x1000//如果文件不存可以创建该文件,如果存在,则重建此文件,并清0

#definePCIE8422_typeText0x4000//以文本方式操作文件

//#######################################################################

//用户函数接口

//########################常规通用函数#################################

//适用于本设备的最基本操作

HANDLEDEVAPIFARPASCALPCIE8422_CreateDevice(intDeviceID=0);//创建设备对象

HANDLEDEVAPIFARPASCALPCIE8422_CreateDeviceEx(intDevicePhysID=0);//用物理号创建设备对象

intDEVAPIFARPASCALPCIE8422_GetDeviceCount(HANDLEhDevice);//取得设备总台数

BOOLDEVAPIFARPASCALPCIE8422_GetDeviceCurrentID(HANDLEhDevice,//取得当前设备相应的ID号

PLONGDeviceLgcID,

PLONGDevicePhysID);

BOOLDEVAPIFARPASCALPCIE8422_ListDeviceDlg(HANDLEhDevice);//列表系统当中的所有的该PCI设备

BOOLDEVAPIFARPASCALPCIE8422_ReleaseDevice(HANDLEhDevice);//关闭设备,禁止传输,且释放资源

//##################发送器传输控制函数#################################

//适于大多数普通用户,这些接口最简单、最快捷、最可靠,让用户不必知道设备

//低层复杂的硬件控制协议和繁多的软件控制编程,仅用下面的启动设备和写

//数据两个函数便能轻松高效地实现高速、连续的数据传输

BOOLDEVAPIFARPASCALPCIE8422_SetChannel(HANDLEhDevice,UCHARm_ChannelSelect);//setchannel_select_reg

BOOLDEVAPIFARPASCALPCIE8422_ConfigChannel(HANDLEhDevice,UCHARChannelNum,PCIE8422_CHANNEL_PARAMETERm_channel_parameter);

HANDLEDEVAPIFARPASCALPCIE8422_CreateSystemEvent_Int(void);

BOOLDEVAPIFARPASCALPCIE8422_InitDeviceInt(HANDLEhDevice,HANDLEhEvent,PTHREAD_PARApPara);

BOOLDEVAPIFARPASCALPCIE8422_ReleaseSystemEvent_Int(HANDLEhEvent);//释放内核事件对象

BOOLDEVAPIFARPASCALPCIE8422_InitDeviceDmaAD(//初始化设备,当返回TRUE后,设备即准备就绪.

HANDLEhDevice,//设备对象,它由CreateDevice函数创建

HANDLEhDmaEvent,//DMA事件句柄,它由CreateSystemEvent创建

PPCIE8422_STATUS_RECEIVEpDMAStatus);

HANDLEDEVAPIFARPASCALPCIE8422_CreateSystemEvent_Dma(void);//创建内核事件对象,供InitDeviceDma和VB子线程等函数使用

HANDLEDEVAPIFARPASCALPCIE8422_ReleaseSystemEvent_Dma(HANDLEhDmaEvent);//中断读数据消息

BOOLDEVAPIFARPASCALPCIE8422_StartDeviceSend(//使能发送器设备(如果发送器连接成功返回TRUE,否则返回FALSE)

HANDLEhDevice);//设备对象句柄

BOOLDEVAPIFARPASCALPCIE8422_ClrDeviceSendFifo(

HANDLEhDevice);//清发送器FIFO

BOOLDEVAPIFARPASCALPCIE8422_GetDevStatusSend(

HANDLEhDevice,//设备句柄

PPCIE8422_STATUS_SENDpSendStatus);//发送器状态

BOOLDEVAPIFARPASCALPCIE8422_WriteDeviceData_Pro(

HANDLEhDevice,//设备对象句柄

PULONGpDataBuffer,//数据用户缓冲区

ULONGnWriteSizeWords);//写入的点数(以字为单位)

BOOLDEVAPIFARPASCALPCIE8422_WriteDeviceData_Dma(

HANDLEhDevice,//设备对象句柄

PULONGpDataBuffer,//数据用户缓冲区

ULONGnWriteSizeWords);//写入的点数(以字为单位)

BOOLDEVAPIFARPASCALPCIE8422_StopDeviceSend(//禁止发送器设备

HANDLEhDevice);//设备对象句柄

//####################接收器传输控制函数###############################

//适于大多数普通用户,这些接口最简单、最快捷、最可靠,让用户不必知道设备

//低层复杂的硬件控制协议和繁多的软件控制编程,仅用下面的启动设备和读取

//数据两个函数便能轻松高效地实现高速、连续的数据传输

BOOLDEVAPIFARPASCALPCIE8422_StartDeviceReceive(//使能接收器设备(如果接收器连接成功返回TRUE,否则返回FALSE)

HANDLEhDevice);//设备对象句柄

BOOLDEVAPIFARPASCALPCIE8422_ClrDeviceReceiveFifo(

HANDLEhDevice);//清接收器FIFO

BOOLDEVAPIFARPASCALPCIE8422_ReadDevicePro_Npt(//用非空标志读取设备上的AD数据

HANDLEhDevice,//设备句柄

PULONGpDataBuffer,//将用于接受数据的用户缓冲区

ULONGnReadSizeWords,//读入的数据长度

PLONGnRetSizeWords);//返回实际读取的数据长度

BOOLDEVAPIFARPASCALPCIE8422_GetDevStatusReceive(

HANDLEhDevice,//设备句柄

PPCIE8422_STATUS_RECEIVEpReceiveStatus);//接收器状态

BOOLDEVAPIFARPASCALPCIE8422_ReadDevicePro_Half(//FIFO半满读AD数据

HANDLEhDevice,//设备句柄

PULONGpDataBuffer,//将用于接受数据的用户缓冲区(该区必须开辟65536个字的空间)

ULONGnReadSizeWords,//读入的数据长度

PLONGnRetSizeWords);//返回实际读取的数据长度

BOOLDEVAPIFARPASCALPCIE8422_ReadReceiveDeviceDma(//直接内存(DMA)方式函数

HANDLEhDevice,//设备对象,它由CreateDevice函数创建

PULONGpADBuffer,//用户缓冲区

LONGnReadSizeWords,//每次DMA时,用户从指定缓冲应读取的实际长度

PLONGnRetSizeWords);//返回实际读取的数据长度

BOOLDEVAPIFARPASCALPCIE8422_StopDeviceReceive(//禁止接收器设备

HANDLEhDevice);//设备对象句柄

//###################中断实现计数器控制函数###############################//DEVAPIBOOLFARPASCALPCIE8422_InitDeviceInt(

//HANDLEhDevice,//设备句柄

//HANDLEhEventInt);//非空中断事件(FIFO从空到非空产生一个中断)

DEVAPIBOOLFARPASCALPCIE8422_GetDeviceIntCount(HANDLEhDevice,PULONGpIntSrc);//得到中断次数

DEVAPIBOOLFARPASCALPCIE8422_ReleaseDeviceInt(HANDLEhDevice);//释放中断

//#########数据读取函数(DMA方式)(上层用户函数)###########################

//###########内存映射寄存器直接操作及读写函数############################

//适用于用户对本设备更直接、更特殊、更低层、更复杂的控制。

比如根据特殊的

//控制对象需要特殊的控制流程和控制效率时,则用户可以使用这些接口予以实现。

BOOLDEVAPIFARPASCALPCIE8422_GetDeviceAddr(//取得指定的指定设备ID号的映射寄存器的线性基地址,返回设备总数

HANDLEhDevice,//设备对象句柄

PULONGLinearAddr,//返回指定映射寄存器的线性地址

PULONGPhysAddr,//返回指定映射寄存器的物理地址

intRegisterID);//设备映射寄存器的ID号(0-5)

BOOLDEVAPIFARPASCALPCIE8422_GetDeviceBar(//取得指定的指定设备寄存器组BAR地址

HANDLEhDevice,//设备对象句柄,它由CreateDevice函数创建

ULONGpulPCIBar[6]);//返回PCIBAR所有地址,具体PCIBAR中有多少可用地址请看硬件说明书

BOOLDEVAPIFARPASCALPCIE8422_GetDevVersion(//获取设备固件及程序版本

HANDLEhDevice,//设备对象句柄,它由CreateDevice函数创建

PULONGpulFmwVersion,//固件版本

PULONGpulDriverVersion);//驱动版本

BOOLDEVAPIFARPASCALPCIE8422_WriteRegisterByte(//往设备的映射寄存器空间指定端口写入单节字数据

HANDLEhDevice,//设备对象

ULONGLinearAddr,//指定映射寄存器的线性基地址

ULONGOffsetBytes,//相对于基地址的偏移位置

BYTEValue);//往指定地址写入单字节数据(其地址由线性基地址和偏移位置决定)

BOOLDEVAPIFARPASCALPCIE8422_WriteRegisterWord(//写双字节数据(其余同上)

HANDLEhDevice,

ULONGLinearAddr,

ULONGOffsetBytes,

WORDValue);

BOOLDEVAPIFARPASCALPCIE8422_WriteRegisterULong(//写四节字数据(其余同上)

HANDLEhDevice,

ULONGLinearAddr,

ULONGOffsetBytes,

ULONGValue);

BYTEDEVAPIFARPASCALPCIE8422_ReadRegisterByte(//读入单字节数据(其余同上)

HANDLEhDevice

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1