基于单片机的大容量数据存储技术的应用研究

发布者:upsilon30最新更新时间:2012-01-31 来源: 微计算机关键字:USB  数据存储  MSP430  单片机 手机看文章 扫描二维码
随时随地手机看文章

0 引言

在现场测控系统中,RTU(远程测控终端)存储容量、存储数据的转移问题始终是RTU的重要环节。RTU的存储容量一般为几十K~几百K字节,数据转移通常采用不掉电静态RAM、EEPROM存储模块,或采用便携式计算机通过串行口读取RTU数据。无论采用哪种方法都存在一定的局限性。首先存储容量小,对于大量的数据存储显得比较紧张。对于数据转移,如果采用存储模块,虽然携带方便但不是通用设备,其成本较高,同时不能与计算机兼容,要将存储模块的数据录入计算机还需要专用的读取设备;如果采用便携式计算机读取RTU数据,虽然读取方便,但在野外便携式计算机也是一个不小的包袱。

随着USB(Universal Serial Bus)技术的发展,计算机的移动存储介质普遍采用U盘或移动硬盘。U盘的存储容量以MB为单位,移动硬盘的存储容量以GB为单位,它们相对于RTU原先的存储模块来说都是海量存储,所有数据存也无需进行压缩处理,可以在文件级与计算机兼容。即便是对于那些小数据量存储的RTU,虽然只依靠单片机内部的 FLASH就能满足存储要求,然而采用USB接口就能方便地用一个U盘分别读出多个RTU的数据。

如今,USB技术已经越来越普及和成熟,低成本、高稳定性、较高的数据传输速率和即插即用的方便性,使其备受硬件厂商的青睐。随着数据采集和嵌入式用户对移动存储的需求越来越大,具有USB接口的存储设备以其优异的性价比和灵活性常用来进行数据的存储和交换,所以在嵌入式系统中实现对优盘或移动硬盘的直接读写是非常有价值的。

1  USB设备开发的一般过程

1.1 USB接口芯片的选择

在进行一个USB设备开发之前,首先要根据具体使用要求选择合适的USB接口芯片,它是总线在主机方面的接口,用于支持USB设备通过USB连到主机上。

目前,市场上供应的USB控制器主要有两种:带USB接口的单片机和纯粹的USB接口芯片。前者的好处在于开发者对系统结构和指令集很熟悉,开发工具简单,但对于简单或低成本系统,价格高将会是最大的障碍。而纯粹的USB接口芯片仅处理USB通信,必须有一个外部微处理器进行协议处理和数据交换。这类芯片的特点是价格便宜、接口方便、可靠性高,尤其适合于产品的改型设计(硬件上仅需对并行总线和中断进行改动,软件则需增加微处理器的USB中断处理和数据交换程序、PC机的USB接口通信程序,无需对原有产品系统结构作很大的改动)41]。

1.2 硬件电路设计

在选定USB控制芯片后,如果是带USB接口的单片机,那就是一般单片机应用系统的开发;反之,就是如何把USB接口芯片与单片机应用系统融合的问题,一般的USB接口芯片都支持多种并行总线结构,可以方便地与多种单片机接口。

1.3 软件设计

设计完USB主控器与系统中CPU和存储器的接口电路后,就要开发主机系统上的主要外设驱动程序,USB的核心驱动以及USB主控制器驱动程序了,由主机系统控制USB数据的传送动作,响应来自外设的USB标准请求,完成各种数据的交换工作和事件处理。

软件设计中要注意的是先要考虑USB总线延时问题。理论上USB总线工作在全速时的最小响应周期为1毫秒,但是实际上的响应周期可能会到几十毫秒。其原因是多方面的,比如驱动程序、多重缓冲区等。这是在实时控制项目设计时首先要考虑的因素之一。

1.4 调试

因为每一次USB的传输过程,都有时效要求,等待时间过长,通信过程也就中止了,因此不适合用硬件仿真器来设断点调试。可采用串口辅助调试过程,即在固件代码中加入类似于Printf的语句,向串口输出一些信息。借此,可以知道程序运行到哪,以及运行到某处时相应的变量或寄存器值。

调试工作基本分三步进行:首先对单片机部分借助PC调试软件(芯片生产商提供或从网上下载Bus Hound,WINRT-USB 等调试软件)将设备端的USB协议(主要有描述符请求、端口配置、地址设置以及基本数据交换)调通。然后,用调试好的USB设备接口来开发、调试PC 软件。最后,加上USB设备端的其它用户程序,对整个完整的系统进行调试。

2 应用实例

下面从硬软件两方面具体介绍本案例,重点分析了初始化问题。本例研究开发了一种基于单片机的USB总线的HOST接口,使得可以接入标准的USB DEVICE,针对大容量数据固态存储的技术需要,在单片机上研究实现FAT32(兼容FAT16)的文件系统,从而使得USB的Mass Storage类设备可以自由接入,现场采集的数据可以以文件的形式存储记录。这样,就大大拓宽了传统的数据测控终端在长时间大容量的数据存储技术上的限制。

本例采用MSP430F149单片机作为核心处理部件,Philps公司的ISP1161A1为USB主控芯片,由MSP430F149控制 ISP1161A1,将CPU发来的指令变为相应的USB数据流,传送给指定的USB设备进行相应的操作。图1为具有USB主机功能的数据采集系统原理框图。数据采集的固态存储设备采用现在应用非常普遍的U盘或移动硬盘,这些设备可移动性强,均采用标准的USB总线接口,通用性非常好。                                       

 

图1具有USB主机功能的数据采集系统原理框图

在本例中,软件系统的设计主要涉及五个部分,分别为软件主程序、数据采集部分、数据处理部分、数据的现场大容量存储部分、数据的GSM通信部分。整个系统是在IAR Embedded Workbench的软件环境以及ScomAssistant调试助手下实现的,程序的实现采用C语言。主程序的代码为:

void main(void)

{

    SYSInit();

    TimeTaskInit();

    USBInit();

    while(1){

        TimerTaskManage();

        USBTaskManage();

    }

}

SYSInit()实现系统初始化工作,主要对单片机基础参数的设置和定义各个I/O口的工作方式;TimeTaskInit()中先进行单片机定时中断的配置,再将定时任务的所有标志清零初始化,为定时中断处理做准备。USBInit()是对USB事务进行硬软件初始化,先检测和配置USB主控芯片ISP1161A1,再初始化USB软件环境。

早期的U盘对初始化要求不高,有的甚至不需要驱动就可直接对扇区进行读写,所以现有大部分USB主机系统一般都能实现对这些U盘的读写。但随着产品不断更新,初始化信息不能完全获取使得一些不同的USB装置只能针对不同U盘。本实验证明,初始化过程完成后再解决了时序问题,就可以解决大部分U盘的读写。

3.初始化分析

正如前面所述,目前社会上很多人只能完成针对某些特定U盘的读写,本实验中的重点就是先完成U盘的初始化,让单片机先能认识大多数U盘,然后对它们进行批处理方式的读写,再从U盘或移动硬盘加载文件系统,最后完成对U盘或移动硬盘在文件级别上的读写。

当主机检测到一个设备已经连接时,就会自动识别所连接的设备,这个过程称为设备枚举(Device Enumeration).设备枚举使得主机的设备驱动程序能够与USB设备之间进行数据交换.在这个过程中,USB设备需要响应主机的标准设备请求并把描述符传送给主机,这些描述符包括设备描述符,配置描述符,接口描述符和端点描述符等42]。在没有对U盘完成初始化之前,单片机只能看到U盘的端点0,其他端点对于单片机来说是透明的。因此,我们只能从端点0即控制通道中对U盘进行配置,读进U盘的必要的配置信息后再对U盘的各端点进行配置。一般的传输数据大小不为0的控制传输的过程可分为3个阶段[3]。

第一阶段,是控制传输的建立阶段。

在这阶段里,我们首先要建一个用于建立控制传输事务的PTD数据,然后往U盘发送。

这里有一个需要注意的地方,在每次用于发送的函数执行以后,要加上一定的延时,等待U盘对发过来的指令进行处理。我们要读取描述表,就要向U盘发送 USB设备的标准设备请求命令。比如获取U盘描述表的USB标准设备请求命令为“0680 0100 0000 0012”。把上述命令写入PTD数据的负载区,然后发送,延时等待。

第二阶段,是数据阶段。

标准设备请求命令发送后,U盘就会把设备描述表发过来,这时我们就准备接收了。

在这里有一个问题要解决,就是最大包长度的问题。每个U盘在0通道里都规定了一个最大包的长度,可以是8,16,32或64字节。举个例子:这次要传输的描述表的长度为18字节。假设U盘的最大包长度为8字节,那就分三次接收,8+8+2字节。若最大包长度为16字节,就分两次接收,16+2字节。如果最大包长度为32字节或者64字节,就可以一次完成。为了得到这个U盘的最大包长度,可以进行试探,然后用一个公共变量把最大包长度记录下来。判断原理如下:先建立一个大小为8字节的接收区进行接收,然后监视PTD头的COMPLETE CODE字段(参考1161芯片中PTD数据的建立过程),如果该字段出现1000(二进制)的错误,就证明最大包长比8大,然后再建立16字节的接收区接收,如果还出现1000的错误的话,就再用稍大的包进行尝试,直到COMPLETE CODE字段出现0000为止。这样,就得出了该U盘0通道的最大包长度。下图2总结了读入描述表的过程。     


 

第三阶段,是状态阶段。

在状态阶段里,单片机要向U盘发送一个空数据负载的PTD数据,以向U盘汇报此次控制传输已经完成。

配置表的读取过程和描述表过程差不多,这里就不再加以叙述了。在完成描述表和配置表的读取以后,就可以往U盘发送标准设备请求命令SET CONFIG对U盘进行配置了,至此,枚举过程结束。到此为止,本例单片机对U盘的初始化过程也已基本完成。

实验证明,此方案确实解决了大部分U盘的读写,但由于USB单片机系统对时序要求很严,测试过程也有一定困难,目前还不能解决所有U盘及移动硬盘的读写,为解决这一问题,我们又采用了南京恒沁电子公司的CH375芯片作为USB主控芯片,该芯片集成了处理Mass Storage存储的专用通信协议的固件,单片机可以直接以扇区为基本单位读写存储设备。初步实验证明,它能解决目前市场上几乎所有的U盘及移动硬盘的读写。

CH375的优点是处理Mass Storage存储设备比较方便,缺点是只有一个USB接口,如果视频采集和数据存储同时处理就需要2个CH375芯片;只支持USB1.1协议,内部缓冲区只有64字节,数据吞吐量比较小,对于高速的视频采集难以满足要求。ISP1161A1的优点是有2个USB HOST接口和1个USB DEVICE接口,支持USB2.0协议,内部缓冲区为4K字节,数据吞吐量大;缺点是没有Mass Storage的专用通信协议的固件,应用开发比较费事。

3.结束语

文中论述的基于单片机的大容量数据存储方案现已完成了模块调试。实际测试中,将终端的模拟采集数据送入U盘,以ASCII文件方式存储,成功存入自定的文件中,可在PC 机中打开, 也可以直接用上层测控软件进行进一步的处理。

本文的研究是在水利自动化的背景下进行的,但在结构上这种终端明显具有广泛的适应性。除了应用于水利自动化信息测报外,还可以用于电力系统的现场测报和数据记录、交通智能化管理以及环保、气象、地质、民用领域如数码相机等。因此,文中研究的设计模式和实现技术的应用前景将是非常广阔的。

参考文献:

[1] Don Anderson. Universal Serial Bus System Architecture [M].Addison Wesley Longman, Inc,2000

[2] Don Anderson. USB系统体系[M].北京:中国电力出版社,2001

[3] Philips Semiconductors:《ISP1161A1 USB single-chip host and device controller, Programming Guide》,2004

关键字:USB  数据存储  MSP430  单片机 引用地址:基于单片机的大容量数据存储技术的应用研究

上一篇:基于PDIUSBD12的USB数据采集系统的设计
下一篇:大容量FLASH在单片机台标系统中的应用

推荐阅读最新更新时间:2024-03-16 12:51

基于飞思卡尔MCU的气囊(Airbag)设计方案
方案描述: 控制单元是安全 气囊 系统的核心组件,由16或32位 MCU 与一组局部加速度传感器组成。根据系统复杂程度可增加卫星传感器,通过外围设备接口5 (PSI5)和分布系统接口 (DSI) 等标准传感器总线提供辅助碰撞信息。经过处理的传感器数据可利用专用多通道点火驱动电路引爆前部、侧部和帘式 气囊 。 作为附加安全要素,高能效开关式电源组件可在发生事故电源连接中断的情况下,使系统保持工作几百毫秒。 飞思卡尔 气囊 系统产品符合汽车安全控制(AEC) AEC-Q100技术规范及其他关键汽车标准,提供世界一流的高质量汽车安全解决方案。 方案关键器件表: 方案设计图:
[汽车电子]
基于飞思卡尔<font color='red'>MCU</font>的气囊(Airbag)设计方案
ZiLOG的8位MCU用于PC电视调谐卡,增强遥控功能
ZiLOG公司在推进8位集成微控制器和通用远程处理方案技术革新的同时,又宣布了与Hauppauge Computer Work公司的战略伙伴关系。Hauppauge公司是个人电脑数字视频、电视和信息广播接收机类产品的开发和生产商。在合作计划中ZiLOG的Z8 Encore! F08闪存微控制器系列将会使Hauppauge公司的WinTV-PVR-150型板卡先进的遥控功能得到进一步的增强。 WinTV-PVR是一款便于安装的个人电脑电视调谐卡,它使消费者可以通过他们的电脑观看、暂停或录制有线电视和卫星电视。消费者无需购买新的多媒体娱乐电脑就可以廉价快捷地在已有的电脑上收看电视或享受其它娱乐功能。 除了为Hauppauge公司提
[嵌入式]
莱迪思半导体和MediaTek携手推出USB Type-C 4K视频解决方案
面向不断增长的智能手机和配件市场推出的参考设计 莱迪思半导体和MediaTek联合推出参考设计,实现能效最佳的USB Type-C接口4K视频传输解决方案 实现智能手机输出超高清视频,消费者可通过最新的4K电视机尽享媲美游戏主机的娱乐和家庭影院提供的影音体验 美国俄勒冈州波特兰市 2016年3月14日 莱迪思半导体公司(NASDAQ: LSCC),客制化智能互连解决方案市场的领先供应商,近日携手MediaTek宣布联合推出能效最佳的USB Type-C 4K超高清视频传输参考设计。莱迪思的USB Type-C端口控制器和MHL 收发器可便捷地与MediaTek的Helio X20处理器配合使用,Helio
[手机便携]
莱迪思半导体和MediaTek携手推出<font color='red'>USB</font> Type-C 4K视频解决方案
网络启动再进化,亚信USB以太网iPXE方案全新登场
亚信电子USB 以太网 iPXE 解决方案,将先进的iPXE网络启动技术集成到亚信最新USB以太网芯片产品应用中,提供用户更强大、更灵活、与高效率的iPXE网络启动再进化新体验。 亚信电子(ASIX Electronics Corporation) 今天宣布推出最新的「USB以太网iPXE解决方案」,透过将先进的iPXE网络启动技术集成到亚信USB以太网芯片产品应用中,为用户提供更强大、更灵活、与高效率的iPXE网络启动再进化新体验。 此方案可支持亚信电子最新的USB以太网芯片,包括AX88279、AX88179B/AX88179A/AX88179,以及AX88772E/AX88772D等。 (图一)亚信电子U
[网络通信]
网络启动再进化,亚信<font color='red'>USB</font>以太网iPXE方案全新登场
51单片机红外遥控旋转LED数字电子钟二
将一张旧唱片按电机座的位置开孔,而定位用的挡光板应根据电路板上感光组件的位置确定。      二。电路板的制作   本制作品用51单片机控制,具体电原理图如下:         用Protel 99设计制作了电路板。            最后得到完成的作品。   遥控器用的是松下车载机的,只用了其中的六个键。      三。软件编程   因学的是C51(不懂汇编)这里只提供C语言源程序。并限制为无遥控功能。也可提供带遥控功能的hex文件。源程序.txt   四。运行效果   从开机,调整到最后完成。      开机时      调时状态      正常运行状态
[模拟电子]
51<font color='red'>单片机</font>红外遥控旋转LED数字电子钟二
瑞萨电子RA产品家族MCU获CAVP综合加密算法套件认证
RA产品家族32位Arm® Cortex®-M微控制器通过瑞萨的安全加密引擎(SCE) 和Arm TrustZone打造卓越物联网安全性 2022 年 5 月 19 日,中国北京讯 - 全球半导体解决方案供应商瑞萨电子今日宣布,其32位Arm® Cortex®-M微控制器(MCU)RA产品家族的安全引擎已获得美国国家标准与技术研究院(NIST)加密算法验证计划(CAVP)认证。RA产品家族灵活配置软件包(FSP)v3.6.0及更高版本中将包含认证过的SCE9保护模式驱动程序。 瑞萨RA6M4、RA6M5、RA4M2和RA4M3 MCU产品群均获得了NIST CAVP综合加密算法认证,包括多种模式的高级加密标准(AE
[嵌入式]
瑞萨电子RA产品家族<font color='red'>MCU</font>获CAVP综合加密算法套件认证
基于51单片机用DS1302和LCD1602设计可调式电子日历与时钟
具体功能实现: 开机后可以在LCD1602上显示当前的年、月、日、星期、时、分、秒等信息,按下K1键,可以显示实时时钟;按下K2键,选择对年、月、日、时、分、秒的设置;按下K3键,进行加设置;按下K4键,进行减设置; 使用器件: 仿真原理图: 仿真 知识介绍 : DS1302实时时钟芯片 DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时,并且具有闰年补偿等多种功能。工作电压为2.0V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的R
[单片机]
mouse.h头文件下载( 51单片机ps2 鼠标 驱动)
/****************************************************** 演示鼠标引脚定义 CLK : 白色 SDA : 绿色 GND: 橙色 VCC: 蓝色 *******************************************************/ #include delay52.h #ifndef MOUSE_H #define MOUSE_H sbit mouse_SDA=P3^4;//数据线P3_5 sbit mouse_CLK=P3^3;//时钟线P3_3 unsigned char bdata mouse_
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved