引 言
工业现场一般都需要数据采集器来完成各类数据采集任务。在很多实际应用中,往往要求数据采集器具有工作可靠、成本低廉、操作简单、数据便于收集和计算机分析等特点。U盘作为新型移动存储设备,以体积小、速度高、抗震动、通用性强的特点倍受青睐。如果能在嵌入式数据采集系统中实现USB主机功能,那么嵌入式数据采集器就能像PC机一样方便灵活地利用U盘这类USB存储设备进行数据存储。本文以带有片上A/D转换器的C8051F340处理器和USB接口芯片CH375为基础,设计了一款可对100 kHz以下的低频模拟信号进行10位深度采样的低成本数据采集器。该数据采集器具有USB主机功能,可将采集的数据以FAT32文件系统格式直接存储到普通U盘中。数据采集完毕后,用户可直接从采集器上取下U盘,利用计算机方便地实现对采集数据的收集和分析处理。
下面分别介绍数据采集器系统方案设计和系统软硬件设计。
1 系统方案设计
系统方案如图1所示,系统主要由C8051F340单片机和USB 接口芯片CH375构成。被测信号首先通过调理电路的抗混叠滤波和限幅处理,然后送给单片机片上A/D转换器进行采样,当采样数据达到一个扇区512字节后,单片机通过自身并口控制CH375向U盘写入采样数据。采样数据在U盘中以FAT32文件系统格式写入,并以文本文件形式保存。控制输入电路负责输入用户指令,以控制A/D工作模式和改变采样频率。单片机实现U盘读写和FAT32文件系统时,使用了南京沁恒电子有限公司开发的CH375HF5.
图1 数据采集器方案图
2 系统硬件设计
由于C8051F340内部集成了高精度时钟源、电压调节器、A/D转换器以及用于A/D转换的参考电压源等丰富的片上外设,因此对系统进行硬件设计时,无需再外扩上述电路,从而简化了系统硬件结构,提高了集成度和可靠性。
如图2所示,电源模块生成的5 V电压一方面给U盘供电,一方面通过单片机的REGIN引脚输入到单片机的电压调节器,从而使单片机自己生成工作所需的3 V电压,并可将生成的3 V电压通过VDD引脚输出给其他3V器件使用。单片机利用P3口以及P20~P24通用I/O引脚模拟并口实现与CH375芯片的并口通信。这里需要注意两点。第一,C8051F340是3 V低功耗单片机,为了保证C8051F340与CH375的通信接口电平匹配,防止通信不稳定,选择了同样是3 V供电的CH375V芯片;另外,由于U盘是5 V供电驱动,而作为USB HOST的CH375是3 V供电,不能直接向U盘供电,因此需要5 V电源模块给U盘单独供电。第二,图2所示的CH375电路原理图并不完整,振荡器电路等附加电路没有全部画出,完整的电路可参考文献。被测信号经过信号调理电路后,通过单片机P25引脚进入单片机片上A/D转换器。为了使采集器能尽可能多地应用到不同采集领域,采集器A/D转换的参考电压、转化启动时钟、差分或单端采样选择、采样频率等参数设置均可根据图3所示的用户输入控制电路灵活改变。在图3的8位拨位开关中,开关1设置是差分采样还是单端采样,开关2设置A/D采样是使用内部还是外部参考电压,开关3设置A/D采样是由单片机定时器启动还是由外部输入更新时钟启动,开关4~8设置采样频率。开关4~8分别代表10 ksps、20ksps、30 ksps、40 ksps、100 ksps,通过开关4~8的不同组合,可以实现以10 ksps为步进,10~200 ksps采样频率的改变。例如,当8位拨位开关全部闭合时,意味着采样频率为200 ksps,且A/D转换采用单端采样方式,采样参考电压需从系统外部输入到图2中的VREF引脚,采样更新时钟需从系统外部输入到图2中的CNSTR引脚。另外,系统还设计了复位按键以及用于下载程序代码和进行调试的10针下载调试接口电路,如图4所示。
图2 系统硬件原理图
图3 控制输入电路原理图
图4 单片机复位与调试接口原理图
3 系统软件设计
如图5所示,C8051F340单片机主程序需要首先完成单片机I/O引脚的设置与相关寄存器配置,然后读取P4口用户输入控制指令,并根据用户指令设置A/D转换器参数,接着初始化CH375通信端口,进而初始化CH375芯片及其程序库。紧接着检查U盘是否插入,以及插入的U盘是否准备就绪。一旦U盘准备就绪,就在U盘新建文本文件格式的数据采集文件,然后打开文件,并使文件指针指向文件尾部以方便后面写入采集数据。所有准备工作完成,就可以启动A/D转换器。如果采样数据达到U盘1个扇区512字节,那么就可以将采样数据一次性写入U盘的1个扇区中。这里需要注意两点。第一,U盘读写可以字节为单位也可以块为单位,以字节为单位需要频繁访问U盘,从而导致U盘存储速度下降,使用寿命缩短,而以U盘1个扇区的512字节为单位读写U盘则可以很好地解决这个问题;另外,为了实现不间断实时采样,在设计数据的采集和存储时采用了“乒乓制”,即在单片机开辟了A、B两个512字节的RAM存储区,而A、B两个存储区分别交替完成存储采样数据和将采样数据搬移到U盘中的任务,相互独立工作,互不干扰,有效地解决了存储数据与搬移数据可能出现的冲突。第二,A/D转换器采集到的数据不是真实的电压值,而只是真实电压值与参考电压相比的相对值,因此为了今后对采样值分析方便,还需要计算出真实采样电压值,并将数字转换为字符后再存储到U盘采样数据文件中。
图5 单片机主流程序
C8051F340单片机通过CH375访问U盘是系统软件的核心部分,在实现这部分功能的程序中使用了南京沁恒电子有限公司开发的CH375HF5.LIB库函数。这里以系统插入U盘,向U盘写入512字节数据,然后拔出的过程为例,简单介绍单片机访问CH375的程序流程。
系统初始化成功后,调用xQueryInterrupt()函数查询CH375中断并更新中断状态,等待U盘插入。U盘插入后,经过一段延时,系统调用CH375DiskReady()函数查询U盘是否准备就绪。U盘一旦就绪,系统调用mCopyCodeStringToIRAM()和CH375FileCreate()函数,在U盘根目录新建采样数据文件,并调用CH375FileOpen()函数打开文件,接着使用语句
mCmdParam.ByteLocate.mByteOffset=Oxffffffff使文件指针指向文件的尾部,以方便后面添加采样数据。如果已完成512字节采样数据的采集,则调用
CH375FileWriteX()函数,实现U盘一个扇区的写操作。写操作完毕后,需要利用下列4个语句:
mCmdParam.Modify.mFileAttr=Oxff
mCmdParam.Modify.mFileTime=MAKE_FILE_TIME()
mCmdParam.Modify.mFileDate=MAKE_FILE_DATE()
mCmdParam.Modify.mFileSize=0xffffffff
对文件属性、时间、日期、长度等参数进行修改,然后调用CH375FileModify()函数完成对上述4个文件属性的更新。最后系统调用CH375FileClose()函数关闭文件,调用xQueryInterrupt()函数查询CH375中断并更新中断状态,等待U盘拔出,从而最终完成对U盘的访问。
结语
本文设计的数据采集器利用高度集成的C8051F340处理器实现了数据A/D转换和系统控制,利用CH375实现了采集器的USB主机功能,从而使采集的数据能以FAT32文件系统格式直接存储到U盘中。该采集器数据收集方便,便于计算机分析,同时仅有C8051F340和CH375两个主要器件,结构简单,工作稳定,只有名片大小,成本不足50元(不包括U盘),已成功应用于工业现场。