当前位置:首页 > 嵌入式 > 嵌入式软件

利用USB主控制器控制U盘作为数据采集系统的移动存储器。该设计基于USB主/从控制芯片CH375S,遵守大容量存储设备类规范中的BulkOnly和UFI子规范,支持FAT16文件系统,实现了数据采集系统中可用U盘进行数据存储,方便与计算机交互;配合液晶和外扩键盘,可以完全抛开PC,实现采集数据的实时显示和指定存储区域内数据的查看。

引言

随着移动数据存储领域的日益扩大,在嵌入式系统中实现USB主机功能,以实现利用USB存储设备进行数据存储的需求变得日益迫切。U盘作为新型移动存储设备,以体积小、速度高、抗震动、通用性强的特点倍受青睐,因此,在数据采集系统中开发出嵌入式USB主机控制U盘作为数据存储器,将具有良好的实用价值和应用前景。

1USB大容量存储设备协议分析

基于USB的大容量数据采集系统的设计,主要是要实现嵌入式USBHost。要想设计出能直接读写U盘的嵌入式USBHost,就必须理解USB大容量存储设备协议。目前USB大容量存储设备软件结构如图1所示。


图1 USB大容量存储设备软件结构示意图

图1中,虚线左边部分是主机的驱动程序结构,也是嵌入式USBHost所要实现的。左边最顶层是FAT文件系统层API ,用于提供给用户访问存储设备的方法。U盘中的数据都是以文件格式存储的,FAT16因具有高度兼容性而被广泛应用于移动存储设备中。这里简要分析一下FAT16文件系统结构和存储空间的组织原则。

(1) FAT16文件系统结构

FAT格式的磁盘大致可以分5个部分:MBR区、DBR区、FAT区、FDT区和DATA区。
MBR区: 又称主引导记录,其后为64字节的DPT(Disk Partition Table,磁盘分区表)。由于不需要从U盘启动,且U盘就一个分区,所以U盘上没有这个数据区。
DBR区: 即操作系统引导记录区,通常占用分区的第0扇区,共512字节,由跳转指令、BPB、结束标志几部分组成。
FAT 区: 存放文件分配表。文件分配表是一一对应于数据区簇号的列表,反映了所有簇的使用情况。每个表项单元的大小决定了FAT的类型,比如FAT16的表项单元为16位。FAT表一般都有一个备份。
FDT区: 存放着文件目录表,位于备份FAT表之后。FDT由32位的目录项线性构成,记录着根目录下每个文件(子目录)的起始单元、属性等。FDT大小为32个扇区,最多可以保存512个目录项。
DATA区: 是真正意义上的数据存储的地方,位于FDT之后,占据硬盘上的大部分数据空间。

(2) FAT16的存储空间组织原则

当磁盘空间格式化为FAT分区时,FAT文件系统就将这个分区当成整块可分配的区域进行规划,以便数据的存储。FAT将磁盘空间以一定数目的扇区为单位进行划分,这样的单位称为簇。通常情况下,每扇区512字节的原则是不变的。簇的大小一般是2n(n为整数)个扇区的大小(每个簇的最大存储空间为32 KB)。一般采用逻辑块LBA(Logical Block Addressing)寻址方式。

图1虚线左边中间的UFI/ATA驱动层将应用程序的访问转换成UFI或ATA命令/数据格式,与外部存储设备之间按照子规范UFI或ATA的定义进行命令/状态/数据的交换;最底层则是USB传输驱动,负责将上层的UFI/ATA数据发送到USB总线上以及接收从存储设备返回的状态/数据。CBI/BulkOnly/ATA/UFI是USB Mass Storage类规范中4个独立的子类规范的简称。前两个子规范定义了数据/命令/状态在USB上的传输方法。BulkOnly传输规范仅使用Bulk端点传送数据/命令/状态,CBI传输规范则使用Control/Bulk/Interrupt三种类型的端点进行数据/命令/状态传送。后两个子规范则定义了存储介质的操作命令。ATA命令规范用于硬盘,UFI命令规范是针对USB移动存储而制定的。

2嵌入式USB-Host设计

2.1 硬件设计

系统采用增强型8051内核的单片机STC89C516RD+作为中央处理芯片,选用南京沁恒电子公司的CH375S作为USB主机控制芯片。

STC89C516RD+具有64 KB的Flash程序存储器,1 280字节的RAM(256字节的内部RAM和1 KB的外部RAM),支持在系统/在应用可编程(ISP,IAP);CH375S是一款符合USB1.1协议规范的USB总线的通用接口芯片,支持USBHost主机方式和USBDevice/Slave设备方式。CH375S具有8位数据总线和读、写、片选控制线以及中断输出,因此CH375S作全速USBHost 主机接口时,外围元器件只需要晶振和电容,就可以方便地挂接到单片机/DSP/MCU/MPU等控制器的系统总线上。考虑到读/写U盘或移动硬盘时一般都是以扇区模式进行的,所以要加磁盘数据缓冲区和文件数据缓冲区(都是512字节的整数倍),并且缓冲区越大,执行的效率越高,所以外扩了32 KB的RAM。

USB-Host电路如图2所示。

在图2中,CH375S芯片的RD和WR可以分别连接到单片机的读选通输出引脚和写选通输出引脚。CS可以直接由单片机I/O脚驱动。INT输出的中断请求是低电平有效,可以连接到单片机的中断输入引脚或者普通I/O 引脚;单片机可以使用中断方式或者查询方式获知中断请求。这里用中断方式,使用单片机的INTO。

当WR为高电平并且CS和RD及A0 都为低电平时,CH375S中的数据通过D7~D0输出;当RD为高电平并且CS和WR及A0 都为低电平时,D7~D0上的数据被写入CH375S 芯片中;当RD为高电平并且CS和WR都为低电平而A0为高电平时,D7~D0上的数据被作为命令码写入CH375S芯片中。

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,表示此簇当前未被使用。


图2 USBHost电路框图

由于在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的大容量数据采集将会有非常广阔的应用前景。

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

全新的专有模型导入功能让客户更轻松地将其专属模型导入到Amazon Bedrock中,从而充分利用Amazon Bedrock的强大功能。全新的模型评估功能使客户能够广泛且便捷地选择完全托管模型,包括RAG优化的新版Am...

关键字: 生成式AI 基础模型 数据

2024年4月17日,中国 – 服务多重电子应用领域、全球排名前列的半导体公司意法半导体(STMicroelectronics,简称ST;纽约证券交易所代码:STM)将在2024年4月25日欧洲证券交易所开盘前公布202...

关键字: 半导体 数据

数据占满我们的电子设备已成常态,为了满足广大用户的需求,NAS应运而生。然而,对于许多普通用户来说,NAS设备的设置和使用却常常令人望而却步。不过,铁威马TOS 6的出现,不仅功能强大,而且操作简便,即使是初次接触NAS...

关键字: 数据 电子设备 NAS

机器学习作为人工智能领域的重要组成部分,其过程涉及到多个核心环节。本文将详细阐述机器学习的四个主要步骤:数据准备、模型选择、模型训练与评估,以及模型部署与应用,以揭示机器学习从数据到应用的完整流程。

关键字: 数据 人工智能 机器学习

机器学习算法是人工智能领域中的核心技术之一,它通过对大量数据进行学习,自动发现数据中的规律和模式,从而实现对新数据的预测、分类、聚类等任务。本文将深入探讨机器学习算法的基本过程,包括数据准备、模型选择、训练与评估等关键步...

关键字: 数据 人工智能 机器学习

该系列产品有助于嵌入式设计人员在更广泛的系统中轻松实现USB功能

关键字: 单片机 嵌入式设计 USB

在这篇文章中,小编将对usb的相关内容和情况加以介绍以帮助大家增进对它的了解程度,和小编一起来阅读以下内容吧。

关键字: USB USB隔离诊断

随着人工智能(AI)技术的迅速发展,人们对于通用人工智能(AGI,即Artificial General Intelligence)的期待也日益高涨。通用人工智能指的是具备像人类一样全面智能的计算机系统,能够执行各种复杂...

关键字: 人工智能 计算机 数据

今天,小编将在这篇文章中为大家带来Type-C接口的有关报道,通过阅读这篇文章,大家可以对Type-C接口具备清晰的认识,主要内容如下。

关键字: Type-C USB

一直以来,Type-C接口都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来Type-C接口的相关介绍,详细内容请看下文。

关键字: Type-C USB
关闭
关闭