与TTL电路之间进行电平和逻辑关系嘚变换实现这种变换的方法可用分立元件,也可用集成电路芯片目前较为广泛地使用集成电路转换器件,如MC1488、SN75150芯片可完成TTL电平到EIA电平嘚转换而MC1489、SN75154可实现EIA电平到TTL电平的转换。MAX232芯片可完成TTL←→EIA双向电平转换
5. USB USB接口、引脚定义及电平在不同代有不同的要求。
USB(Universal Serial Bus)全称通用串口总线USB为解决即插即用需求而诞生,支持热插拔USB协议版本有USB1.0、USB1.1、usb2.0接口、USB3.1等,usb2.0接口目前比较常用USB是主从模式的结构,设备与设备之间、主机与主机之間不能互连为解决这个问题,扩大USB的应用范围出现了USB OTG,全拼 ON The GoUSB OTG 同一个设备,在不同的场合下可行在主机和从机之间切换
2、 自供电设備:设备从外部电源获取工作电压 总线供电设备:设备从VBUS(5v) 取电 。对总线供电设备区分低功耗和高功耗USB设备
低功耗总线供电设备:最大功耗不超过100mA
高功耗总线供电设备: 枚举时最大功耗不超过100mA,枚举完成配置结束后功耗不超过500mA
设备在枚举过程中通过设备的配置描述符向主機报告它的供电配置(自供电/总线供电)以及它的功耗要求
主机在挂起设备后可通过翻转数据线上的极性并保持20ms来唤醒设备,并以低速EOP信號结尾
带远程唤醒功能的设备还可自己发起该唤醒信号;前提是设备已进入idle状态至少5ms然后发出唤醒K信号,维持1ms到15ms并由主机在1ms内接管来继續驱动唤醒信号
EOP:持续2位时间的SE0信号后跟随1位时间的J状态
唤醒slave设备操作
4、USB插入检测和速度检测
全速高速设备在D+接上拉1.5k电阻,低速设备在D-接上拉1.5K电阻主机检测到某一个数据线电平拉高并保持了一段时间,就认为有设备连上来了 先把高速设备检测为全速设备,然后再通过“Chirp序列”的总线握手机制来识别高速和全速设备主机必需在驱动SE0状态以复位设备之前,立刻采样总线状态来判断设备的速度
D+和D-数据线仩的下拉电阻起作用,使得二者都在低电平;主机端看来就是个SE0状态;同样地当数据线上的SE0状态持续一段时间了,就被主机认为是断开狀态
一个传输有多个事务组成,一个事务由2到3个包组成传输又分为四种类型:批量传输、等时(同步)传输、中断传输、控制传输。注意:USB传输数据先发数据低位再发高位数据
批量(大容量数据)传输(Bulk Transfers): 非周期性,突发 大容量数据的通信数据可以占用任意带宽,并容忍延迟 洳USB打印机、扫描仪、大容量储存设备等
低速 USB 设备不支持批量传输,高速批量端点的最大包长度为 512全速批量端点的最大包长度可以为 8、16、32、64。
批量传输在访问 USB 总线时相对其他传输类型具有最低的优先级,USB HOST 总是优先安排其他类型的传输当总线带宽有富余时才安排批量传输。
高速的批量端点必须支持PING 操作向主机报告端点的状态,NYET 表示否定应答没有准备好接收下一个数据包,ACK 表示肯定应答已经准备好接收下一个数据包。
中断传输(Interrupt Transfers): 周期性低频率允许有限延迟的通信 如人机接口设备(HID)中的鼠标、键盘、轨迹球等
中断传输是一种保证查询頻率的传输。中断端点在端点描述符中要报告它的查询间隔主机会保证在小于
这个时间间隔的范围内安排一次传输。
中断传输是一种轮詢的传输方式是一种单向的传输,HOST通过固定的间隔对中断端点进行查询若有数据传输或可以接收数据则返回数据或发送数据,否则返囙NAK表示尚未准备好。
除高速高带宽中断端点外一个微帧内仅允许一次中断事务传输,高速高带宽端点最多可以在一个微帧内进行三次Φ断事务传输传输高达 3072 字节的数据。
所谓单向传输并不是说该传输只支持一个方向的传输,而是指在某个端点上该传输仅支持一个方姠或输出,或输入如果需要在两个方向上进行某种单向传输,需要占用两个端点
等时(同步)传输(Isochronous Transfers): 周期性 持续性的传输,用于传输与时效相关的信息并且在数据中保存时间戳的信息 ,如音频视频设备
等时(同步)传输用在数据量大、对实时性要求高的场合,如音频设备視频设备等,这些设备对数据的延迟很敏感对于音频或视频设备数据的100%正确性要求不高,少量的数据错误是可以容忍的主要是保证数據不能停顿,所以等时传输是不保证数据100%正确的当数据错误时,不再重传操作因此等时传输没有应答包,数据是否正确由数据的CRC校驗来确认。
控制传输是一种可靠的双向传输一次控制传输可分为三个阶段。第一阶段为从HOST到Device的SETUP事务传输这个阶段指定了此次控制传输嘚请求类型;
第二阶段为数据阶段,也有些请求没有数据阶段;第三阶段为状态阶段通过一次IN/OUT 传输表明请求是否成功完成。
控制传输通過控制管道在应用软件和 Device 的控制端点之间进行控制传输过程中传输的数据是有格式定义的,USB 设备或主机可根据格式定义解析获得的数据含义
最大包长度 表征了一个端点单次接收/发送数据的能力,实际上反应的是该端点对应的Buffer 的大小Buffer 越大,单次可接收/发送的数据包越大反之亦反。
当通过一个端点进行数据传输时 若数据的大小超过该端点的最大包长度时,需要将数据分成若干个数据包传输并且要求除最后一个包外,所有的包长度均等于该最大包长度
这也就是说如果一个端点收到/发送了一个长度小于最大包长度的包,即意味着数据傳输结束
USB采用不归零取反来传输数据,当传输线上的差分数据输入0时就取反输入1时就保持原值,为了确保信号发送的准确性当在USB总線上发送一个包时,传输设备就要进行位插入***作(即在数据流中每连续6个1后就插入一个0)
(一)域:是USB数据最小的单位,由若干位组成(至于是多少位由具体的域决定)域可分为七个类型:
1、同步域(SYNC),八位值固定为,用于本地时钟与输入同步
2、标识域(PID)由四位标识符+四位标识符反码构成,表明包的类型和格式这是一个很重要的部分,这里可以计算出USB的标识码有16种,具体分类请看问题五
3、地址域(ADDR):七位地址,代表了设备在主机上的地址地址000 0000被命名为零地址,是任何一个设备第一次连接到主机时在被主机配置、枚舉前的默认地址,由此可以知道为什么一个USB主机只能接127个设备的原因
4、端点域(ENDP),四位由此可知一个USB设备有的端点数量最大为16个。
5、帧号域(FRAM)11位,每一个帧都有一个特定的帧号帧号域最大容量0x800,对于同步传输有重要意义(同步传输为四种传输类型之一请看下媔)。
6、数据域(DATA):长度为0~1023字节在不同的传输类型中,数据域的长度各不相同但必须为整数个字节的长度
7、校验域(CRC):对令牌包囷数据包(对于包的分类请看下面)中非PID域进行校验的一种方法,CRC校验在通讯中应用很泛是一种很好的校验方法,至于具体的校验方法這里就不多说请查阅相关资料,只须注意CRC码的除法是模2运算不同于10进制中的除法。
(二)包:由域构成的包有四种类型分别是令牌包、数据包、握手包和特殊包,前面三种是重要的包不同的包的域结构不同,介绍如下
1、令牌包:可分为输入包、输出包、设置包和帧起始包(注意这里的输入包是用于设置输入命令的输出包是用来设置输出命令的,而不是放据数的)
其中输入包、输出包和设置包的格式都是一样的:
2、数据包:分为DATA0包和DATA1包当USB发送数据的时候,当一次发送的数据长度大于相应端点的容量时就需要把数据包分为好几个包,分批发送DATA0包和DATA1包交替发送,即如果第一个数据包是 DATA0那第二个数据包就是DATA1。但也有例外情况在同步传输中(四类传输类型中之一),所有的数据包都是为DATA0格式如下:
3、握手包:结构最为简单的包,格式如下
A型接口:usb2.0接口连接器在前,而USB3.0连接器在后
B型接口:USB3.0连接器设置于usb2.0接口连接器的上方
|