飞思卡尔8位单片机MC9S84USB接口ppt课件.ppt
第十四章 USB接口,主要内容 USB通信基本知识概要 USB的通讯协议 USB模块的编程方法,嵌入式应用技术基础教程课件,14.1 USB通信基本知识概要,14.1 USB通信基本知识概要,14.1.1 有关基本概念(1)差分信号技术 差分信号技术的特点:使用两条线路表达一个比特位,即用两条线路传输信号的压差作为判断1还是0的依据。其优点是具有极强的抗干扰性。倘若遭受外界强烈干扰,两条线路对应的电平同样会出现大幅度提升或降低的情况,但二者的电平改变方向和幅度几乎相同,电压差值就可始终保持相对稳定,因此数据的准确性并不会因干扰噪声而有所降低。,嵌入式应用技术基础教程课件,14.1 USB通信基本知识概要,(2)USB通信的格式,嵌入式应用技术基础教程课件,14.1 USB通信基本知识概要,(3)USB总线接口,嵌入式应用技术基础教程课件,总线接口的功能除了传送和接收数据信号以外,逻辑上还包括识别设备的当前惟一地址。设备的地址是在设备插入到总线上时,由USB主机分配的,范围从0127,其中0为所有的设备在没有分配惟一地址时使用的默认地址。当总线上有包传输时,设备的总线接口收到此包,通过解析其中的设备地址判断此包是否发送给自己的,如果不是则忽略此包,否则判断此包是发送给哪个端点的,并将整理后的包传送到上面的协议层的相应端点。,14.1 USB通信基本知识概要,(4)USB设备的端点,嵌入式应用技术基础教程课件,所有的传输都是传送到一个设备端点(device endpoint),或是由一个设备端点发出。通常设备端点是内存的一个区块,或是控制器芯片内的一个缓存器,用来作为数据的缓冲区。存储在设备端点的可能是接收到的数据,或是等待要送出的数据。主机也有接收与传送数据的缓冲区,不过主机并没有端点,而是当作与设备端点通信的出发点(starting point)。每一个设备的惟一地址,有一个端点号码以及方向。端点号码可以是015。方向如果是输入(IN),表示流向主机,如果是输出(OUT),表示流出主机。如果是作为控制传输的端点,必须设置成双向传输,所以每个端点会有一对输入与输出端点,来分享同一个端点号码。每个设备都必须将端点0设置成控制端点。除此之外,很少需要额外的控制端点。,14.1 USB通信基本知识概要,(5)USB接口(功能接口),嵌入式应用技术基础教程课件,由一组端点组成,用来完成特定的功能。每个设备可以同时提供多个功能接口,如打印机和扫描仪等。USB主机端为每个接口提供了一个客户端驱动程序,驱动程序和接口之间通过交互完成了有特定意义的数据传输。,14.1 USB通信基本知识概要,14.1.2 USB总线标准,USB连接头有两种类型:A型连接头、B型连接头。具体形状如右图。每个连接头内拥有4个引脚:其中2个用作传递差动数据,其余2个为USB设备提供电源。这4条内含于USB缆线的电线的线规以及颜色如下表。,嵌入式应用技术基础教程课件,返回,14.2 USB的通讯协议,14.2 USB的通讯协议,14.2.1 包 包(Packet)是USB系统中信息传输的基本单元,所有数据都是经过打包后在总线上传输的。USB包由五部分组成,即同步字段(SYNC)、包标识符字段(PID)、数据字段、循环冗余校验字段(CRC)和包结尾字段(EOP),包的基本格式如下图:,嵌入式应用技术基础教程课件,1、SYNC字段由8位组成,作为每个数据封包的前导,用来产生同步作用,使USB设备与总线的包传输率同步,它的数值固定为00000001。2、PID字段用来表示数据封包的类型。PID字段如下图所示:,14.2 USB的通讯协议,各种封包的类型与规范,嵌入式应用技术基础教程课件,14.2 USB的通讯协议,14.2.1 包,3、数据字段是用来携带主机与设备之间要传递的信息,其内容和长度根据包标识符、传输类型的不同而各不相同。并非所有的USB包都必须有数据字段,例如握手包、专用包和SOF令牌包就没有数据字段。在USB包中,数据字段可以包含设备地址、端点号、帧序列号以及数据等内容。在总线传输中,总是首先传输字节的最低位,最后传输字节的最高位。4、CRC字段由不同数目的位所组成。其中重要的数据封包采用CRC16的数据域(16个位),而其余的封包类型则采用CRC5的数据域(5个位)。5、包结尾字段即发送方在包的结尾发出包结尾信号。它表现为差分线路的两根数据线保持2比特低位时间和1比特空闲位时间。USB主机根据EOP判断数据包的结束。,嵌入式应用技术基础教程课件,14.2 USB的通讯协议,14.2.2 封包格式,起始(SOF)封包SOF封包属于令牌封包的一种,但具有独自的PID类型名:SOF。这个封包常用于等时传输,并不应用于低速设备。格式如下:,嵌入式应用技术基础教程课件,令牌(token)封包由于USB的数据交换是由PC主机端所激活的,所以在每一个数据交换中必须以SYNC、PID、ADDR、ENDP与CRC5这5个数据域组合而成的令牌封包为起始。格式如下:,14.2 USB的通讯协议,数据(data)封包,数据封包含有4个域:SYNC、PID、DATA与CRC16。DATA数据域的位值是根据USB设备的传输速度及传输类型而定,且须以8字节为基本单位。也就是,若传输的数据不足8字节,或传输到最后所剩余的也不足8字节,仍须传输8字节的数据域。格式如下:,嵌入式应用技术基础教程课件,握手(Handshake)封包握手封包仅包含SYNC和一个PID数据域,格式如下:,特殊(special)封包PRE是主机从高速传输变成低速传输时送来的封包。格式如下:,14.2 USB的通讯协议,事务处理(Transaction):在USB上数据信息的一次接收或发送的处理过程。(1)输入(IN)事务处理输入事务处理表示USB主机从总线上的某个USB设备接收一个数据包的过程。正常的输入事务处理设备忙时的输入事务处理 设备出错时的输入事务处理,14.2.3 事务,嵌入式应用技术基础教程课件,14.2 USB的通讯协议,正常的输出事务处理,(2)输出(OUT)事务处理,嵌入式应用技术基础教程课件,设备忙时的输出事务处理,设备出错时的输入事务处理,14.2 USB的通讯协议,正常的设置事务处理,(3)设置(SETUP)事务处理,嵌入式应用技术基础教程课件,设备忙时的设置事务处理,设备出错时的设置事务处理,(4)帧起始(SOF)事务处理(5)帧结束(EOF)事务处理,14.2 USB的通讯协议,在USB的传输中,制定了4种传输类型:控制传输、中断传输、批量传输以及等时传输。控制传输是USB传输中最重要的传输。它包含3种类型:控制读取、控制写入以及无数据控制。这3种控制传输类型又分为23个阶段:设置阶段、数据阶段(无数据控制没有此阶段)以及状态阶段。阶段一:设置阶段主机从USB设备获取配置信息,并设置设备的配置值。设置阶段的数据交换包含了SETUP令牌封包、紧随其后的DATA0数据封包以及ACK握手封包。它的作用是执行一个设置(概念含糊)的数据交换,并定义此控制传输的内容。,14.2.4 控制传输,嵌入式应用技术基础教程课件,14.2 USB的通讯协议,数据传输阶段用来传输主机与设备之间的数据。控制读取将数据从设备移到主机上;控制写入将数据从主机传到设备上。,阶段二:数据传输阶段,嵌入式应用技术基础教程课件,14.2 USB的通讯协议,状态阶段用来表示整个传输的过程已完全结束。状态阶段传输的方向必须与数据阶段的方向相反,即原来是IN令牌封包,这个阶段应为OUT令牌封包;反之,原来是OUT令牌封包,这个阶段应为IN令牌封包。对于控制读取而言,主机会送出OUT令牌封包,其后再跟着0长度的DATA1封包。而此时,设备也会做出相对应的动作,送ACK握手封包、NAK握手封包或STALL握手封包。相对地对于控制写入传输,主机会送出IN令牌封包,然后设备送出表示完成状态阶段的0长度的DATA1封包,主机再做出相对应的动作:送ACK握手封包、NAK握手封包或STALL握手封包。,阶段三:状态阶段,嵌入式应用技术基础教程课件,14.2 USB的通讯协议,(1)设备描述符USB描述符就好像是USB外围设备的“身份证”一样,详细地记录着外围设备相关的一切信息。为了描述不同的数据,就需以不同类型的USB描述符来加以描述,它共有以下几种类型:设备描述符 配置描述符接口描述符 端点描述符(2)USB设备请求在USB接口的通信协议中,由于主机是取得绝对的主控权,因此,主机与设备之间就必须遵循某种已沟通的特定命令格式,以达到通信的目的。而这个命令格式就是USB规范书中所制定的“设备请求”。,14.2.5 设备列举,嵌入式应用技术基础教程课件,14.2 USB的通讯协议,数据请求的数据格式内容,嵌入式应用技术基础教程课件,14.2 USB的通讯协议,Clear Feature Get DescriptorSet Address Set Configuration(3)设备列举设备列举可以简单地概括为这样的一个过程:主机通过USB设备请求来取得设备描述符并对该设备进行配置。该过程可以简化为如下5个步骤:第一步,使用预设的地址0取得设备描述符。第二步,设置设备的新地址。第三步,使用新地址取得设备描述符。第四步,取得配置描述符。第五步,设置配置描述符。设备列举使用的是控制传输。上述的5个步骤必须符合控制传输的基本架构,第一步、第三步和第四步使用的是控制读取,第二步和第五步使用的是无数据控制。,几个主要的设备请求,嵌入式应用技术基础教程课件,返回,14.3 USB模块的编程方法,14.3 USB模块的编程方法,14.3.1 USB功能模块 USB功能模块可以内嵌在芯片中,也可以外扩。MC68HC908JB8使用了内嵌的USB功能模块,如右图所示。,嵌入式应用技术基础教程课件,(1)USB收发器:USB的D+和D-数据提供了接口。(2)USB控制逻辑:处理CPU和收发器之间的数据移动。(3)USB寄存器:USB寄存器是用来控制和监控USB操作。,14.3 USB模块的编程方法,14.3.2 USB复位信号,嵌入式应用技术基础教程课件,当D+和D-上的电压小于0.8V时就表示进入了SE0(single-ended 0)状态,如果MCU检测到USB设备的数据线处于SE0状态,并且这种状态持续的时间大于8S,MCU就将它看作是一个USB复位信号。一般在插上USB接口时,会发生USB复位信号。USB复位结束后,USB设备将进入默认状态,但还没进入设置地址和配置状态。如果将配置寄存器中的URSTD位置为1,那么一旦检测到USB复位信号,CPU将产生USB中断,而不是对芯片复位。,14.3 USB模块的编程方法,14.3.3 USB悬挂,嵌入式应用技术基础教程课件,为了节省功耗,JB8支持悬挂模式。当USB数据线连续处于空闲状态3ms后,MCU将进入悬挂模式,进入悬挂模式是由USB中断寄存器中的SUSPND位控制的。任何对总线的操作,例如复位信号或是从MCU产生的一个强制的唤醒驱动,都可以将MCU从悬挂中唤醒。,14.3 USB模块的编程方法,14.3.4 USB低速设备,嵌入式应用技术基础教程课件,通过把USB的D-引脚上拉一个电阻,可以将USB设备设置成低速设备。下图也是USB的外部电路。,14.3 USB模块的编程方法,14.3.5 USB寄存器,嵌入式应用技术基础教程课件,1)USB地址寄存器(UADDR)2)USB中断寄存器0(UIR0)3)USB中断寄存器1(UIR1)4)USB中断寄存器2(UIR2)5)USB控制寄存器0(UCR0)6)USB控制寄存器1(UCR1)7)USB控制寄存器2(UCR2)8)USB控制寄存器3(UCR3)9)USB控制寄存器4(UCR4)10)USB状态寄存器0(USR0)11)USB状态寄存器1(USR1)12)USB端点0数据寄存器(UE0D0-UE0D7)13)USB端点1数据寄存器(UE1D0-UE1D7)14)USB端点2数据寄存器(UE2D0-UE2D7),14.3 USB模块的编程方法,14.3.6 USB中断,嵌入式应用技术基础教程课件,USB模块中断有三种类型:当接收或发送事务完成时,产生事务结束中断;当USB总线悬挂后被激活时,产生唤醒中断;当检测到一个低速的包结束信号时,产生结束中断。所有的中断共享同一个中断向量,由中断程序区分产生的是什么中断。,14.3 USB模块的编程方法,14.3.7 USB口初始化与数据的收发编程,嵌入式应用技术基础教程课件,USB中断处理流程图,14.3 USB模块的编程方法,USB中断服务程序,嵌入式应用技术基础教程课件,端点1和端点2利用查询方式发送和接收数据的编程方法,包括:USB初始化、发送字节和接收字节。(1)USB初始化(2)发送数据子程序(3)接收数据子程序(4)PC机方VB程序,14.3 USB模块的编程方法,端点1发送、接受数据的流程图,嵌入式应用技术基础教程课件,返回,USB接口是MCU与外界进行数据通信的一种方式,由于其速度快,抗干扰能力强,在现在的嵌入式应用中被广泛使用。本章首先介绍了USB接口的基本知识,让读者对USB接口的通信方式有一个深入的了解,然后讲述了USB的通信协议,读者应仔细体会协议所规定的通信过程,最后介绍了MC68HC908JB8所包含的USB模块的使用方法,并给出了关键的编程流程和代码。,本章小结,嵌入式应用技术基础教程课件,返回,