基于嵌入式USB接口的数据采集系统的设计
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接口的嵌入式设备上方便地进行连接和安装,是数据采集应用的一个重要部分。
系统 设计 数据采集 接口 嵌入式 USB 基于 相关文章:
- Linux嵌入式系统开发平台选型探讨(11-09)
- VxWorks实时操作系统下MPC8260ATM驱动的实现(11-11)
- VXWORKS内核分析(11-11)
- Linux内核解读入门(11-09)
- linux文件系统基础(02-09)
- 基于Winodws CE的嵌入式网络监控系统的设计与实现(03-05)