USB协议和CH375B简介USB体系简介•USB是一种支持热插拔的高速串行传输总线,它使用差分信号来传输数据,最高速度可达480Mb/S。USB支持“总线供电”和“自供电”两种供电模式。在总线供电模式下,设备最多可以获得500mA的电流。USB2.0被设计成为向下兼容的模式,当有全速(USB1.1)或者低速(USB1.0)设备连接到高速(USB2.0)主机时,主机可以通过分离传输来支持它们。一条USB总线上,可达到的最高传输速度等级由该总线上最慢的“设备”决定,该设备包括主机、HUB以及USB功能设备。•USB体系包括“主机”、“设备”以及“物理连接”三个部分。其中主机是一个提供USB接口及接口管理能力的硬件、软件及固件的复合体,可以是PC,也可以是OTG设备,一个USB系统中仅有一个USB主机;设备包括USB功能设备和USBHUB,最多支持127个设备;物理连接即指的是USB的传输线。在USB2.0系统中,要求使用屏蔽的双绞线。•OTG简介OTG全称是一键拷贝(USBOn-The-Go)LOOK的商标,它采用USB2.O的传输接口,OTG(USBOn-The-Go)是2001年公布传输协议,让两个USB设备可以不需要用电脑作为HOST,也可以点对点的进行数据的传输。USBOTG:USB的OTG规格(USBOn-The-Go)是指:USB的OTG规格是USB2.0规格的补充。USB使用客服结构。USBOTG产品能够相互进行通讯,而无需连接到PC机上。因此可把一个USB设备可作为一个主机,而其他的则可作为终端。只有USB主机可以包含设备驱动器和数据传输的一些必要的操控。例如,一个数码摄像机可以连接一个PDA,或是手机可以连接到打印机或扫描仪中,其只要这些所有的设备可与USBOTG兼容。当作为家庭网路中的PC为中心的时代已远离,通过使用便携式设备进行相互交流的需求日益增加,USBOTG产品便应运而生。•HUB简介•HUB是一个多端口的转发器,当以HUB为中心设备时,网络中某条线路产生了故障,并不影响其它线路的工作。•USBHUB提供了一种低成本、低复杂度的USB接口扩展方法。HUB的上行PORT面向HOST,下行PORT面向设备(HUB或功能设备)。在下行PORT上,HUB提供了设备连接检测和设备移除检测的能力,并给各下行PORT供电。HUB可以单独使能各下行PORT,不同PORT可以工作在不同的速度等级(高速/全速/低速)。•USB数据传输方式•USB采用轮询的广播机制传输数据,所有的传输都由主机发起,任何时刻整个USB体系内仅允许一个数据包的传输,即不同物理传输线上看到的数据包都是同一被广播的数据包。•USB采用“令牌包”-“数据包”-“握手包”的传输机制,在令牌包中指定数据包去向或者来源的设备地址和端点(Endpoint),从而保证了只有一个设备对被广播的数据包/令牌包作出响应,“握手包”表示了传输的成功与否。•管道(Pipe)是主机和设备端点之间数据传输的模型,共有两种类型的管道:无格式的流管道(StreamPipe)和有格式的信息管道(MessagePipe)。任何USB设备一旦上电就存在一个信息管道,即默认的控制管道,USB主机通过该管道来获取设备的描述、配置、状态,并对设备进行配置。•USB设备连接到HOST时,HOST必须通过默认的控制管道对其进行枚举,完成获得其设备描述、进行地址分配、获得其配置描述、进行配置等操作方可正常使用。USB设备的即插即用特性即依赖于此。•枚举是USB体系中一个很重要的活动,由一系列标准请求组成(若设备属于某个子类,还包含该子类定义的特殊请求)。通过枚举HOST可以获得设备的基本描述信息,如支持的USB版本、PID、VID、设备分类(Class)、供电方式、最大消耗电流、配置数量、各种类型端点的数量及传输能力(最大包长度)。HOST根据PID和VID加载设备驱动程序,并对设备进行合适的配置。只有经过枚举的设备才能正常使用。对于总线供电设备,在枚举完成前最多可从总线获取100mA的电流。•PID和VID简介•vendorID厂家ID和productID。VID是要申请的(当然你也可以随便写),PID是厂家自己定义的•USB体系的传输类型•USB体系定义了四种类型的传输:1、控制传输,主要用于在设备连接时对设备进行枚举以及其他因设备而已的特定操作。2、中断传输,用于对延迟要求严格、小量数据的可靠传输,如键盘、游戏手柄等。3、批量传输,用于对延迟要求宽松,大量数据的可靠传输,如U盘等。4、同步传输,用于对可靠性要求不高的实时数据传输,如摄像头、USB音响等。USB数据流模型•USB体系在实现时采用分层的结构,如上图所示:在HOST端,应用软件(ClientSW)不能直接访问USB总线,而必须通过USB系统软件和USB主机控制器来访问USB总线,在USB总线上和USB设备进行通讯。从逻辑上可以分为功能层、设备层和总线接口层三个层次。其中功能层完成功能级的描述、定义和行为;设备层则完成从功能级到传输级的转换,把一次功能级的行为转换为一次一次的基本传输;USB总线接口层则处理总线上的Bit流,完成数据传输的物理层实现和总线管理。图中黑色箭头代表真实的数据流,灰色箭头代表逻辑上的通讯。USB协议层规范•USB采用littleedian字节顺序,在总线上先传输一个字节的最低有效位,最后传输最高有效位,采用NRZI编码,若遇到连续的6个1要求进行为填充,即插入一个0。所有的USB包都由SYNC开始,高速包的SYNC宽度为32bit,全速/低速包的SYNC宽度为8bit。实际接收到的SYNC宽度由于USBHUB的关系,可能会小于该值。•USB数据包的格式•PID表征了数据包的类型,分为令牌(Token)、数据(Data)、握手(Handshacke)以及特殊包4大类,共16种类型的PID•对于令牌包来说,PID之后是7位的地址和4位的端点号。令牌包没有数据域,以5位的CRC校验和结束。SOF是一类特殊的令牌包,PID后跟的是11位的帧编号。对于数据包来说,PID之后直接跟数据域,数据域的长度为N字节,数据域后以16位的CRC校验和结束。•握手包仅有PID域,没有数据也没有校验和。•握手包包括ACK,NAK,STALL以及NYET四种,其中ACK表示肯定的应答,成功的数据传输;NAK表示否定的应答,失败的数据传输,要求重新传输;STALL表示功能错误或端点被设置了STALL属性;NYET表示尚未准备好,要求等待。•数据在USB总线上的传输以包为单位,包只能在帧内传输。高速USB总线的帧周期为125uS,全速以及低速USB总线的帧周期为1mS。帧的起始由一个特定的包(SOF包)表示,帧尾为EOF。EOF不是一个包,而是一种电平状态,EOF期间不允许有数据传输。USB总线接口芯片CH375B简介•1、概述•CH375是一个USB总线的通用接口芯片,支持USB-HOST主机方式和USB-DEVICE/SLAVE设备方式。在本地端,CH375具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机/DSP/MCU/MPU等控制器的系统总线上。在USB主机方式下,CH375还提供了串行通讯方式,通过串行输入、串行输出和中断输出与单片机/DSP/MCU/MPU等相连接。•2、特点●全速USB-HOST主机接口,兼容USBV2.0,外围元器件只需要晶体和电容。●全速设备接口,完全兼容CH372芯片,支持动态切换主机与设备方式。●主机端点输入和输出缓冲区各64字节,支持常用的12Mbps全速USB设备。●支持USB设备的控制传输、批量传输、中断传输。●自动检测USB设备的连接和断开,提供设备连接和断开的事件通知。●内置控制传输的协议处理器,简化常用的控制传输。●内置固件处理海量存储设备的专用通讯协议,支持Bulk-Only传输协议和SCSI、UFI、RBC或等效命令集的USB存储设备(包括USB硬盘/USB闪存盘/U盘)。●通过U盘文件级子程序库实现单片机读写USB存储设备中的文件。●并行接口包含8位数据总线,4线控制:读选通、写选通、片选输入、中断输出。●串行接口包含串行输入、串行输出、中断输出,支持通讯波特率动态调整。●支持5V电源电压和3.3V电源电压,CH375A芯片还支持低功耗模式。●采用SOP-28封装,可以提供SOP28到DIP28的转换板。•3、封装•4、功能说明•4.1.一般说明CH375芯片可以工作于USB-HOST主机方式或者USB设备方式。CH375的USB主机方式支持并行接口和串行接口。在USB主机方式下,CH375支持各种常用的USB全速设备,外部单片机需要编写固件程序按照相应的USB协议与USB设备通讯。但是对于USB存储设备,CH375内置了相关协议,通常情况下,外部单片机不需要编写固件程序,就可以直接通讯。•4.2.本地端的硬件CH375芯片在本地端提供了通用的被动并行接口和点对点的串行接口。•4.3.内部结构CH375芯片内部集成了PLL倍频器、主从USB接口SIE、数据缓冲区、被动并行接口、异步串行接口、命令解释器、控制传输的协议处理器、通用的固件程序等。•4.4.本地端的单片机软件CH375芯片占用两个地址位,当A0引脚为高电平时选择命令端口,可以写入命令;当A0引脚为低电平时选择数据端口,可以读写数据。单片机通过8位并口对CH375芯片进行读写,所有操作都是由一个命令码、若干个输入数据和若干个输出数据组成,部分命令不需要输入数据,部分命令没有输出数据。命令操作步骤如下:①、在A0=1时向命令端口写入命令代码;②、如果该命令具有输入数据,则在A0=0时依次写入输入数据,每次一个字节;③、如果该命令具有输出数据,则在A0=0时依次读取输出数据,每次一个字节;④、命令完成,可以暂停或者转到①继续执行下一个命令。CH375芯片专门用于处理USB通讯,在检测到USB总线的状态变化时或者命令执行完成后,CH375以中断方式通知单片机进行处理。