USB接口芯片SL811HS的应用
1 引言
USB(通用串行总线)是INTEL、DEC、MI-CROSOFT、IBM等公司联合提出的、最近几年逐步在PC领域广为应用的新型接口技术。USB接口通用性好、实时性强、传输方式多样、成本低、支持即插即用、易于扩展且便于使用,这些优点使其得到许多硬件厂商的青睐。目前各种类型的USB产品已大量涌入市场,同时也被广泛地用在PC机及嵌入式系统中。
USB的拓扑结构中居核心地位的是Host(也称为主机),任何一次USB数据传输都必须由主机发起和控制,所有的USB外设都只能和主机建立连接,任何两个外设之间或是两个主机之间无法直接通信。而目前,扮演主机角色的大多是个
爱国者迷你王(64M)属Mass storage class,支持Bulk-only传输,命令集为SCSI传输命令集。Bulk-Only传输时,其命令、数据及状态均通过Bulk端点传送。爱国者迷你王(64M)有三个端点,端点0为缺省控制通道,端点1为Bulk out端点,端点2为Bulk in端点。首先要用read(读block 0)及 read capacity 命令读取U盘参数,随后即可对U盘进行读写。
其中dCBWSignature的值为43425355LSB,表示当前发送的是一个CBW;将dCBWTag的内容在状态阶段原样发送给HOST可以验证命令执行的是否正确;dCBWDataTransferLength为数据阶段要传送的字节数;BmCBWFlags表明数据阶段传送的方向;Re-served是保留位,通常可以置零;bCBWLUN用于指明该命令传送给哪个逻辑单元;BCBWCBLength为后续字符串中命令字节的长度,CBWCB为真正要传送的命令。CBW命令发出后,U盘从CBW中解析出CB-WCB然后执行相应的操作,之后返回一个CSW命令块,表明命令执行情况。爱国者迷你王(64M)每次至少读取或写入512字节,因此在改写某些字节时,必须把整个逻辑块一次读出,修改后再一次性写入。
用W78E54控制SL811HS来读写U盘的工作过程可以简单地概括为:当SL811HS从USB总线检测到U盘插入后,通过中断方式将此信息通知系统,系统通过调用枚举模块可以获得与此次传输有关的各种参数,并根据具体的传输参数调用数据读写模块以对SL811HS的控制寄存器和数据寄存器进行相应的操作,最终完成对U盘的读写。其写文件流程图见图3所示。
5 结束语
使用USB主机接口控制器SL811HS实现对U盘的读写,可为数据采集系统大容量数据存储提供一种通用、方便和可靠的解决方案,目前该方案已成功应用到笔者自主研发的温室环境信息采集系统中,并经过长时间测试证明了它的实用性和可靠性。由于SL811HS同时具有从机工作模式,因此,也可将此方案经简单修改后开发USB接口从设备,从而满足不同场合的需要。
- USB接口芯片SL811HS在51单片机系统中应用(03-08)
- 基于引言DSP平台的USB接口设计(11-30)
- 低成本USB接口密钥的设计方法(12-21)
- USB接口类型(12-15)
- C#实现USB接口的程序代码(12-14)
- USB接口的基础理论知识(12-14)