当前位置:首页 > 电源 > 数字电源
[导读]本文针对计算机外设通过通用串行总线(USB)接口接入问题,设计了USB总线的数据同步采集系统,配以相应USB接口驱动程序,可实现各种计算机外设即插即用地接入。

摘要:本文针对计算机外设通过通用串行总线(USB)接口接入问题,设计了USB总线的数据同步采集系统,配以相应USB接口驱动程序,可实现各种计算机外设即插即用地接入。
关键词:USB,同步数据采集,SIE

1. 引言
    通用串行总线(USB,Universal Serial Bus)是现代PC数据传输的发展趋势,
PC的所有外设,包括键盘、鼠标、显示器、打印机、录音机、数字音响、电视机顶盒、数码相机、扫描仪、MODEM及各种多媒体音频、视频设备均可通过USB接口接入PC。USB总线同步数据采集系统即为这种总线接入系统。

2. 硬件方案
    本系统采用MAXIAM公司的MAX125四路12位同步采集芯片,只需一个
启动信号即可实现同步采集、数据转换,完成后给出一个转换完成信号,可从端口依次读取A/D转换数据,送入单片机处理;USB接口芯片采用PHILIPS 公司的PDIUSBD12,此芯片单片集成SIE、FIFO存储器、收发器及电压变换器,
并严格遵从USB1.1协议,PHILIPS SIE完成USB协议层,并且完全高速硬连接,无须任何软件干预。此模块功能包括:同步模式识别,并/串转换,位填充/解填充,CRC检验/产生,PID 确认/产生,地址识别,握手响应/产生;类似于控制其它接口芯片(如并口芯片)一样控制此接口芯片,单片机将A/D转换结果送至PIDUSBD12, PIDUSBD12将自动完成通过USB接口传输数据至PC的功能(按USB1.1协议),
具体实现电路如图1:

 

图1


图2

3. 软件接口程序
    虽然Win95 OSR2.1 支持USB,但微软推荐在win98或win2000上使用USB。软件部分由WDM驱动程序和应用程序组成。对于USB客户驱动程序,主要是与 USBDI打交道,下面的代码完成了对于IRP_MJ_READ和IRP_MJ_WRITE的响应。

/////////////////////////////////////////////////////////////////////////////
// UsbgatherRead:
//
// Description:
// Handle IRP_MJ_READ requests
//
// Arguments:
// Pointer to our FDO
// Pointer to the IRP
// IrpStack->Parameters.Read.xxx has read parameters
// User buffer at: AssociatedIrp.SystemBuffer (buffered I/O)
// MdlAddress (direct I/O)
//
// Return Value:
// This function returns STATUS_XXX

NTSTATUS UsbgatherRead( IN PDEVICE_OBJECT fdo,
IN PIRP Irp)
{
PUSBgather_DEVICE_EXTENSION dx = (PUSBgather_DEVICE_EXTENSION)fdo->DeviceExtension;
if( dx->IODisabled)
return CompleteIrp( Irp, STATUS_DEVICE_NOT_CONNECTED, 0);
if (!LockDevice(dx))
return CompleteIrp( Irp, STATUS_DELETE_PENDING, 0);

PIO_STACK_LOCATION IrpStack = IoGetCurrentIrpStackLocation(Irp);
NTSTATUS status = STATUS_SUCCESS;
ULONG BytesTxd = 0;

// 得到参数
LONGLONG FilePointer = IrpStack->Parameters.Read.ByteOffset.QuadPart;
ULONG ReadLen = IrpStack->Parameters.Read.Length;

// 检查文件指针
if( FilePointer<0)
status = STATUS_INVALID_PARAMETER;
else
{
status = UsbDoInterruptTransfer( dx, Irp->AssociatedIrp.SystemBuffer, ReadLen);
BytesTxd = ReadLen;
}

// 完成 IRP
CompleteIrp(Irp,status,BytesTxd);
UnlockDevice(dx);
return status;
}

/////////////////////////////////////////////////////////////////////////////
// UsbgatherWrite:
//
// Description:
// Handle IRP_MJ_WRITE requests
//
// Arguments:
// Pointer to our FDO
// Pointer to the IRP
// IrpStack->Parameters.Write.xxx has write parameters
// User buffer at: AssociatedIrp.SystemBuffer (buffered I/O)
// MdlAddress (direct I/O)
//
// Return Value:
// This function returns STATUS_XXX

NTSTATUS UsbgatherWrite( IN PDEVICE_OBJECT fdo,
IN PIRP Irp)
{
PUSBgather_DEVICE_EXTENSION dx = (PUSBgather_DEVICE_EXTENSION)fdo->DeviceExtension;
if( dx->IODisabled)
return CompleteIrp( Irp, STATUS_DEVICE_NOT_CONNECTED, 0);
if (!LockDevice(dx))
return CompleteIrp( Irp, STATUS_DELETE_PENDING, 0);

PIO_STACK_LOCATION IrpStack = IoGetCurrentIrpStackLocation(Irp);
NTSTATUS status = STATUS_SUCCESS;
ULONG BytesTxd = 0;

// 得到参数
LONGLONG FilePointer = IrpStack->Parameters.Write.ByteOffset.QuadPart;
ULONG WriteLen = IrpStack->Parameters.Write.Length;

if( FilePointer<0 || WriteLen<1)
status = STATUS_INVALID_PARAMETER;
else
{
// 仅写一个字节
BytesTxd = 1;
PUCHAR pData = (PUCHAR)Irp->AssociatedIrp.SystemBuffer;
UsbSendOutputReport( dx, *pData);
}

// 完成 IRP
CompleteIrp(Irp,status,BytesTxd);
UnlockDevice(dx);
return status;
}

    应用程序采用标准的文件操作方法。使用CreateFile API打开文件。使用WriteFile API发出开始命令,启动ADC,使用ReadFile读回采样值。

4. 结束语
    USB数据采集系统设计上严格遵循USB1.1协议,实现了USB的即插即用特性,可热插拔,使用便捷;扩展能力强,可扩展多达127个外设,总带宽达12Mbs;实现容易,为特殊设计PC提供了一种简便易行的外设扩展方案。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

德国海德海姆2022年7月26日 /美通社/ -- 继2021 年后,福伊特集团可持续发展评分再次获得国际独立评级机构ISS ESG评定为 B-。 这一成绩帮助福伊特在可持续发展领域成功跻身全球同行业前三名,这也是福伊特...

关键字: 可持续发展 PRIME STATUS 供应链

摘要:研究一类基于STM32的数据采集系统,采集并储存有轨电车车载超级电容的电压/电流数值。首先介绍该数据采集系统中硬件部分的各个功能区域,随后设计了数据采集系统的软件部分,编写了ADC采集的程序并通过GPRS4G无线通...

关键字: STM32 数据采集系统 寿命预测

通过消除对定制ASIC的需求并简化前端设计,测试和测量工程师可以节省数月的设计时间 北京2022...

关键字: 缓冲放大器 数据采集系统 TI

(全球TMT2022年1月20日讯)德州仪器(TI)推出具有业界超宽带宽的高输入阻抗(Hi-Z)缓冲放大器BUF802,能够支持高达3GHz的频率带宽。BUF802具有更宽的带宽和高压摆率,从而能够实现更高的信号吞吐量...

关键字: 德州仪器 缓冲放大器 数据采集系统

摘要:为了解决软件无线电应用中高频处理信号的大带宽信号采集和处理问题,给出了一种在FPGA数据采集系统中采用高速A/D转换芯片ADC08D500来对宽带、高频信号进行实时采样和转换的设计方案以及实验结果,该方案采用模块化...

关键字: 大带宽信号 FPGA 数据采集系统 ADC08D500

一、概述 近年来,数据采集及应用技术受到人们越来越广泛的关注,数据采集系统在各行各业也迅速的得到应用。其中PLC控制数据采集系统目前在工业自动化控制领域中应用最广泛。华辰智通近年来研发的

关键字: plc 数据采集系统 智能网关

加强扬尘污染治理提高空气质量,已经成为各级政府、社会各界、人民群众的关注点。建筑工地扬尘噪声在线监测系统主要监测的项目为可吸入颗粒物,并配套视频监控系统、噪声监控系统、气象系统、数据采集系统和通

关键字: 数据采集系统 检测仪 监测系统 通信系统

好文章当然要分享啦~如果您喜欢这篇文章,请联系后台添加白名单,欢迎转载哟~ 当今的数据采集系统不仅是工业应用的核心组件,通常还用于实现基于传感器的温度、流量、液位、压力和其他物理量测量,随后将测量数据转换为高分辨率数字信...

关键字: 精度 数据采集系统

本文介绍了基于SAR ADC的系统和基于sigma-delta(∑-Δ)ADC的分布式数据采集系统同步的传统方法,且探讨了这两种架构之间的区别。

关键字: adc 分布式 数据采集系统

在工业生产和科学技术研究过程的各行业中,常常要对各种数据进行采集,现在常用的采集方式是在PC机或工控机内安装数据采集卡,如A/D卡及 422卡、485卡、采集卡不仅安装麻烦,易受机箱内环境的影响,而且由于受计算机插槽数量...

关键字: 数据采集系统 usbn9602

数字电源

15504 篇文章

关注

发布文章

编辑精选

技术子站

关闭