当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]基于嵌入式USB接口的数据采集系统的设计

摘要:USB接口的通用性和简便性使其成为数据采集系统嵌入式系统进行数据传输的理想选择。因此,设计一款以单片机控制MAX197芯片进行模数转换,以及通过USB接口芯片PDIUSBD12进行数据传输的采集系统,并详细介绍了单片机固件程序和嵌入式驱动程序的具体实现。最后通过实际采集正弦波信号进行测试以验证该系统的可用性,并针对出现的问题提出了相应的改善措施。改善后的整个系统功耗低、可靠性高,传输速度能满足实际的数据采集任务。
关键词:数据采集系统;USB接口开发;嵌入式系统;驱动程序开发;MAX197;PDIUSBD12

    数据采集任务多在户外进行,所以数据采集系统通常要满足实时性、专用性、可靠性和低功耗等性能,这些特性在嵌入式系统中都能得到很好的体现,因此本文将以WindowsCE的嵌入式平台来开发效据采集系统。但是由于嵌入式系统的硬件结构不易改变,所以在进行数据采集设备扩展时应该选择接口简单灵活、数据传输率高和支持热拔插的传输总线,而USB接口则能很好地满足这些要求,同时USB还有总线供电和不受插槽、中断等硬件资源限制的特性,因此USB接口是数据采集设备与嵌入式系统进行数据传输的理想选择。综上所述,本文将设计一款基于嵌入式USB接口的数据采集系统以满足实际的需要,下面将从硬件设计,程序实现和实际测试3方面具体描述。

1 硬件设计
1.1 硬件结构框架
    本系统的硬件结构主要由控制中心、模数转换和USB协议实现3个部分组成,下面将针对这3个部分进行详细的介绍。具体的结构框架如图1所示。


    1)控制中心。本系统采用单片机提供地址数据复用总线、选通信号(D12_CS和AD_CS),读写信号(RD和WR)以及对中断信号(D12_INT和AD_INT)进行检测。
    2)模数转换。本系统采用MAX197芯片进行模数转换,该芯片具有采样保持功能和12位的高精度输出。单片机可向MAX197写入其特定的命令从而选择指定的通道进行模数转换,转换结束后,MAX197向单片机输出低电平的AD_INT信号,单片机采用轮询方式检测到后通过HBEN信号控制MAX197输出低8位和高4位的转换数据。
    3)USB协议实现。本系统采用PDIUSBD12作为USB设备端的控制芯片,该芯片实现了USB1.1传输协议。嵌入式系统要对USB设备进行读写均需通过信号D12_INT向单片机发送中断,单片机响应中断后只需对PDIUSBD12的不同寄存器进行读写操作就可以利用USB进行数据传输。
1.2 固件程序设计
    硬件设备需要固件程序的控制以保证其正常运行,本文所设计的固件程序主要用于识别USB设备以及采集与传输数据。固件程序的总体流程如图2所示。

[!--empirenews.page--]
    1)设备识别。USB设备的识别过程分别由操作系统和设备驱动两个部分通过USB协议的标准设备请求来完成。操作系统在USB设备连接时加载设备驱动程序并分配通信地址,驱动程序启动后通过中断读取相关描述符进行资源配置并使能传输端点,从而为应用程序提供接口。
    2)数据采集与传输。通过单片机的定时器可对数据的采集频率进行设置。本系统的数据采集频率为1 000 Hz,因此设置定时器每一毫秒中断一次进行数据采集,而主机端对USB设备的读写操作则通过外部中断实现,定时器中断优先级高于外部中断以保证采集频率固定为1 000 Hz。主机端通过写操作向USB设备发送控制信息,包括设备启动和停止的相关初始化与清理的工作,其中在对USB设备进行读操作前要先在端点的缓冲区填写64字节数据并通过命令使其有效,不然主机端对USB设备进行读操作时,无效的缓冲区将导致PDIUSBD12芯片不会产生中断,从而导致读操作失败。

2 驱动程序设计
    Windows CE下的USB设备驱动模型由3个层次组成,其中由操作系统实现的有两层,它们分别是HCD模块(USBHost Controller Driver)和USBD模块(USB Bus Driver),而第三层则被称为USB客户端驱动(USB Client Driver),由驱动开发人员实现。HCD模块处于最底层,是CPU中USB控制器的驱动,为USBD模块提供底层的功能访问服务。USBD模块处于HCD模块的上层,它根据HCD模块提供的功能设计USB驱动接口函数,并提供给第3层使用。USB客户端驱动处于USB驱动模型的最顶层,也是本文所要设计的USB驱动程序,它向上为应用程序提供接口以方便对USB设备进行控制,向下利用USBD模块提供的接口函数传递控制信息和数据。因此,要成功开发USB设备的驱动程序,在操作系统定制的时候就需要把HCD和USBD的相关组件添加进去。
    本文开发的USB设备驱动程序是流接口形式的驱动程序,它被设计用来与通常的文件系统API(如CreateFile、ReadFile和WriteFile等)进行通信,应用程序通过对文件系统的操作来完成对设备的控制。本驱动所设计的流接口如表1所示。

[!--empirenews.page--]

3 系统测试
3.1 测试条件与结果
    本测试的目的在于检验本文设计的数据采集系统能否在采集频率较高的情况下准确地采集数据,并通过USB接口完整地进行数据传输。因此,测试将基于以下5个条件进行。其中一个通道的部分测试数据结果如图3所示。


    1)测试信号为正弦波,峰峰值约为12 V,频率为100Hz。
    2)系统以1000Hz的采集频率连续对8个通道进行采集。
    3)单片机晶振频率为12MHz。
    4)采集系统的数据缓冲区设置为128字节。
    5)采集数据记录在SD卡中。
3.2 测试结果分析
    由3.1的正弦波采集测试结果图可以得出如下两点结论:
    1)采集的正弦波的峰峰值约为12 V,一个周期有10个数据点,根据采集频率1000Hz可知采集到的正弦波的频率为100Hz。
    2)在30 ms的时候,正弦波发生畸变,可见采集数据在USB传输过程中发生丢失。
    第一点结论说明了本采集系统能准确地进行数据采集,而对于第二点结论所表现出的不完整性分析如下。
    1)设V1是有效数据的传输速度,V2是协议开销的传输速度,N为采集数据的通道数目,M为每通道采集的字节数,H为采集频率,K为缓冲区大小,U为传输的协议开销字节数。USB数据帧的组成包括有效数据和协议开销两个部分,其中传输协议的开销包括同步字段、包标识符、地址信息、端点信息和CRC校验,所以数据采集系统要求的USB传输速度可根据公式(1)计算得到。本文设计的数据采集系统共有8个通道,每通道有2个字节的数据,采集频率为1 000 Hz,根据公式(2)可得有效数据的传输速度约为16 kB/s。一个完整的数据帧的传输需要11个字节的协议开销,本文设计的数据传输过程分为4个步骤:发送传输请求,发送接收控制命令,接收请求应答,开始接收数据,每个步骤均需传输一个完整的USB数据帧,因此进行一次传输的协议开销为44个字节,根据公式(3)可计算出协议开销的传输速度。以缓冲区的大小为横坐标,数据采集系统要求的USB传输速度为纵坐标绘出图4所示的关系图,分析该图可得:缓冲区越大,所要求的USB传输速度越少。测试中较少的128字节缓冲区使得在一次传输中有效数据过少,约5.5 kB/s的额外开销传输速度约占总速度的25%,过高的额外传输开销导致数据来不及传输,从而发生数据丢失的情况。
   
    2)另外,由于应用程序要在SD卡这类低速设备上记录数据,所以记录数据的时候来不及获取USB设备中的数据也会导致实际的传输速度变慢,导致新采集的数据溢出缓冲区并覆盖来不及传输的旧数据,从而造成数据丢失。
    因此有必要采取一定的方法来改善数据采集系统,以保证数据采集的完整性。下面将提出3个解决方法。
3.3 系统改善措施
    1)增大晶振频率到24MHz,加快单片机的处理速度。
    2)在硬件上增加静态RAM作为数据存储的缓冲区,缓冲区的存在一方面可以保证新采集的数据不会覆盖没来得及传输的旧数据,另一方面可以让USB设备在一次USB数据帧的传输中所含有的有效数据更多,从而减少在传输过程中的校验、识别和握手等USB协议的额外开销,加快传输速度。
    3)在应用程序控制USB设备时将新建2条线程,一条进程用于向USB设备进行读写操作来进行数据采集,另一条进程用于向嵌入式系统的SD卡这类低速设备进行读写操作来记录数据,利用操作系统分时复用的特性减少数据记录过程对数据传输造成的延误,从而加快USB设备的传输速度。

4 结束语
    本文从硬件结构、固件程序和驱动程序3个方面对基于嵌入式USB接口的数据采集系统进行了设计。最后还通过实际采集正弦波信号对系统进行了测试,并提出了3个方法有效地提高了数据采集系统的传输速度。本系统能在拥有USB接口嵌入式设备上方便地进行连接和安装,是数据采集应用的一个重要部分。

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

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭