新闻中心

EEPW首页>模拟技术>设计应用> 低成本的U盘数据采集器设计

低成本的U盘数据采集器设计

作者: 时间:2009-01-16 来源:网络 收藏

3 系统软件设计
如图5所示,C8051F340单片机主程序需要首先完成单片机I/O引脚的设置与相关寄存器配置,然后读取P4口用户输入控制指令,并根据用户指令设置A/D转换器参数,接着初始化CH375通信端口,进而初始化CH375芯片及其程序库。紧接着检查是否插入,以及插入的是否准备就绪。一旦准备就绪,就在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盘采样数据文件中。

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盘),已成功应用于工业现场。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭