基于MCF52223的多功能USB数据采集系统的设计

时间:2022-08-13 01:12:51

基于MCF52223的多功能USB数据采集系统的设计

摘 要:以飞思卡尔推出的内部集成USB2.0模块的MCF52223微控制器为基础,借鉴USB OTG双重角色的思想,提出了自主数据采集和非自主数据采集两种编程模式概念,实现可配置运行的嵌入式USB主机功能,完成对U盘文件的读写与查询,使U盘成为系统的外挂式海量存储设备以及查询数据库。系统稳定地应用于基于二代身份证会议签到系统的实践表明,这种设计方式对数据查询、存储、读取带来了较大方便,并能方便地切换到非自主数据采集模式,可为同类应用借鉴。

关键词:移动;嵌入式USB主机;外挂式海量存储设备;编程工作模式

中图分类号: TP303

文献标志码:A

Design of USB multifunction data acquisition system based on MCF52223

QIAN Qiusheng, WAN Yihuai

College of Computer Science and Technology, Soochow University, Suzhou Jiangsu 215006,China

)

Abstract: With reference to the idea of USB OTG dual role, and based on the microcontroller MCF52223 which is integrated with USB2.0 module produced by Freescale Corporation, this paper put forward the concept of twoprogrammingmodels: "Self Data Acquisition" and "Nonself Data Acquisition",realized the function of configurable embedded USB host, and completed the readwrite and inquiry of the Udisk, and made Udisk become the external mass storage devices and query database. This acquisition system stable usage in the meeting attendance system based on secondgeneration ID card shows that the design makes the data query, storage and read more convenient and can easily switch to nonself data acquisition mode, which can be referred by similar applications.

Key words: OnTheGo (OTG); embedded USB host; external mass storage devices; programming mode

0 引言

USB通信接口具有易于使用,数据传输快速、可靠,支持即插即用和使用灵活等优点,成为PC机与设备最主要的一种数据通信方式,也是嵌入式系统主流接口之一。嵌入式USB主机系统是指在嵌入式系统中实现USB主机功能[1],使嵌入式系统具有与USB设备通信的功能,能识别USB 闪存、USB 外挂硬盘等USB 存储外设,从而实现嵌入式系统的外挂式海量存储。

MCF52223芯片是飞思卡尔公司推出一款主要用于工业控制的32位芯片,具有稳定性好、可靠性高、接口丰富等优点,并且集成了USB 2.0低/全速主机和OTG(OnTheGo)控制器,已经广泛应用于工业控制领域。本文针对芯片内部集成的Flash通常只有几KB 至几百KB,主要用于存储程序代码和数据,无法存储图片、音频、数据库等文件的现状,采用MCF52223芯片的USB主机模块外接U盘方式实现信息的查询和记录的存储,并借鉴USB OTG双重角色的思想[2],提出两种工作模式的概念:自主数据采集模式和非自主数据采集模式,设计并实现了基于MCF52223的多功能USB数据采集系统。

1 总体设计方案

总体设计方案构建中,系统需实现的功能模块包括:GPIO、QSPI、I2C、UART、PIT、Flash及USB模块,图1为系统结构框图。

图片

图1 系统结构框图

本文克服传统的编程模式,并借鉴USB OTG双重角色的思想,提出两种工作模式的概念,使得系统拥有两个完全独立的功能,自主数据采集模式和非自主数据采集模式。系统的执行流程如图2所示,自主数据采集对应图2中的模式选择1,用于二代身份证刷卡考勤,非自主数据采集对应模式选择2,用于读取和设置设备的参数。

为了增强系统的健壮性,使该系统在未插入U盘时仍可正常工作,所以预留出Flash的第110~117页(MCF52223共256KB,分为128页,每页2KB)[3]。系统及模块初始化完成后自动检测MCF52223的Flash的第110~117页是否有数据,如果有数据需进一步检查是否已经有U盘接入系统并将Flash中的数据存储到U盘中,同时擦除110~117页,然后进入用户选择的模式,1对应自主数据采集模式,2对应非自主数据采集模式。

图片

图2 系统执行流程

1.1 自主数据采集模式

自主数据采集是指该数据采集系统在无需PC机的干预[4]的情况下,采集二代身份证的ID号,并据此自动查询U盘中的数据库,实时显示刷卡人员信息,并将记录保存到U盘中。该模式下需多个芯片协同工作实现整体功能,RC531射频芯片读取身份证ID号,PCF8563时钟芯片保存系统时间。系统的实现主要包括模块初始化、数据采集及存储、数据库的设计。

1.1.1 模块初始化

芯片初始化后需初始化各个模块:QSPI、I2C、GPIO、USB、PIT(可编程定时器)及Flash,各个模块的功能如图1所示,其中USB模块需初始化为主机模式以识别U盘作为外挂式海量存储器。

有效的刷卡记录需包括刷卡时间和卡号,因此使用PCF8563时钟芯片保存系统时间,但由于PCF8563是用纽扣电池供电,为了延长电池寿命需要减少通信,采用MCF52223内部的定时器模块计时。只有在系统初始化及定时器每10min读取PCF8563用于同步MCF52223的时钟,保证系统时间准确性的同时延长了电池的寿命。

┑1期

钱仇圣等:基于MCF52223的多功能USB数据采集系统的设计

┆扑慊应用 ┑30卷

1.1.2 数据采集及存储

当系统各模块初始化完成后就可通过QSPI接口查询RC531进行数据采集。最初设计时MCF52223采集到二代身份证ID号(后立即通过UART发送给PC机ID号为8字节,但为了便于显示将字节的高4位和低4位显示为ASCII字符,因而需16字节,如0x54显示为54),发现有时会数据采集不稳定,同一张卡会显示出两个不同的ID号,但最多只错误一次,为了提高系统数据采集的稳定性,防止抖动造成采集的数据不正确,改为连续采集三次,必须三次取得的ID号相同才认为数据采集成功。实验证明,改进后的方法并没有显著降低系统的响应时间,并且系统的可靠性更高。

系统使用两种方式存储采集到二代身份证的ID号:1)无U盘插入时,首先将数据存储到芯片内部的Flash中,目前在MCF52223中预留110~117页作为记录的存储空间,由于MCF52223的Flash的特点,写入必须是4字节,因而为了提高Flash的效率及记录的正确性,每条记录的格式为:年月日时分秒(6字节)+16字节的身份证ID信息+1字节校验+1字节结束标志;2)有U盘插入时,按照记录格式直接追加存储到U盘中相应的文件。

1.1.3 数据库设计

由于在芯片集成的Flash中无法存储大量数据,因而必须将数据按照一定的结构和逻辑有组织的存放到U盘中,作为广义上的一个数据库。同时由于该系统对U盘的数据库只有查询操作,并且无需备份,因而使用文件系统作为数据库系统是可行的[5]。数据库按照文件形式组织,以TXT形式保存人员信息表,以BMP形式保存人员的照片。

刷卡成功后只能获得身份证的ID号,无法直接取得人员的详细信息,需要根据ID号查询U盘中的数据库,因而数据库建立的好坏将影响到查询的效率,系统的响应时间、稳定性及可维护性。

人员信息需包括身份证ID、工号、姓名、性别、职务和所在部门及图像信息等字段。为了便于查找将各个字段定义为定长字段,身份证ID为16Byte、工号6Byte、姓名8Byte、性别2Byte、职务4Byte和所在部门30Byte从而每条记录需要68Byte,如“20c6143154379d7eSN0010司马明华男科员医学部放射医学与公共卫生学”,如果在一个文件中保存就会造成数据大量冗余,因而需要按照数据库建表的思想来建立数据库文件,以达到第三范式的要求,从而消除数据冗余、删除异常、插入异常、更新异常[6]。重新建立下面几张数据表:

1)人员信息表(ID,教工号,姓名,性别,职务号,部门号);

2)职务表(职务号,职务名称);

3)部门表(部门号,部门名称)。

表格(有表名)

表1 职务表

职务号职务名称职务号职务名称

1科员3处级

2科级4校级

表格(有表名)

表2 部门表

部门号部门名称

001外国语学院

……

040医学部放射医学与公共卫生学

其中职务号1Byte,部门号3Byte,一条人员信息记录的长度减少为35Byte,前面的记录变成“20c6143154379d7eSN0010司马明华m1040”,极大提高了数据的密集度,增强了数据之间的关联性。为了提高查询的速度,增加索引文件,用于提供对数据项的快速访问[6],在这里用于对记录的快速定位。

1.1.4 系统优化

只有根据从二代身份证获得ID号显示出人员的相关信息对用户才有意义。经分析,发现系统响应时间主要耗费在信息的查询,字模的获取,LCD的刷新,为了提高系统的响应时间,对系统做了以下几点优化:

1)将索引.txt存放于数组Index[];

2)将职务表.txt、部门表.txt每项内容对应的字模分别存放于数组Position[]和Department[];

3)将性别的字模存放于数组Sex[];

4)将图片的大小统一为120×148像素,并且只刷新LCD的有效显示区域。

经优化后只需打开U盘中的文件三次,首先按折半查找查询RAM的数组Index,根据索引结果按照折半查找算法查找人员信息表以取得员工号、姓名、性别、职位号及部门号。根据员工号打开对应的图片,根据姓名查找对应的字模,而从RAM中取得性别、职位和部门的字模,提高了效率。

1.2 非自主数据采集模式

针对目前大部分设备将工作参数保存在Flash中,需要连接到PC机才能修改,提出了非自主数据采集模式,并制定出简易的通信协议。该模式指数据采集系统读取其他设备的工作参数并做修改,从而取代PC机的操作[5],流程如图3。

图片

图3 非自主数据采集工作流程

协议规定UART的波特率为19B200,接收到握手信号后才接收命令,目前设备支持三种命令:读取设备的版本,读取设备的Flash,读取设备的参数。下面以与电量计通信为例说明,数据包协议格式如下,其中长度指定了有效数据的长度(小于256)。

表格(无表名)

111n11

帧头命令字长度有效数据校验字帧尾

电量计以中断的方式接收串口数据,握手成功后开始接收并处理来自数据采集系统的命令,主要包括设定额定电压,充放电曲线参数等功能。电量计接收到来自数据采集系统的

数据包后,首先,通过数据帧的帧头、帧尾及校验字符判断数据帧是否有效,若是正确的数据则解包取得命令字符,否则丢弃该无效的数据包。接着,根据获得的命令字符,执行相应的功能函数,最后按照协议返回一字节的状态[8]。

2 系统试验评估

该系统用于学校的会议签到、电量计参数的读取和设置。收录的教职员工信息10B000条,因而人员信息表为10B000×35字节。分为4个职位:科员、科级、处级和校级。部门表有40条记录。图片按照65B535色565格式的BMP存储,大小为120×148像素,每个像素需两个字节,因而U盘中图片占用空间为10B000×120×148×2字节。 索引文件中有100条记录,因而每次刷卡平均查找次数为lb (100+1)-1+lb (100+1)-1 = 2 lb 101-2。

系统运行情况表明,整个系统设计合理,刷卡稳定可靠,信息的显示及数据的存储满足需求,而且在非自主数据采集模式下能方便地读取和设置电量计的参数,极大地提高了用户的工作效率。

3 结语

USB总线的特点使其非常适合于小型仪器与主机之间的通信接口,实现主机和便携式仪器之间的简单、快速和可靠的连接[6]。采用USB主机技术的系统不仅能有效解决芯片内部集成的Flash空间不足问题,还能通过从U盘取字模的方法解决不同字体在LCD上的显示,以及数据库更新等问题。多用户模式的切换增强了系统的功能,使该系统应用范围更广,并为同类产品的开发提供了一定的借鉴意义。

参考文献:[1] 朱晓锦. 一种嵌入式USB主机功能模块设计与实现[J].计算机工程,2007,11(21):240-242.

[2]USB IF. Universal serial bus special revision 2.0[R],2008.

[3] Freescale MCF52223 MCF52223RM [EB/OL].[2009-04-18]..

[4] 马伟. 嵌入式USB主机系统的研究与设计[J]. 计算机测量与控制, 2003, 11(5):1-8.

[5] 马亚全. 基于通用串行总线的主机与小型医学仪器互连的研究[J].航天医学与医学工程,2002,15(1):68-70.

[6] 杨智君. 基于USB总线的数据采集系统[J]. 计算机工程与应用, 2003,39(24):110-112.

[7] AXELSON J. USB 大全[M]. 陈逸, 译. 北京: 中国电力出版社,2000.

[8] 荐红梅.电动叉车蓄电池电量测量的设计[J]. 现代电子技术, 2008,31(16):28-32.

上一篇:基于粒子系统的化学实验现象动态模拟 下一篇:模糊核聚类支持向量机集成模型及应用