USB通讯协议(通俗易懂)_第1页
USB通讯协议(通俗易懂)_第2页
USB通讯协议(通俗易懂)_第3页
USB通讯协议(通俗易懂)_第4页
USB通讯协议(通俗易懂)_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、集线器集线器(复合设备)(复合设备)游戏杆游戏杆USB设备设备(根阶梯根阶梯)阶梯阶梯0扫描仪扫描仪鼠标鼠标集线器集线器USB设备设备阶梯阶梯1阶梯阶梯2PC主机主机(根集线器)(根集线器)图图16-1 USB主机和主机和USB设备的连接设备的连接 表表16-1 USB缆线的信号与颜色缆线的信号与颜色 12341243A型连接头型连接头B型连接头型连接头图图16-2 USB连接头连接头图16-3 在USB电缆上使用双向不归零编码和差动信号的传输 NRZI编码器电缆段差分驱动器NRZI解码器差分驱动器D+ D-USB的数据包使用反向不归零编码(的数据包使用反向不归零编码(NRZI)。图)。图16

2、-3描述了在描述了在USB电缆段上传输信息的步骤。反向不归零编码由传送信息的电缆段上传输信息的步骤。反向不归零编码由传送信息的USB代理程序完成;然后,被编码的数据通过差分驱动器送到代理程序完成;然后,被编码的数据通过差分驱动器送到USB电缆上;接着,接收器将输入的差分信号进行放大,将其送电缆上;接着,接收器将输入的差分信号进行放大,将其送给解码器。使用该编码和差动信号传输方式可以更好地保证数据给解码器。使用该编码和差动信号传输方式可以更好地保证数据的完整性并减少噪声干扰。的完整性并减少噪声干扰。 图16-4 反向不归零编码 空闲数据反 向 不归零码01101000111010使用反向不归零编

3、码方式可以保证数据传输的完整性,而且不使用反向不归零编码方式可以保证数据传输的完整性,而且不要求传输过程中有独立的时钟信号。反向不归零编码不是一个要求传输过程中有独立的时钟信号。反向不归零编码不是一个新的编码方式。它在许多方面都有应用。图新的编码方式。它在许多方面都有应用。图16-4给出了一个数给出了一个数据流和编码之后的结果。在反向不归零编码时,遇到据流和编码之后的结果。在反向不归零编码时,遇到“0”转换,转换,遇到遇到“1”保持。反向不归零码必须保持与输入数据的同步性,保持。反向不归零码必须保持与输入数据的同步性,以确保数据采样正确。反向不归零码数据流必须在一个数据窗以确保数据采样正确。反

4、向不归零码数据流必须在一个数据窗口被采样,无论前一个位时间是否发生过转换。解码器在每个口被采样,无论前一个位时间是否发生过转换。解码器在每个位时间采样数据以检查是否有转换。位时间采样数据以检查是否有转换。 图图16-5在在USB电缆上使用双向不归零编码和差动信号的传输电缆上使用双向不归零编码和差动信号的传输00011111111011数据数据空闲空闲双向不归零码双向不归零码填充后数填充后数据据填充位填充位 若重复相同的若重复相同的“1”信号一直进入时,就会造成数据长时间无法转换,逐渐的积累,信号一直进入时,就会造成数据长时间无法转换,逐渐的积累,而导致接收器最终丢失同步信号的状况,使得读取的时

5、序会发生严重的错误。因此,在而导致接收器最终丢失同步信号的状况,使得读取的时序会发生严重的错误。因此,在NRZI编码之间,还需执行所谓的位填充的工作。位填充要求数据流中如果有连续的六个编码之间,还需执行所谓的位填充的工作。位填充要求数据流中如果有连续的六个“1”就要强行转换。这样接收器在反向不归零码数据流中最多每七个位就检测到一次跳就要强行转换。这样接收器在反向不归零码数据流中最多每七个位就检测到一次跳转。这样就保证了接收器与输入数据流保持同步。反向不归零码的发送器要把转。这样就保证了接收器与输入数据流保持同步。反向不归零码的发送器要把“0”(填(填充位)插到数据流中。接收器必须被设计成能够在

6、连续的六个充位)插到数据流中。接收器必须被设计成能够在连续的六个“1”之后识别一个自动跳之后识别一个自动跳转,并且立即扔掉这六个转,并且立即扔掉这六个“1”之后的之后的“0”位。位。 图图16-5的第一行是送到接收器的原始数据。注意数据流包括连续的八个的第一行是送到接收器的原始数据。注意数据流包括连续的八个“1”。第二。第二行表示对原始数据进行了位填充,在原始的第六个和第七个行表示对原始数据进行了位填充,在原始的第六个和第七个“1”之间填入了一个之间填入了一个“0”。第七个第七个“1”延时一个位时间让填充位插入。接收器知道连续六个延时一个位时间让填充位插入。接收器知道连续六个“1”之后将是一个

7、填充之后将是一个填充位,所以该位就要被忽略。注意,如果原始数据的第七个位是位,所以该位就要被忽略。注意,如果原始数据的第七个位是“0”,填充位也同样插入,填充位也同样插入,在填充过的数据流中就会有两个连续的在填充过的数据流中就会有两个连续的“0”。 USB主机主机USB低速低速设备设备USB数据线数据线+5VD+D-15千欧千欧1.5千欧千欧VccD+D-地地15千欧千欧USB主机主机USB全速全速设备设备USB数据线数据线+5VD+D-15千欧千欧1.5千欧千欧VccD+D-地地15千欧千欧 主机主机(PC)(PC)USBUSB设备设备1. IN1. IN令牌封包令牌封包2. DATA12.

8、 DATA1数据封包数据封包3. ACK3. ACK握手封包握手封包图图16-816-8控制读取的控制读取的ININ数据交换的过程示意图数据交换的过程示意图主机主机(PC)(PC)USBUSB设备设备1.OUT1.OUT令牌封包令牌封包2. DATA12. DATA1数据封包数据封包3. ACK3. ACK握手封包握手封包图图16-916-9控制写入的控制写入的OUTOUT数据交换的过程示意图数据交换的过程示意图该请求中的该请求中的wValue表示特性选择器,它对应的值为:表示特性选择器,它对应的值为:0端点,端点,1设设备。当某个特点不允许取消,或该特性根本不存在,或者是指向一个根备。当某个

9、特点不允许取消,或该特性根本不存在,或者是指向一个根本不存在的接口或端点时,该请求将会导致设备请求失败。如果端点被本不存在的接口或端点时,该请求将会导致设备请求失败。如果端点被固件设为停止状态,主机软件固件设为停止状态,主机软件(总线驱动程序总线驱动程序)也可以发送一个值为也可以发送一个值为0的的CLEAR_FEATURE命令清除该端点的停止状态,本实例中就是这样使用命令清除该端点的停止状态,本实例中就是这样使用该请求的。该请求的。该请求中的该请求中的wValue的高字节表示要取的描述符类型,低字节表示描述符的索引的高字节表示要取的描述符类型,低字节表示描述符的索引值,描述的类型有:值,描述的

10、类型有:1表示设备描述符,表示设备描述符,2表示配置描述符,表示配置描述符,3表示字符串描述符,表示字符串描述符,4表示接口描述符,表示接口描述符,5表示端点描述符。表示端点描述符。wIndex的值为的值为0或语言或语言ID;当要取的描;当要取的描述符是字符串描述符时,该域的值为语言述符是字符串描述符时,该域的值为语言ID;当为其他的描述符时,该域为;当为其他的描述符时,该域为0。wLength表示要返回的数据长度,如果表示要返回的数据长度,如果SETUP阶段的地址使用的是预设地址阶段的地址使用的是预设地址0(ENDP字段为字段为0),这时的),这时的wLength值会大于实际的描述的值。这是

11、为什么呢?值会大于实际的描述的值。这是为什么呢?原因是用户以预设的地址原因是用户以预设的地址0来取得设备描述符时,不管设多少字节,用户最多只来取得设备描述符时,不管设多少字节,用户最多只取其前取其前8字节,即在控制传输过程只有一次数据阶段。但是,如果用户以新的地字节,即在控制传输过程只有一次数据阶段。但是,如果用户以新的地址(址(ENDP字段不为字段不为0)来取得设备描述符时,这时)来取得设备描述符时,这时wLength的值就要注意了。的值就要注意了。该请求与其他的请求有一个重要的不同点,该请求下,该请求与其他的请求有一个重要的不同点,该请求下,USB设备一直不改变它设备一直不改变它的地址,直

12、到该请求的状态阶段被成功地完成,而其他请求的操作都是在状态阶的地址,直到该请求的状态阶段被成功地完成,而其他请求的操作都是在状态阶段之前完成,可以阅读本实例加深对该点的理解。若特定的设备地址大于段之前完成,可以阅读本实例加深对该点的理解。若特定的设备地址大于127,或者或者wIndex 或或wLength为非为非0值,那么该请求不执行。值,那么该请求不执行。该请求中的该请求中的wValue域的低字节表示设置的值,该值必须为域的低字节表示设置的值,该值必须为0或者与配置描述符或者与配置描述符中的配置值相匹配。如果设置值等于中的配置值相匹配。如果设置值等于0,表示设备在地址状态。如果,表示设备在地

13、址状态。如果wIndex 或或 wLength为非为非0值,那么该请求不执行。值,那么该请求不执行。 JB8具有具有20、28、44三三种封装形式,不同封装种封装形式,不同封装只是引脚数量和形式有只是引脚数量和形式有所区别,其它方面是一所区别,其它方面是一致的,致的,JB8单片机的封单片机的封装见图装见图16-10所示,其所示,其中中a,b,c分别给出了分别给出了28,20,44三种封装形式的三种封装形式的管脚图。管脚图。$0000$003F$0040$013F$0140$DBFF$DC00$FBFF$FC00$FDFF$FE00$FE0F$FE10$FEDF$FFE0$FFEF$FFF0$F

14、FFF64字节的字节的I/O寄存器区寄存器区256字节的字节的RAM区区56000字节未定义区字节未定义区8192字节字节Flash存储器区存储器区512字节监视字节监视ROM区区1控制及状态寄存器区控制及状态寄存器区464字节监视字节监视ROM区区216字节字节Flash向量区向量区16字节保留区字节保留区图16-11 JB8存储映像图 USB控制控制逻辑逻辑收收 发发 器器USB寄存器寄存器D+D-USB接口接口CPU总线总线USB功能模块图功能模块图数据位数据位D7D6D5D4D3D2D1D0定义定义R2SEQTXACKTXANKTXSTLRP2SIZ3RP2SIZ2RP2SIZ1RP2

15、SIZ0复位复位00000000端点端点0接收数接收数据产生的中断据产生的中断USB初始化初始化开始开始YSETUP事务事务?NN端点端点0接收数接收数据产生的中断据产生的中断YN复位产生的中断?复位产生的中断?调用处理端点调用处理端点0OUT事务处理事务处理YN退出中断退出中断调用处理端点调用处理端点0IN事务处理事务处理调用调用SETUP事事务处理务处理YY查询方式接收数据查询方式接收数据UIR1 的的BM_RXD2F位为位为1禁止端点禁止端点2输入(将输入(将UCR2 的的BM_RX2E位置位置0)清清RXD2F位(将位(将UIR2 的的 BM_RXD2FR位置位置0)从端点从端点2的接收缓冲区中读取数据的接收缓冲区中读取数据允许端点允许端点2输入(将输入(将UCR2 的的BM_RX2E位置位置1)N开始开始查询方式发送数据查询方式发送数据UIR1 的的BM_TXD1F位为位为1禁止端点禁止端点1输出(将输出(将UCR1 的的BM_TX1E位置位置0)清清TXD1F位(将位(将UIR2 的的 BM_TXD1FR位置位置0)向端点向端点1的数据缓冲区中写入数据的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论