您的位置:控制工程论坛网论坛 » 教程与手册 » 汽车行驶记录仪中USB HOST技术介绍!!

dqfxm2003

dqfxm2003   |   当前状态:离线

总积分:3995  2024年可用积分:0

注册时间: 2005-10-21

最后登录时间: 2011-01-14

空间 发短消息加为好友

汽车行驶记录仪中USB HOST技术介绍!!

dqfxm2003  发表于 2006/1/23 9:52:19      2163 查看 2 回复  [上一主题]  [下一主题]

手机阅读


               

【摘要】  根据汽车行驶记录仪中大量数据交换的实际需求,本文介绍了基于单片机利用SL811HST在汽车行驶记录仪中实现USB HOST 功能,对SUB HOST中的关键技术USB设备枚举、Bulk_Only传输协议以及FAT16文件结构的实现做了较详细的说明。
关键词:  USB HOST  SL811HST  设备枚举 Bulk_Only  FAT16
     在开发汽车行驶记录仪过程中,以单片机和SL811HST为核心,通过实现USB设备枚举、Bulk_Only传输协议,FAT16文件结构等技术,把汽车行驶记录仪记录在大容量FLASH和铁电存储器中的车辆行驶各种状态信息读写到优盘上,以实现汽车行驶记录仪数据和PC主机快速交换,方便车辆信息管理。
1. USB 总线的简介
USB(Universal Serial Bus )是一种通用串行总线,是一种标准的连接接口。在与外面的USB 从结构和USB HOST连接时,不必重新配置系统和调节接口,USB HOST 自动识别这些接口设备,并配置适当的驱动程序,因此实现了即插即用与热插拔性,方便了用户使用。随着此项技术的发展、普及和成熟,USB总线所具有的特性使得其在数据采集和嵌入式用户中得到广泛的应用。现在的电子产品移动存储需求越来越大,而USB总线以其优异的性价比和灵活性常用来实现大量数据交换。
USB接口技术分为 USB SLAVE 和USB HOST。当前电子产品具有USB功能的大部是SLAVE技术,USB HOST技术一直是开发的难点。USB通信可以用图1来表示。在图1中左半部分为USB HOST端,由两部分组成,即USB软体、USB硬体。实际上有3个软件组成了USB HOST解决方案,即USB客户驱动程序、USB驱动程序以及USB主机控制器驱动程序。应用程序的事物处理是由USB客户驱动程序启动的,客户驱动程序把USB设备当作一个可以被访问的端点集合,它可以被控制并与它的功能单元进行通信。USB系统软件包括USB驱动程序以及USB主控制器驱动程序,USB驱动程序负责配置管理、用户管理、总线管理以及传输管理,USB主控制器驱动程序负责调度管理、队列管理、控制管理、以及数据的位编码、封包、循环校验、发送以及错误处理等。

 

 

 

 

                    图1 USB通信模型层次关系
2. USB HOST相关模块总体设计
USB HOS相关模块总体设计由单片机、SL811HST、FLASH、铁电存储体、实时时钟、电源管理及其他单片机接口电路组成。汽车行驶记录仪工作时,由单片机通过前端接口电路拾起汽车的各种信息,包括车速、发动机转速、各种车辆开关等信号。汽车行驶记录仪以实时时钟为基准,把车辆信息按类别分别存入铁电存储体和FLASH存储体。当需要从汽车行驶记录仪中获取汽车信息时,用户插入优盘,单片机自动识别优盘并加载驱动程序,当完成设备枚举和Bulk_Only传输协议后,单片机就可以把汽车行驶记录仪中的信息以文件的形式传输到优盘。USB的主机接口设计包括物理层实现,SL811HST底层驱动实现、设备枚举协议实现、Bulk_Only传输协议实现以及FAT16文件结构的实现。模块功能框图见图2。

 

 

 

 

              
                   图2 系统总体设计功能图
3. USB HOST相关模块硬件设计
   在汽车行驶记录仪USB HOST模块中,单片机接口芯片采用AT89C51RD2,USB HOST接口芯片采用SL811HST。SL811HST兼容标准的USB1.1协议,有中断和寄存器查询模式,提供并口总线数据协议,利用单片机的读写信号线,比较容易就能把单片机和SL811HST连接起来,通过SL811HST的A0信号线来实现单片机对SL811HST的数据和地址访问,同时由于SL811HST有地址自动增长模式,因此,软体在实现Bulk_Only数据传输时相对容易一些。SL811HST可以工作在HOST模式,以实现汽车行驶记录仪主机和优盘的数据交换;也可以工作在SLAVE模式和PC机实现数据交换。因为USB设备枚举协议、Bulk_Only传输协议、FAT16文件结构等软件的数据结构比较复杂,AT89C51RD2的RAM不能满足系统的要求,扩展了32K的RAM以提高系统的性能。另外,USB总线的电气特性要求在USB收发器之前必须串接22Ω~44Ω电阻,同时必须根据不同的USB设备传输速度(全速或慢速),配置好提升电阻和下拉电阻的位置。
4. USB主机端对设备的枚举
从USB设备插入接口开始到客户驱动程序能够使用该设备还有一些工作要做,这一段可以称作设备识别过程,又称枚举过程。枚举过程是任何USB设备使用前必经的过程,USB HOST端在使用前需要知道这是一个慢速设备还是一个全速设备,需要知道这个设备的一些特性和能力,以便载入相应的驱动程序。实现USB枚举过程如下:
(1)USB设备插入USB HOST接口端。USB HOST不断的每隔一定时间来查询接口端,检查D+和D-的电位变化,以了解设备的连接状态。USB设备是一个即插即用设备,系统在插入时,由于D+和D-两根信号线因为下拉的关系,几乎都示为接地,若有一个设备刚刚接上,由于提升电阻和下拉电阻形成了一个分压器,此时一条数据线的电压接近VCC,另一条信号线几乎接地,这样就可以确认有一个设备已经连上。当SL811HST的HUB端检测到一个设备已经连接上,它立即报告给SL811HST,SL811HST把相关信息送入相关寄存器以便主机查询同时产生中断。主机查询到相关寄存器或收到中断后可以通过数据交换来了解插入设备的信息。
(2)复位USB设备。主机在检测到一个设备后就发出设备端的复位命令。设备从总线上收到一个复位信号后,才能对总线的处理操作做出响应。设备收到复位信号后,就使用默认地址(00H)来对其进行寻址。
(3)地址分配。当主机接收到有设备对默认地址(00H)响应的时候,然后发送一个Set_Address(设置地址)请求分配一个单独的地址给USB设备。设备读取这个请求,返回确认信息并且保存新的地址。
(4)读取USB设备描述符。USB设备描述符是对USB设备属性的说明。标准USB设备有5种描述符,分别为设备描述符、配置描述符、接口描述符、端点描述符和字符串描述符。USB描述符是通过Get_Descriptor来读取。
(5)设备配置。主机依照读取的USB设备描述符来进行配置,如果设备所需的USB资源得到满足,就发送配置命令给USB设备,以该配置号配置设备。
(6) 挂起。为了节省电源,当总线保持空闲状态3ms以后,设备驱动程序就会进入挂起状态。在挂起状态时,设备的消耗电流很小,当被挂起时,USB设备保留了包括其地址和配置信息在内的所有内部状态。
完成以上步骤后,USB设备即可使用。在枚举过程中,设备不一定要求进入挂起状态。
5.Bulk_Only传输协议
当USB HOST配置完USB设备后,通过描述符提供的信息,识别出Bulk_Only的Mass Storage设备,然后进入Bulk_Only 传输方式,在此方式下,USB与设备之间的所有数据均通过Bulk_In 和Bulk_Out 来传输,不再通过控制端点传输任何数据。
在这种传输方式下,有三种数据类型在USB和设备之间传输,CBW、CSW和普通数据。CBW(Command Block Wrapper,即命令块分组)是从USB HOST发送到设备的命令,命令的格式遵从接口中的bInterfaceSubClass所指定的命令块,这里为SCSI传输命令集。USB设备需要将SCSI命令从CBW中提取出来,执行相应的命令,完成以后向HOST发出反映当前命令执行状态CSW(Command Status Wrapper) , HOST根据CSW来决定是否继续传送下一个CBW或数据。USB HOST要求USB设备执行的命令可能为发送数据,则此时需要将特定的数据传送出去,传送完毕后发出CSW,使USB HOST进行下一步操作。USB设备所执行的操作可用图3来表示
 

                      

 

 

 

 

 

 

图3 Bulk Only 设备执行操作
从图3中可以看到数据段被一分为二,一个是数据出,这表示主机发送数据给设备;另一个为数据入,表示主机从USB设备处得到数据,下面介绍一下该过程如何在基于SL811HST的嵌入式系统中实现。
主机发送CBW,这个CBW本身作为传输描述符的负载数据传输到设备。CBW的封包包括两部分,封包头和命令块。封包头表征了数据传输方向的逻辑单元和命令块的长度;命令块是真正要实现的命令。根据设备的不同,命令块使用的命令簇也不一样,一种为UFI指令集,另一种为SCSI指令集,这里为SCSI指令集。普通数据阶段,数据将占据整个传输描述的负载长度,需要送出的数据在发送前要装入缓冲区。读入时,数据在传输描述符执行完会自动放入负载数据部分。CSW阶段反映该命令的执行情况,包括CSW标志、还需传输的数据长度、正确的返回标志等。
6. FAT16文件结构及优盘读写
一个FLASH优盘FAT16文件系统由4个部分组成:保留区、FAT区、根目录区及文件和目录数据区。
保留区(Reserved Region)中的第一扇区必须是BPB(BIOS Parameter Block),此扇区有时也称作“引导扇区”、“保留扇区”或“零扇区”,因为它含有对文件系统进行识别的关键信息,因此十分重要。
FAT区即File Allocation Table, 即文件分配表。操作系统磁盘空间是按簇来分配的。因此,文件占用磁盘空间时,基本单位不是字节而是簇,即使某个文件只有一个字节,操作系统也会分配一个最小的单元即一个簇。为了将磁盘空间有序地分配给相应的文件,读取文件的时候也可以从相应的地址读出文件,把整个磁盘的空间分成32KB长的簇来管理,每个簇在FAT表中占有16位的位置,称为一个表项。同一文件的数据并不一定完整地存放在磁盘的一个连续的区域内,往往会分成若干段,象链子一样存放。为了实现文件的链式存储,优盘上必须准确地记录那些簇已经被文件占用,还必须为每个已经占用的簇指明存储体后继内容的下一个簇的簇号,对文件的最后一簇,则指明本簇无后继簇。FAT区的结构有一个表,请参考有关文献。
根目录区,紧接着第二个FAT表后面的一个扇区,就是根目录区,根目录区中存放目录项,每个目录为32字节,记录一个文件或目录信息。
文件和目录数据区。目录项所占的最后一个扇区之后,就是真正存放文件数据或目录的位置了。
读取文件的时候,步骤如下:读根目录    读FAT1      读数据区,首先必须找到文件名所在的位置,根目录下的文件和目录均在根目录区,每一个目录或文件项占用32个字节,每次读取一个扇区,比较数据,没有则继续读取下一扇区,直到找到该文件。在这32个字节中,第26~27字节表征了文件的开始簇号,28~31字节表征了文件的大小,根据开始的簇号,搜索FAT区,找到文件簇链,依次读取对应簇,即可完整得到文件的对应数据。
写文件与读文件有点不同,步骤如下:写FAT1     写FAT2       写根目录区         
写数据区。先读取FAT区,搜索可用的簇,标记为文件的开始簇号,继续搜索,找到可用的簇号,并在上一可用簇标示(0000)处写入该簇号,依次下行,直到写完整个文件。                
7. 小结
通过自行开发,在汽车行驶记录仪中实现了USB HOST功能:USB设备枚举、Bulk_Only传输协议、FAT16文件结构等。满足了汽车行驶记录仪与优盘大量数据快速交换。在产品的送检、认证和使用过程中,USB HOST技术性能和产品指标都达到了产品设计要求和技术要求,这为产品提供了很好的高端技术含量,同时方便了用户的大量数据快速采集,使汽车行驶记录仪具有更好的市场竞争力

1楼 0 0 回复
总共 , 当前 /