电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电源技术>用SL811HS实现对U盘的操作资料下载

用SL811HS实现对U盘的操作资料下载

2021-04-07 | pdf | 384.94KB | 次下载 | 2积分

资料介绍

随着USB规范的完善和成熟,USB外设的种类不断丰富,应用领域也不断扩大。在传统的应用中,主要是PC扮演着主机的角色。根据USB的规范,可以看到在USB的拓朴结构中居于核心地位的是主机,每一次的数据传输都必须由主机发起和控制。但是随着嵌入式产品应用领域的日益增长,USB外设的应用范围也随之扩大,为此在嵌入式系统中实现对USB外设控制也变得日益迫切。1 海量存储类USB设备分为五个大类,即显示器(monitors)、通信设备(communications devices)、音频设备(audio)、人机输入(human input)和海量存储(mass storage)。通常所用的U盘、移动硬盘均属于海量存储类。海量存储类的规范中包括四个独立的子规范,即CBI Transprot、Bulk-Only Transport、ATA Command Block、UFI Command Specification。前两个协议定义了数据/命令/状态在USB总线上的传输方法,Bulk-Only传输协议仅仅使用Bulk端点传送数据/命令/状态,CBI传输协议则使用Control/Bulk/Interrupt三种类型的端点进行数据/命令/状态的传送。后两个协议定义了存储介质的操作命令,ATA协议用于硬盘,UFI协议则针对USB移动存储。本设计中所使用的U盘遵循Bulk-Only传输协议和UFI命令规范。2 实现方法2.1 硬件设计本设计采用SL811HS芯片完成对U盘的操作。SL811HS是Cypress公司推出的具有主/从两种工作模式的USB控制器,遵循USB1.1规范;可自动检测总线速率,支持全速12Mbps和低速1.5Mbps设备;具有8位双向的数据总线,易与单片机连接;片内256字节的SRAM(其中16 字节用于工作寄存器),用于数据传输;可自动产生SOF和CRC5/16,简化软件工作量;片内具有根Hub;支持挂起/唤醒工作模式,减少功耗;支持自动加1功能,减少数据读写周期;3.3V工作电源接口可承受5V的工作电压,可与多种规格的单片机连接。单片机与SL811HS接口的原理如图1所示。2.2 软件设计通过USB主控芯片对U盘操作的主要工作是在软件方面,它需要对众多规范、协议透彻的理解。下面主要通过软件的工作流程来说明设计过程。2.2.1 SL811HS初始化SL811HS共有15个配置寄存器,其中0~4、8~C是USB-A、USB-B的工作配置寄存器,5、F是控制寄存器,6是中断使能寄存器,D为状态寄存器,E、F为SOF计数寄存器。各个寄存器的具体功能如表1所列。在SL811HS上电开始工作后,首先对USB总线复位(置寄存器5的位3为1,延时30ms后清零),然后使能设备检测中断(置寄存器6为0x61)。2.2.2 设备检测(1)软件协议在设备检测阶段,主要通过setup结构的数据包(8字节长)向USB设备的控制端点0(默认端点)发送命令。数据包结构如表2所列。(2)实现过程当U盘插入USB插座时,SL811HS产生中断,通过读取中断状态寄存器可判断中断类型。当中断类型表示为检测到设备插入时,就可对USB设备即U盘进行配置了。此时还需使能SL811HS的1ms SOF(配置SL811HS的寄存器E=0xE0、F=0xAE,然后置位寄存器5的位0和寄存器0的位5),以便进行数据帧的同步。在U盘未配置之前,其默认地址和默认控制端点均为0。利用setup数据包对U盘进行配置时,须将U盘的地址写入SL811HS的寄存器4,将数据包的类型和U盘的控制端点写入SL811HS的寄存器3。以下为对U盘配置过程的主要步骤。① 设备描述符(GetDeviceDescriptor)。请求设备描述符的setup数据包为通过读取设备描述符,可获得设备的子类(通用海量存储类)、端点0的最大包长(一般为8字节)。② 读取配置描述符(GetConfigDescriptor)。对于请求配置描述符,可以先进行首次请求,要求数据包长为9(一个配置描述符的长度)。数据包内容为接收到设备返回的数据,获得此描述符的总长,然后再发二次请求,获得全部描述符数据。数据包内容为此时返回的数据包括了设备配置、接口、端点的全部描述信息。此部分的内容包括Configuration Descriptor、Interface Descriptor和所有端点的Endpoint Descriptor。在配置描述符中,可获得设备的属性(总线供电)以及最大功耗;在接口描述符,可获得设备的接口数量(只有一个数据接口)、接口类型 (海量存储类)、接口子类代码(UFI)、接口通信协议(Bulk-Only);在端点描述符,可获得设备的In和Out端点号及此端点的最大数据包长。③ 设置设备地址(SetAddress)。设置设备地址的setup数据包为设备地址为02或03(01一般用来表示设备为Hub)。到此,U盘的配置过程完成。此后的主机与USB设备之间的通信必须使用设置的地址,默认地址0不再有效,传输端点则为读取的配置描述符中所定义的端点号。在配置过程中各类数据内容的正确性,可借助BusHound软件工具捕捉PC机与U盘之间的活动数据,然后将自己获得的数据包内容与之相比较。2.2.3 U盘文件系统识别(1)软件协议在与U盘之间进行大量数据传输时,需要利用描述符提供的In、Out端点进行数据传送,并遵循Bulk-Only传输协议。根据USB的协议规范,所有的传输都须由主机启动。即主机首先向设备的OUT端点发送一命令(CBW数据包),请求传输,格式如表3所列。在数据包中规定了下一步的数据传输方向。若为设备到主机,则当CBW发送成功后,从设备的In端点读取CBW中规定长度的数据;若为主机到设备,则当CBW发送成功后,向设备的Out端点发送CBW中规定长度的数据。当主机与设备之间的数据传送完毕后,主机还需从设备的In端点读取传送状态,主机根据接收的CSW数据包即可判断出通信是否正常。若返回的结果有错误,还须进行相应的出错处理。CSW数据包结构如表4所列。(2)实现过程CPU向U盘发送CBW数据包,其中的命令块为UFI规范所定义的Read(10)命令。读取0柱0道1扇区共512字节的MBR数据,前446字节为主引导记录,接着的64字节为DPT(Disk Partition Table盘分区表),最后的2字节“55 AA”为有效结束标志。其中的DPT部分包含4个分区的数据结构,每个结构占16字节,具体定义如下:typedef struct{uchar BootFlag; //活动标志,80h为活动分区,0为非活动//分区CHS StartCHS; //分区开始的柱面、磁头、扇区uchar SystemID; //分区类型CHS EndChs; //分区结束的柱面、磁头、扇区ulong RelativeSectors; //分区起始扇区数ulong TotalSectors; //分区总扇区数}PartitionTable;从第一个分区数据结构的分区起始扇区数(relative sectors)的位置读取512字节,为DBR(系统引导记录),包括一个引导程序和BPB(本分区的参数记录表)。BPB参数块记录本分区的起始扇区、结束扇区、文件存储格式、介质描述符、根目录项数、FAT个数、保留扇区数、分配单元的大小等重要参数。根据保留扇区的数目可知 FAT表的位置(RelativeSectors+保留扇区数)。FAT表是文件组织结构的主要组成部分,反映了磁盘上所有簇的使用情况。在给一个文件分配空间时,总先扫描FAT,找到第一个可用簇,将该空间分配给文件,并将该簇的簇号填到目录的相应段内;若文件大于一个簇,则在FAT表中此文件的首簇号位置填入下一个可用簇号,直到最后一个簇填入“FFFF”,即形成了簇号链。对于FAT12文件系统,簇号用12位表示;FAT16文件系统的簇号用16 位表示;FAT32文件系统的簇号用32位表示。根据FAT的个数以及每个FAT表占用的扇区数,即可推算出文件目录表(FDT)的位置(FAT表位置+FAT表个数*FAT表所占扇区数)。FDT是文件组织结构的又一重要组成部分。目录可看作是一种特殊的文件,数据结构为32字节,包括文件名、扩展名、文件属性、时间、日期、开始簇号、文件长度等。根据根目录中的目录项数即可计算出数据区的起始扇区位置。这一部分占用了磁盘上的大部分空间,用于存储各类文件的数据。对于FAT32文件系统来说,它的根目录位置不单独列出,而是等同于文件结构,保存在数据区中。这样就没有了目录项的限制,不够用的时候增加簇链,分配空簇即可。对于以上各类数据读取内容的正确判断,可将U盘插入PC机,借助WinHex工具,读取磁盘上相应位置的数据内容,与之相比较。FAT16文件格式的U盘空间分配如图2所示。2.2.4 文件操作因为U盘的容量不是特别大,所以基本上都使用FAT16文件系统。可以根据FAT16系统的磁盘特性进行各种操作。① 创建目录。在根目录区或指定的子目录区中填加新目录的数据结构。② 删除目录。在根目录区或指定的子目录区中找到所需删除的目录,并置相应标志。③ 写文件。当写一新文件时,需在FAT表中查找未使用的簇,并将该簇号写入文件对应目录数据结构中的起始簇号位置。当此文件长度大于一簇时,还需在FAT表中对应的起始簇号位置填入下一可用簇的簇号,直到文件的最后一簇(FAT表中的相应位置填FFFF)。若磁盘有备份FAT,还需在备份FAT表的相应位置填入正确的内容。④ 删文件。删除文件时,除了将该文件对应的目录数据结构置相应标志外,还要修改FAT表及备份FAT表。将此文件使用的簇号位置清0,表示此簇当前未被使用。2.2.5 Bulk传输流程使用U盘的Bulk端点进行数据传送,Bulk传输分为Bulk-In和Bulk-Out。其中Bulk-In指的是主机向外围设备请求数据,由外围设备向主机发送数据。Bulk-Out的传输方向与Bulk-In相反,由主机向外围设备发送数据。根据UFI规范的定义,每次读写操作都以逻辑块(扇区)为单位。一般U盘的一个扇区为512字节,而Bulk端点的最大包长为64字节,即一个扇区的读写操作需要8个循环才能完成。(1)Bulk-In流程Bulk-In流程如图3所示。在接收设备数据的循环中,因为一个扇区的操作需要8次才能完成,因此要注意每接收一个数据包,都要将SL811HS寄存器0中的数据位(位6)变换一次。data1和data0交替使用。(2)Bulk-Out流程与Bulk-In流程差不多,只是在CBW数据包中,注明了下一阶段的传输方向为主机到外围设备。在CBW发送ACK之后,向设备的Out端点发送 PID-OUT数据包,使得设备接收所要传送的数据。在数据传输完毕后,仍要向设备的In端点发送PID-IN数据包,读取设备的CSW数据包,判断传输结果,并进行相应处理。在发送数据的循环中,同样要注意data0和data1的交替使用问题。结 语目前开发的在嵌入式系统中利用USB主控芯片实现与U盘的操作技术,已应用在我们自主开发研制的消防产品中。实现了消防控制器与U盘之间的各类信息的传输,为数据分析提供了有利的手段。在越来越多的消费类市场,这一技术必将有更为广阔的应用前景。(mbbeetchina)
下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1TC358743XBG评估板参考手册
  2. 1.36 MB  |  330次下载  |  免费
  3. 2开关电源基础知识
  4. 5.73 MB  |  6次下载  |  免费
  5. 3100W短波放大电路图
  6. 0.05 MB  |  4次下载  |  3 积分
  7. 4嵌入式linux-聊天程序设计
  8. 0.60 MB  |  3次下载  |  免费
  9. 5基于FPGA的光纤通信系统的设计与实现
  10. 0.61 MB  |  2次下载  |  免费
  11. 651单片机窗帘控制器仿真程序
  12. 1.93 MB  |  2次下载  |  免费
  13. 751单片机大棚环境控制器仿真程序
  14. 1.10 MB  |  2次下载  |  免费
  15. 8基于51单片机的RGB调色灯程序仿真
  16. 0.86 MB  |  2次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33564次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6653次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537796次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420026次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191185次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费