版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于CBI传输结构的USB硬盘接口应用设计 摘要:主要介绍采用CBI传输结构进行USB大容量存储设备设计时应该注意的问题;详细说明对应CBI结构在设计时应进行哪些设置和如何设置;给出用台湾创品公司的T33510设计USB键盘的实例。关键词:USB CBI 大容量存储设备 引言 USB是英文Universal Serial Bus的缩写,中文含义是“通用串行总线”。它不是一种新的总线标准,而是应用在PC领域的新型接口技术,具有使用方便、速度较快、连接灵活、独立供电等特点。1998年后,随着微软在Windows 98
2、中内置了对USB接口的支持模块,加上USB设备的日渐增多,USB逐步走进了实用阶段,USB协议已经发展到2.0版本,最高速度可达480Mb/s。目前,广泛使用的1.1版本也可达12Mb/s。 USB协议中,对USB设备按类型进行分类。同类型的设备拥有一些共同的行为特征和工作协议,这样可以屏蔽不同硬件之间的差别,以便于主机(PC)对设备进行方便、统一的管理。对USB大容量存储设备(mass storage device)的设计,国际有关机构定义了两种基本传输方式:CBI和BULK ONLY,并对各自开发过程中应注意的问题进行了规定,开发者必须遵循其中至少一种。
3、一、CBI结构要点 在CBI(Control/Bulk/Interrupt)结构中,要用到USB协议中说到的控制(Control)、批量输入/输出(Bulk in/out)、中断(Interrupt)四种端点(Endpoint)。控制端点用来在主机和设备间传送USB标准命令和对硬盘的控制命令集;批量输入/输出端点用来传输数据;可选用的中断端点用来通知命令的完成。 1.数据传输的说明 主机和CBI存储设备间的通讯通过命令/数据/状态的传输来实现,就是说,协议从主机向设备传送命令,
4、在主机和设备间相互传送数据,从设备向主机传送命令执行状态,并允许主机对设备进行重启。USB大容量存储设备应可接收2类重启命令和3类命令块(command block)。2类重启命令是:USB端口重启和命令重启;3类命令块是:非数据(nondata)、数据输入(data-in)和数据输出(data- out)。本文只对各类命令中和CBI存储设备设计相关的加以说明,其余属于普通USB总线传输的内容可参考USB协议。(1)USB端口重启 通常用在设备死机等情况。通过主机USB端口强制设备重启,详细情况可参见USB协议。(2)命令重启
5、0; 在使用端口重启之前,主机也可以通过发送重启命令来使设备重启。在接收到该命令后,设备将依次执行如下动作:a.尝试从正在执行的命令或数据传输中退出;b.清除等待执行的其它命令;c.清除设备缓冲区的数据;d.按照设备所使用的子类相应协议执行重启,例如执行自检测、对设备进行初始化并恢复到缺省状态。(3)非数据命令传输的总线管理和与之相关的设备初始化等功能,详细情况可参见USB协议。b.类相关命令。采用CBI结构的存储设备应该在控制端点上支持的USB类相关命令为:Accept Device-Specific Command(ADSC)。由ADSC从主机向设备传送命令块。ADSC命令的起始包由表1所
6、示8个字节组成。表1 ADSC起始包结构字 节命 名大 小值说 明0bmRequestTypeByte21h指明为USB类相关命令1bRequestByte00h指明为ADSC命令2(LSB) wValue (MSB)Word00h保留300h4(LSB) wIndex (MSB)Wor
7、d?hbInterfaceNumber指明设备用哪个端口接收命令500h保留6(LSB) wLength (MSB)Word?h指明每次传送命令时的数据大小7 需要注意的是,wLength的值由所设计的存储设备所属的子类决定,这可以在接口描述字中的bInterfaceSubClass域设置。WLength 设置好之后,每次传输命令数据时就必须严格按照这个值进行。如果不等,设备就将认为此次传输失败并向主机发回相应提示,而且CBI结构的大容量存
8、储设备每次只能接收1个命令块。在主机端,应该把将要传输的命令以队列形式排好便于传送。下面是个ADSC命令的举例:1 SOF(xA5)2 SETUP(xB4) ADDR(x7F) ENDP(x0)3 DATA0(xC3)DATA(x21 00 00:00 00:00 0C:00)4 ACK(x4B)5 SOF(xA5)6 OUT(x87)ADDR(x7F)ENDP(x0)7 DATA1(xD2) DATA(x 2A 00 00:01:23:45 00 00:)8 NAK(x5A)9 SOF(xA5)10 OUT(x87) ADDR(x7F) ENDP(x0)11 DATA1(xD2) DATA(
9、x 2A 00 00:01:23:45 00 00:)12 ACK(x4B)13 SOF(xA5)14 DATA0(xC3) DATA(x 00 00 00:00)15 NAK(x5A)16 SOF(xA5)17 OUT(x87) ADDR(x7F) ENDP(x0)18 DATA0(xC3) DATA(x 00 00 00:00)19 ACK(x4B)20 SOF(xA5)21 IN(x96) ADDR(x7F) ENDP(x0)22 NAK(x5A)23 SOF(xA5)24 IN(x96) ADDR(x7F) ENDP(x0)25 DATA1(xD2) DATA ( )26 ACK(x4
10、B)(4)数据输入和数据输出 主机和存储设备之间交换数据时所用。当主机通过控制端点发出数据输入或数据输出命令并向设备批量输入端点或发出IN PID或OUT PID后,设备开始向主机输出数据或从主机输入数据直至达到主机要求的量为止。2.CBI存储设备相关描述字设置 按照USB协议,每一个USB设备都有一个或多个配置,每个配置对应相应设备的一项功能。配置是口的集合,通过接口指定设备如何进行USB总线互联,而接口又是一系列端点的集合。从设备到端口都有相应的描述字进行设备,对它们的一般信息进行说明。CBI结构存储设备应该支持下列U
11、SB描述字:a.设备描述字(device descriptor)。b.配置描述字(configuration descriptor)。c.接口描述字(interface descriptor)。CBI存储设备至少应支持一个数据接口。d.端点描述字(endpoint descriptor)。除用作初始化和命令传输的控制端口Endpoint 0外、CBI存储设备还应该支持批量输入、批量输出、中断三种端点。(1)设备描述字和配置描述字 有关这两类描述字的结构和含义在USB协议有关这两类描述字的结构和含义在USB协议有详细介绍,本文不再作更多说明,设计时根据实际情况
12、加以设置即可。(2)接口描述字 CBI存储设备至少应支持1个数据接口。此数据口包括最多4个端点,即前面提到的:控制、批量输入/输出、中断。其中中断端点可设置为用或不用。 接口描述字的结构和含义在USB协议中也有介绍。这里需要说明的有3点:第一是描述字中的bInterfaceClass域,必须设成08h,用来说明该设备为大容量存储系统。第二是bInterfaceSubClass域,用来指明设计时所使用的对设备进行控制的标准命令集。如01h指明是Reduced Block Commands,06h指明是SCSI transpa
13、rent command set,设计时可根据需要选用。这些在USB Mass Storage Class Specification Overview中有详细说明。第三是bInterfaceProtocol域,指明存储设备的设计使用体积结构。00h和01h说明使用CBI结构。不同的是前者说明设备需使用中断端口告知系统命令的完成与否。(3)端点描述字 接口所用的每一个除控制端口之外的端口都有自己的描述字。这些端口描述字总是作为配置信息的一部分在回应GetDescriptor命令时由设备发给主机的。 CBI存储设备所支持的批
14、量输入/输出和中断端点描述字结构相同。不同的是具体设置,如表2所列。表2 端点描述字结构字 节命 名大 小值说 明0bLengthByte07h指明该描述字长度1bDescriptorTypeByte05h指明该描述字为端点描述字2bEndpointAddressByte8?h或0?h指明该描述字在设备上的端号,必须在1-15之间Bit0.3 指明端口号Bit4.6 保留,须设为0Bit 7 0说明为输出端口,1说明为输入端口3bmAttributesByte?h指明是什么端点描述字(批量端点为02h,中断端点
15、为03h)4wMaxPacketSizeWord00?h最大数据传输长度56bIntervalByte?h数据传输间隔(对批量端点,设成00h)表3 中断端口状态信息结构字 节命 名大 小值说 明0bTypeByte?h00h:指明为命令完成情况中断01h-FFh:保留1bValueByte?h当bType为00hjf ,Bit7.4:由设计者指定Bit3.2:保留,需设成0Bit1.0:命令完成状态 00=通过 01=失败 1
16、0=相位错误 11=永久失败 中断端点可由接口描述字的bInterfaceProtocol域的设置决定用否。如果设成00h,就需用中断端点来提示命令的完成情况。当设备需要产生中断时,CBI设备应该在中断端点返回2个字节的状态信息,主机系统使用接口描述字的bInterfaceSubClass域的值来判别这2个字节的含义,并做出相应的处理,这2个字节定义如表3所列。二、CBI结构的USB存储设备开发实例 这里介绍我们在开发数字化家庭信息系统中的USB硬盘接口时一些简单过程和经验。1.T335
17、10控制器 开发时采用的T33510是台湾创品公司生产的以89C51为内核,集成有USB和IDE存储设备接口的控制芯片。由于集成度较高,因此在成本和开发难度上较低。它拥有很灵活的体系结构,能够满足设计需要,具体说明如下:*内嵌有和89C51兼容的8位单片机;*32K×8片内ROM;*768×8片内RAM;*可用作DMA通道的两个528×8片内RAM;*拥有和89C51相似的P0、P1、P2和P3口,支持存储器的外部扩展;*具有省电模式;*拥有5个中断源,其中复用有USB中断源;*支持全速(12Mb/s)和低速(1.5Mb/s)的
18、USB数据传输速率;*拥有Control endpoint、Bulk in/out endpoint、Interrupt endpoint等USB通讯端口。*和Compact Flash Specificeation Rev.1.3兼容的IDE设备接口;*内置有ECC(Error Correction Code)功能;*使用3.3V工作电压。2.T33510中有关USB寄存器设置 为方便设备的开发,对一些常用的USB参数,T33510已经设置好,开发时只要对其它一些比较灵活的部分在相应寄存器中加以设置即可。这里结合本文前面讨论的CBI部分加以说明。
19、; 对控制端点,T33510提供了1个8位控制寄存器USBICX和4个字节的控制端点数据寄存器USBICMD。对中断端点,T33510提供8位的控制寄存器USBICR和最少2个字节最多8个字节的数据寄存器(USBICRD1USBICRD8)。对批量输入/输出端点,也有控制寄存器 USBIBULK和64个字节的FIFO提供使用。 T33510的通用控制寄存器USBIGEN对接口描述字中bInterfaceProtocol等域进行设置,其结构如表4所列。表4 通用控制寄存器结构-SYS_OKB_INTF_PI_INTF_SCB_INTF_
20、CSUSP_n-R/WR/WR/WR/WR0000000176543210 SYS_OK 用来通知主机所需各种描述字已准备好,可以进行访问。B_INTF_P用来设置bInterfaceProtocol域,当为1时,设该域为00h;当为 0时,设该域为01h。我们在设计时设为1,指明使用中断端口来说明命令完成情况。I_INTF_SC用来设定iInterfaceSubClass域,当为1时,设该域为FFh;当为0时,设该域为01h。我们在设计时设为0,指明使用RBC命令集。B_INTF_C用来设定 bInterfaceClass域,当为1时,设该域为FFh;当为
21、0时,设该域为08h,指明为容量存储系统。我们在设计时将该位置0。SUSP_n为系统挂起标记。 T33510支持CBI结构所需的4种端点,按控制端点、批量输入、批量输出、中断端点的顺序依次分配端点号为0、1、2、3。在中断端点速率寄存器USBIINTR中,可对速度进行设置。开发时我们设为FFh。端点寄存器其它域已由T33510预先设置好。3.系统结构和软硬件设计 基于T33510的USB硬盘结构如图1所示。系统可分为两部分:主机端和单片机端。USB设计分硬件和软件两部分。硬件包括电路设计和固件程序的编写,通常用汇编或C语言
22、;软件分USB设备驱动程序和USB客户软件。固件的编写可采用分块的方法,比如Main模块、Interrupt模块、Vector模块、Timer模块、Declare模块等。通过编译连接以.hex文件的格式写到芯片里面去。固件主要解决以下几个问题:一是描述符的确定与建立;二是中断请求的功能实现;三是命令请求的解析;四是初始化的设置。设备驱动程序和客户软件位于主机端。 T3351 所支持的RBC命令集包括INQUIRY、READ FORMAT CAPASCITIES、READ、WTITE等等,有关RBC命令可从相应协议中得到。系统通过READ命令读取硬盘的启动扇区
23、,并分析其文件系统结构,然后读取其它扇区进行文件的操作。T33510的IDE接口设计有对硬盘操作所需的各个寄存器,符合Compact Flash Specification Rev.1.3协议,给程序编制带来了很大方便。由于所有的文件系统和数据的分析都交由PC端来执行,因此在IDE接口上,只需提供基本的 “Sectors Read”和“Sectors Write”等命令就可以了。主程序流程如图2所示。下面给出对硬盘一个扇区进行读写的C语言程序段。读扇区:void ReadOneSecoter (Dword LBA)IDE_WRITE_1F6(0xE0); Master & LBA模式IDE_WRITE_1F2(1); /扇区数IDE_WRITE_1F3(LBA%0x100);/LBA_7_0位IDE_WRITE_1F4(LBA/0x100)%0x100);/LBA_15_8位IDE_WRITE_1F5(LBA/0x10000)%0x100);/ LBA_23_16位ID
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小儿惊厥护理中的康复指导
- 医联体模式下基层医疗服务缺陷与转诊患者满意度修复
- 1-4-Bipiperidine-ethyl-formate-dihydrochloride-生命科学试剂-MCE
- 医联体区域医疗资源绿色协同经济性
- 医联体5G+远程手术指导试点
- 传染病护理中的效果评价
- 丹毒护理查房:护理风险评估
- 2025年高层住户应急逃生培训
- 2025年安全知识课件
- (一模)2026年汕头市高三第一次模拟考试语文试卷
- 2026年运动防护师实践操作考核大纲试卷及答案
- 2026年医疗行业劳动合同(1篇)
- 建筑工程项目部 2026 年春节节后复产复工实施方案
- 经济安全培训课件
- 蚂蚁集团研究院:中国家庭财富与消费报告2025年第四季度
- 2026年军队文职考试真题及答案
- 企业信息化系统安全防护与合规性检查手册
- 卫生院风险排查制度
- 2026年四川单招信息技术专项测试题卷及答案
- 高校党支部2025年度支部书记抓党建工作述职报告
- 药剂科处方培训课件
评论
0/150
提交评论