基于USB-Host的大容量数据采集系统的设计
时间:09-14
来源:互联网
点击:
2.2 软件设计
CH375S不仅是一个通用的USBHost 硬件接口芯片,而且还内置了控制传输的协议处理器和处理MassStorage海量存储设备的专用通信协议固件,支持Bulk Only传输协议和SCSI、UFI、RBC 或等效命令集的USB 存储设备,简化常用的控制传输。参考图1,单片机程序主要是构建FAT文件系统。
设计文件系统,就是在指定的存储介质上,选择一种或几种数据组织方式,实现常用的几个文件API函数功能,最终实现数据的按名存取。
从第一个分区数据结构的分区起始扇区数的位置读取512字节,为DBR,包括一个引导程序和BPB参数块。BPB参数块记录本分区的起始扇区、结束扇区、文件存储格式、介质描述符、根目录项数、FAT个数、保留扇区数和分配单元的大小等重要参数。
根据保留扇区的数目可知FAT表的位置(分区起始扇区数+保留扇区数)。根据FAT的个数以及每个FAT表占用的扇区数,即可算出FDT的位置(FAT表位置+FAT表个数×FAT表所占扇区数)。FDT中保存着目录项,目录项中的文件首簇号就是读/写文件的入口。
根据以上分析,即可设计如下文件操作:
① 创建文件。在FDT中申请新目录项。
② 写文件。当写一新文件时,需在FAT表中查找未使用的簇,并将该簇号写入文件对应目录数据结构中的起始簇号位置。当此文件长度大于一簇时,还需在FAT表中对应的起始簇号位置填入下一可用簇的簇号,直到文件的最后一簇(FAT表中的相应位置填FFFF)。若磁盘有备份FAT,则须在备份FAT表的相应位置填入正确的内容。
③ 删除文件。除了将FDT中对应的目录项置相应标志外,还要修改FAT表及备份FAT表。将此文件使用的簇号位置清 0,表示此簇当前未被使用。
由于在FAT16中子目录被视为特殊的文件,对其操作类似于文件操作,所以不再赘述。
构建的FAT16文件系统对用户提供文件级API函数,如CH375_Creat_File( )、CH375_Write_File( )、CH375_Delete_File( )等,当执行文件级API函数时,将调用Seck_Empty_Cluster( )寻找一个空簇、Link_Cluster_List( )建立簇链、Seck_Sector( )定位文件指针等中间函数。这些中间函数在调用CH375S专用于海量存储设备类对应的命令,如SET_USB_MODE、DISK_READ、 DISK_WRITE等。下面以创建ADC.TXT,并向其中写入A/D采样数据为例,其工作流程如图3所示。

图3 创建文件并向其中写入数据流程
用FAT16文件系统存储文件时最小单元为簇。即使一个很小的文件也会占用一簇,所以,为了节约存储空间,在图3中将创建同名文件并向其中写入数据转换为向原文件追加数据。
3 大容量数据采集系统设计
利用已设计好的嵌入式USBHost搭建起大容量数据采集系统,系统的框图如图4所示。

图4 系统硬件框图
温度传感器采用DS18B20。它是单总线数字温度传感器,测量范围为-55"+125℃,可编程9~12位A/D转换精度,测温分辨率可达0.062 5℃。液晶采用TM320240ECCW,它是320×240点阵液晶,显示控制芯片是SED1335,既可以以文本模式显示所测温度数据,也可以自建平面坐标以曲线模式显示温度数据。外扩了4×5键盘,用于设定采集的时间间隔、时间长度;系统所允许的高、低温容限;设定采集时的时间以及输入自己想查看数据的存储区域。键盘用8279管理,目的是减轻单片机的负担。因为单片机处理温度采集及温度数据在液晶上显示时已经耗去一些时间,再加上定时和不定时的读/写U盘,负荷已经很重了,所以键盘扫描与处理交给8279来做。单片机采用查询方式查询8279的中断。
驱动程序包括液晶驱动、DS18B20驱动和8279驱动。其中主要的工作是液晶驱动程序的编写。液晶驱动包括初始化液晶、读写参数子程序、写命令子程序、建坐标子程序、绘点子程序、汉字写入子程序等。液晶在系统初始化和对U盘初始化与枚举时显示提示信息,在采集过程中,以曲线模式显示温度数据。
结语
基于CH375S实现的USBHost接口,其硬件结构便于在其他开发平台上扩充,其核心的文件层协议栈采用标准的C语言编写,具有良好的移植性。类似的基于USB的大容量数据采集方案已用于轻轨铁路、无纸记录仪的数据存储系统中。随着USB OTG时代的到来,基于USB的大容量数据采集将会有非常广阔的应用前景。
CH375S不仅是一个通用的USBHost 硬件接口芯片,而且还内置了控制传输的协议处理器和处理MassStorage海量存储设备的专用通信协议固件,支持Bulk Only传输协议和SCSI、UFI、RBC 或等效命令集的USB 存储设备,简化常用的控制传输。参考图1,单片机程序主要是构建FAT文件系统。
设计文件系统,就是在指定的存储介质上,选择一种或几种数据组织方式,实现常用的几个文件API函数功能,最终实现数据的按名存取。
从第一个分区数据结构的分区起始扇区数的位置读取512字节,为DBR,包括一个引导程序和BPB参数块。BPB参数块记录本分区的起始扇区、结束扇区、文件存储格式、介质描述符、根目录项数、FAT个数、保留扇区数和分配单元的大小等重要参数。
根据保留扇区的数目可知FAT表的位置(分区起始扇区数+保留扇区数)。根据FAT的个数以及每个FAT表占用的扇区数,即可算出FDT的位置(FAT表位置+FAT表个数×FAT表所占扇区数)。FDT中保存着目录项,目录项中的文件首簇号就是读/写文件的入口。
根据以上分析,即可设计如下文件操作:
① 创建文件。在FDT中申请新目录项。
② 写文件。当写一新文件时,需在FAT表中查找未使用的簇,并将该簇号写入文件对应目录数据结构中的起始簇号位置。当此文件长度大于一簇时,还需在FAT表中对应的起始簇号位置填入下一可用簇的簇号,直到文件的最后一簇(FAT表中的相应位置填FFFF)。若磁盘有备份FAT,则须在备份FAT表的相应位置填入正确的内容。
③ 删除文件。除了将FDT中对应的目录项置相应标志外,还要修改FAT表及备份FAT表。将此文件使用的簇号位置清 0,表示此簇当前未被使用。
由于在FAT16中子目录被视为特殊的文件,对其操作类似于文件操作,所以不再赘述。
构建的FAT16文件系统对用户提供文件级API函数,如CH375_Creat_File( )、CH375_Write_File( )、CH375_Delete_File( )等,当执行文件级API函数时,将调用Seck_Empty_Cluster( )寻找一个空簇、Link_Cluster_List( )建立簇链、Seck_Sector( )定位文件指针等中间函数。这些中间函数在调用CH375S专用于海量存储设备类对应的命令,如SET_USB_MODE、DISK_READ、 DISK_WRITE等。下面以创建ADC.TXT,并向其中写入A/D采样数据为例,其工作流程如图3所示。

图3 创建文件并向其中写入数据流程
用FAT16文件系统存储文件时最小单元为簇。即使一个很小的文件也会占用一簇,所以,为了节约存储空间,在图3中将创建同名文件并向其中写入数据转换为向原文件追加数据。
3 大容量数据采集系统设计
利用已设计好的嵌入式USBHost搭建起大容量数据采集系统,系统的框图如图4所示。

图4 系统硬件框图
温度传感器采用DS18B20。它是单总线数字温度传感器,测量范围为-55"+125℃,可编程9~12位A/D转换精度,测温分辨率可达0.062 5℃。液晶采用TM320240ECCW,它是320×240点阵液晶,显示控制芯片是SED1335,既可以以文本模式显示所测温度数据,也可以自建平面坐标以曲线模式显示温度数据。外扩了4×5键盘,用于设定采集的时间间隔、时间长度;系统所允许的高、低温容限;设定采集时的时间以及输入自己想查看数据的存储区域。键盘用8279管理,目的是减轻单片机的负担。因为单片机处理温度采集及温度数据在液晶上显示时已经耗去一些时间,再加上定时和不定时的读/写U盘,负荷已经很重了,所以键盘扫描与处理交给8279来做。单片机采用查询方式查询8279的中断。
驱动程序包括液晶驱动、DS18B20驱动和8279驱动。其中主要的工作是液晶驱动程序的编写。液晶驱动包括初始化液晶、读写参数子程序、写命令子程序、建坐标子程序、绘点子程序、汉字写入子程序等。液晶在系统初始化和对U盘初始化与枚举时显示提示信息,在采集过程中,以曲线模式显示温度数据。
结语
基于CH375S实现的USBHost接口,其硬件结构便于在其他开发平台上扩充,其核心的文件层协议栈采用标准的C语言编写,具有良好的移植性。类似的基于USB的大容量数据采集方案已用于轻轨铁路、无纸记录仪的数据存储系统中。随着USB OTG时代的到来,基于USB的大容量数据采集将会有非常广阔的应用前景。
嵌入式 USB 总线 单片机 电子 电容 DSP MCU 电路 ADC 传感器 温度传感器 C语言 相关文章:
- 基于ARM与DSP的嵌入式运动控制器设计(04-25)
- 多核及虚拟化技术在工业和安全领域的应用(05-23)
- 基于ARM核的AT75C220及其在指纹识别系统中的应用(05-24)
- 基于FPGA安全封装的身份认证模型研究(05-27)
- 基于nRF2401智能无线火灾监控系统设计(04-01)
- 智能视频多媒体技术的应用(05-31)
