当前位置:首页 > 智能硬件 > 智能硬件
[导读]阐述一个基于ARM7的U盘设计;详细描述基于LPC2132、USB接口芯片PDIUSBDl2和Flash ROM的硬件系统设计。软件设计主要包括D12驱动、Mass Storage类协议实现和Flash存储器的读写控制等。

摘要 阐述一个基于ARM7的U盘设计;详细描述基于LPC2132、USB接口芯片PDIUSBDl2和Flash ROM的硬件系统设计。软件设计主要包括D12驱动、Mass Storage类协议实现和Flash存储器的读写控制等。
关键词 LPC21 32 USB Mass Storage类协议 U盘


引 言
   
USB移动存储技术(U盘)把USB接口技术与Flash存储器技术结合在一起,构成了一种快速、大容量、方便的新型数据交换系统,主要构成有主控制器(MCU)、USB接口芯片和F1ash存储器。主控制器(MCU)是系统的核心,负责控制各种外围设备、实现各种算法、协调与主机通信;USB接口芯片负责USB通信;Flash(闪烁存储器)用来存储数据,它决定了U盘的容量。

1 硬件系统设计
    U盘设计结构框图如图1所示。使用Philips公司的ARM7芯片LPC2132,控制Philips的USBl.1接口芯片PDI-USBDl2,处理PMC公司的128 KB串行F1ash存储器作为数据存储设备实现U盘。

(1)ARM处理器
    LPC2132是基于一个支持实时仿真和跟踪的16/32位ARM7TDMI-S CPU,并带有64 KB嵌入的高速Flash存储器。LPC2132的实时仿真和跟踪功能方便了代码的调试,降低了开发成本。
(2) PDIUSB012
    PDIUSBDl2(简称为“D12”)是一款性价比很高的USB器件;通常用于微控制器系统中实现与微控制器进行通信的高速通用并行接口;支持本地的DMA传输。PDIUSBDl2所具有的低挂起功耗连同LazyClock输出可以满足使用ACPI、OnNOW和USB电源管理的要求。低功耗可以应用于使用USB总线供电的外设。
(3)Flash存储器
    存储器选用PMC公司的Pm25LV010。适合低功耗和低电压下工作的应用场合;具有完备的数据保护功能。通过设置芯片的状态寄存器,可以将存储空间的高1/4、高1/2或整片写保护。写使能和写禁止指令进一步保护数据。另外还提供WP引脚用于硬件数据保护,以防止对状态寄存器的意外修改。
    U盘电路原理如图2所示。

2 软件设计
   
软件设计主要包括D12驱动、Mass Storage类协议和Flash存储器的读/写控制。
2.1 D12驱动的实现
    在USB设备插入主机之前,主机对这个USB设备的情况一无所知,无法建立起通信;但USB协议规定了一些最基本的准则,如每个设备的端点0都是可用的,属于控制端点。有了这个基本的沟通途径,主机就开始通过端点0向设备提出一些问题,这些问题是有关设备基本情况的。这些基本情况可以反映usB设备所属的类别及子类,反映配置情况、接口情况和端点情况;一旦得知了这些信息,主机就大体了解了这个设备是个什么样的设备,按照USB协议中的相应规定,就逐步建立起了一条介于设备之间的高速数据通道,用于数据的传输。主机向设备提出的这些问题实际上就是USB协议中规定的各种标准请求,设备必须对这些问题进行回答;而回答的方式就是向主机传送相应的描述符,即设备描述符、配置描述符、接口描述符、端点描述符。
    为了使软件可移植性强、易维护,采用分层的方法编写PDIUSBDl2的驱动程序。USB驱动程序分层结构如表1所列。

    ①硬件提取层(D12HAL.c)包含最底层的函数。
    ②D12命令接口(D12CI.c)实现PDIUSBDl2的命令接口以简化器件的编程。该层的甬数及其功能如下:
    ◇读取芯片ID号,uintl6 D12_ReadChipID(void);
    ◇没置地址/使能,void D12_SetAddressEnable(UINT8bAddress,UINT8 bEnable);
    ◇设置端点使能,void D12_SetEndpointEnable(UINT8 bEnablc);
    ◇设置模式,void D12_SetMode(uint8 bConfig,uint8bClkDiv)。
    ③协议层(Chap_9.c)处理标准的USB设备请求,以及特殊的厂商请求,如DMA等。USB主机通过标准USB设备请求,可设定和获取USB设备的有关信息,完成USB设备的枚举。
    所有的请求都是通过端点0接收和发送SETUP包来完成的。接收主机SETUP包的函数为ep0_rxdone(),所有SETUP包都由函数control_handler()来处理,发送SETUP包的函数为ep0_txdone()。SETUP包的接收和发送通过控制传输结构仝局变量CONTROL_XFER ControlData来控制,它实现了以上3个函数之间的通信。


    上述几个函数及ControlData变量之问的关系如图3所示。

    ④应用层(D12Driver.c)实现PDIUSBD12的所有功能。USB设备控制驱动、USB接口控制驱动和协议层都在应用层的控制之中。应用层要实现的仟务包括:
    ◆初始化PDIUSBDl2。包括初始化PDIUSBD12的硬件连接、复位PDIUSBDl2、配置PDIUSBD12的中断服务程序地址、初始化应用层相关的全局变量。
    ◆编写PDIUSBD12中断服务程序。PDIUSBD12几乎所有功能都是通过PDIUSBDl2中断服务程序来完成的,因此中断服务程序是应用层的核心部分,也是本驱动程序的核心部分。它要完成以下任务:
    ◇控制端点数据接收与发送中断服务程序,负责处理控制传输的有关工作;
    ◇端点1和端点2数据接收与发送中断服务程序;
    ◇USB总线挂起、复位、DMA结束中断服务程序。
    ◆用户读写端点1和端点2的API函数。
    ◆传输控制处理任务。该任务用于处理枚举、标准任务请求、厂商请求等传输控制。
2.2 Mass Storage类协议的实现
    完整的Mass Storage类协议需要实现如下儿部分:在枚举时,提供Mass Storage类协议描述符;实现BulkOnly批量传输协议;实现SCSI命令集。
2.2.1 Mass Storage类协议描述符

    USB采用设备类的方式对设备进行管理。要让主机识别设备,设备就必须提供正确的描述符:
    ◇设备描述符;
    ◇配置描述符;
    ◇接口描述符;
    ◇端点描述符。
2.2.2 Bulk-Only批量传输协议实现
    Bulk-Only协议包括两部分:类特定请求命令和Bulk-Only传输。
(1)类特定请求命令
    ①批量传输的大容量存储器复位。要发送批量传输的大容量存储器复位请求,主机将在默认管道发送一个设备请求:
    ◇bmRequestType——类、接口、主机到设备;
    ◇bRequest字段设置为255(FFh);
    ◇wValue字段设置为0;
    ◇wIndex字段设置为接口编号;
    ◇wLength字段设置为O。
    批量传输的大容量存储器复位请求如下:

   
    ②获取最大逻辑单元号(专用类清求)。Get MaxLUN设备请求用于确定设备支持的逻辑单元编号。设备的逻辑单元编号可以从LUN为O到LUN的最大值15(Fh)。
    要发送Get Max LUN设备请求,主机应在以下默认管道发送一个设备请求:
    ◇bmRequestType——类、接口、设备到主机;
    ◇bRequest范围设置为254(FEh);
    ◇wValue字段设置为0;
    ◇wIndex字段设置为接口编号;
    ◇wLength字段设置为1。
   获得最大逻辑单元字如下:

   
    设备应返回1字节包含设备支持的最大逻辑单元数。例如,如果设备支持4个LUN,则LUN的编号应从0~3,则返回值为3。如果设备没有相关的LUN,则返回值为0。主机不应向一个不存在的LUN发送命令块包(CBW)。
    不支持多LUN的设备会返回STALL。
(2)Bulk—Only传输
    Bulk—Only传输协议没有使用中断和控制端点,仅使用Bulk批量端点来进行命令块、数据和命令块状态的传输。控制端点(默认)管道仅用来请求批量端点上的STALL停止的状态和执行类特定请求命令。
    Bulk—Only传输的流程如图4所示。

2.2.3 SCSI命令集实现
    SCSI命令集是SCSI设备通用命令集。SCSI有3种字长的命令:6字节、10字节和12字节。Microsoft Win—dows环境下支持12字节长的命令。图5给出了通用的UFI命令块的格式。请注意,这些字节就是CBW封包中CBWCB字段的内容。

    对不同的命令只需根据SCSI命令集白皮书作出适当的回应。Pm25LV010的最小擦除单位为扇区(4 KB),故在程序中定义一个4 KB的缓冲区Cache_STRUC Flash-Cache,把每次收到的数据放入缓冲区中,到缓冲区满数据接收完毕时再将其写入Flash存储器中,流程如图6所示。

2.3 Flash存储器的读写控制
    Flash存储器读写程序由SPI控制和Pm25LV010控制两部分组成。
    Pm25LV010 Flash存储器采用的是SPI串行接口,其SPI有两种工作模式——模式O和模式3。SPI.c完成SPI底层操作,给Pm25LV010控制程序提供一个读写1字节数据函数。该函数使用SPI模式0。
    Pm25LV010控制程序完成Pm25LV010器件的所有操作,其向高层提供的函数及功能如表2所列。

    Pm25LV010的最小擦除单位是扇区(每扇区4 KB),在改写扇区内任意一字节数据时都需要将该扇区擦除。针对这种情况,在程序中定义了一个4 KB大小的缓冲区,当上层调用函数WriteToFlash()向Flash写数据时,并不直接写入Flash,而是先写到数据缓冲区,其流程如图7所示。

3 结论
    基于LPC2132微控制器的硬件平台上实现了USB驱动、Bulk-Only传输协议、SCSI命令集,实现了完整的U盘功能。

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

大家好,我是鲏。认识我的朋友都知道,我是一个实践派,相比研究枯燥的理论知识,我更喜欢做自己想做的项目,用技术来实现自己的想法的感觉真的很棒。所以从大学期间一直到现在,除了工作中的项目外,我依然保持着自己做项目的习惯,有坚...

关键字: 系统设计 技术选型 需求分析

北京2022年9月2日 /美通社/ -- 把学习手牌放在触控屏幕上,长征5号B运载火箭整流罩、助推器等部件的基本介绍、参数等便会一一呈现。完成学习环节,就可以在系统中动手组装、发射火箭,并将天和核心舱送到预定轨道……科技...

关键字: 智慧教育 大屏 APP 软硬件

(全球TMT2022年8月30日讯)近日,在2022英特尔中国数据中心合作伙伴技术峰会上,英特尔与浪潮信息等产业生态伙伴联合发布了《绿色数据中心创新实践 -- 冷板液冷系统设计参考》白皮书,分享冷板液冷技术关键部件的最...

关键字: 系统设计 英特尔 数据中心 生态系统

北京2022年8月30日 /美通社/ -- 近日,在2022英特尔中国数据中心合作伙伴技术峰会上,英特尔与浪潮信息等产业生态伙伴联合发布了《绿色数据中心创新实践 -- 冷板液冷系统设计参考》白皮书,分享冷板液冷技术关键部...

关键字: 系统设计 英特尔 数据中心 电量

杭州2022年8月25日 /美通社/ -- 近日,浙江棱镜全息科技有限公司(以下简称"棱镜全息")宣布完成近亿元B轮融资,由上市企业当虹科技(688039.SH)独家战略投资,该投资信息也出...

关键字: 数字化 全栈 软硬件 IP

摘要:近年来,受人类活动的影响,各大水域的水质污染问题越来越严重,大部分水资源受到严重污染,水质处理问题亟需解决。分析水体污染情况对改进水质有着重要意义,目前水质监测主要采用人工或无人船的方式。人工监测方式工作量大,影响...

关键字: 水质监测 无人机 系统设计

摘要:根据饶平县高堂水闸重建工程建设实际需求,对高堂水闸运行管理进行实时在线式监控与监测,通过闸门控制、视频监控、水情测报、安全监测和网络通信等系统的设计,为高堂水闸的水工建筑物安全、防洪调度和自动化管理提供技术支持,以...

关键字: 管理信息系统 水利工程 系统设计

湖州2022年7月26日 /美通社/ -- 近日,浙江省科技创新大会在浙江省人民大会堂隆重举行。大会正式颁布2021年度浙江省科学技术进步奖,隆重表彰为浙江科技创新事业和经济社会发展做出突出贡献的科技工作者及团队。...

关键字: 电梯 检测技术 系统设计 零部件

摘要:简要介绍了柴油发电机组和重油发电机组的构成和主要特点,以某发电厂重柴油发电机组系统设计为例,重点分析了重油发电机组燃油系统、润滑油系统、循环冷却水系统、压缩空气系统的设计要点,以提高柴油、重油发电机组的运行效率和运...

关键字: 重油发电机组 特性 系统设计

摘要:针对一种小型消费级水下机器人,分析了其系统总体设计及各关键子系统(推进系统、通信系统、控制系统及其他系统等)设计的要点和方法,举例介绍了一种五推进器小型消费级水下机器人。经验证,该设计方法可以用于同类型水下机器人的...

关键字: 推进器 系统设计 五推进器

智能硬件

22018 篇文章

关注

发布文章

编辑精选

技术子站

关闭