关闭

关闭

封号提示

内容

首页 USB的通讯协议(通俗易懂).ppt

USB的通讯协议(通俗易懂).ppt

USB的通讯协议(通俗易懂).ppt

上传者: 用户qibm1jiztt 2014-03-15 评分 5 0 109 15 494 暂无简介 简介 举报

简介:本文档为《USB的通讯协议(通俗易懂)ppt》,可适用于IT/计算机领域,主题内容包含第章USB接口与编程实例第章USB接口与编程实例主要内容:USB概述USB设备USB物理特性USB通信协议JB的USB模块的编程方法USB概述USB符等。

第章USB接口与编程实例第章USB接口与编程实例主要内容:USB概述USB设备USB物理特性USB通信协议JB的USB模块的编程方法USB概述USB概述USB协议有两种:USB和USB。USB和USB完全兼容。USB支持的数据传输率为Mbps和Mbps(用于慢速外设)USB支持的数据传速率可达Mbps。在普通用户看来USB系统就是外设通过一根USB电缆和PC机连接起来。通常把外设称为USB设备把其所连接的PC机称为USB主机。将指向USB主机的数据传输方向称为上行通信把指向USB设备的数据传输方向称为下行通信。USB概述USB概述USB网络采用阶梯式星形拓扑结构如图。一个USB网络中只能有一个主机。主机内设置了一个根集线器提供了主机上的初始附属点。图USB主机和USB设备的连接USB概述USB概述主机定时对集线器的状态进行查询。当一个新设备接入集线器时主机会检测到集线器状态改变主机发出一个命令使该端口有效并对其进行设置。位于这个端口上的设备进行响应主机收到关于设备的信息主机的操作系统确定对这个设备使用那种驱动程序接着设备被分配一个唯一标识的地址范围从~其中为所有的设备在没有分配惟一地址时使用的默认地址。主机向它发出内部设置请求。当一个设备从总线上移走时主机就从其可用资源列表中将这个设备删除。USB系统基本概念USB系统基本概念USB主机USB的所有数据通信(不论是上行通信还是下行通信)都由USB主机启动所以USB主机在整个数据传输过程中占据着主导地位。在USB系统中只允许有一个主机。从开发人员的角度看USB主机可分为三个不同的功能模块:客户软件、USB系统软件和USB总线接口。()客户软件()USB系统软件()USB总线接口USB系统基本概念USB系统基本概念USB主机()客户软件客户软件负责和USB设备的功能单元进行通信以实现其特定功能。一般由开发人员自行开发。客户软件不能直接访问USB设备其与USB设备功能单元的通信必须经过USB系统软件和USB总线接口模块才能实现。客户软件一般包括USB设备驱动程序和界面应用程序两部分。USB设备驱动程序负责和USB系统软件进行通信。通常它向USB总线驱动程序发出IO请求包(IRP)以启动一次USB数据传输。此外根据数据传输的方向它还应提供一个或空或满的数据缓冲区以存储这些数据。界面应用程序负责和USB设备驱动程序进行通信以控制USB设备。它是最上层的软件只能看到向USB设备发送的原始数据和从USB设备接收的最终数据。USB系统基本概念USB系统基本概念USB主机()USB系统软件USB系统软件负责和USB逻辑设备进行配置通信并管理客户软件启动的数据传输。USB逻辑设备是程序员与USB设备打交道的部分。USB系统软件一般包括USB总线驱动程序和USB主控制器驱动程序这两部分。这些软件通常由操作系统提供开发人员不必掌握。USB系统基本概念USB系统基本概念USB主机()USB总线接口USB总线接口包括主控制器和根集线器两部分。根集线器为USB系统提供连接起点用于给USB系统提供一个或多个连接点(端口)。主控制器负责完成主机和USB设备之间数据的实际传输包括对传输的数据进行串行编解码、差错控制等。该部分与USB系统软件的接口依赖于主控制器的硬件实现开发人员不必掌握。USB系统基本概念USB系统基本概念USB设备一个USB设备由三个功能模块组成:USB总线接口、USB逻辑设备和功能单元。这里的USB总线接口指的是USB设备中的串行接口引擎(SIE)USB逻辑设备被USB系统软件看作是一个端点的集合功能单元被客户软件看作是一个接口的集合。SIE、端点和接口都是USB设备的组成单元。为了更好地描述USB设备的特征USB提出了设备架构的概念。从这个角度来看可以认为USB设备是由一些配置、接口和端点组成的即一个USB设备可以含有一个或多个配置在每个配置中可含有一个或多个接口在每个接口中可含有若干个端点。其中配置和接口是对USB设备功能的抽象实际的数据传输由端点来完成。在使用USB设备前必须指明其采用的配置和接口。这个步骤一般是在设备接入主机时设备进行自举时完成的我们在后面会进一步介绍。USB设备使用各种描述符来说明其设备架构包括设备描述符、配置描述符、接口描述符、端点描述符以及字符串描述符它们通常被保存在USB设备的固件程序中。USB系统基本概念USB系统基本概念USB设备设备设备代表一个USB设备它由一个或多个配置组成。设备描述符用于说明设备的总体信息并指明其所含的配置的个数。一个USB设备只能有一个设备描述符。配置一个USB设备可以包含一个或多个配置如USB设备的低功耗模式和高功耗模式可分别对应一个配置。在使用USB设备前必须为其选择一个合适的配置。配置描述符用于说明USB设备中各个配置的特性如配置所含接口的个数等。USB设备的每一个配置都必须有一个配置描述符。接口一个配置可以包含一个或多个接口如对一个光驱来说当用于文件传输时使用其大容量存储接口而当用于播放CD时使用其音频接口。接口是端点的集合可以包含一个或多个可替换设置用户能够在USB处于配置状态时改变当前接口所含的个数和特性。接口描述符用于说明USB设备中各个接口的特性如接口所属的设备类及其子类等。USB设备的每个接口都必须有一个接口描述符。USB系统基本概念USB系统基本概念USB设备端点端点是USB设备中的实际物理单元USB数据传输就是在主机和USB设备各个端点之间进行的。端点一般由USB接口芯片提供例如Freescale的MCHCJB。USB设备中的每一个端点都有唯一的端点号每个端点所支持的数据传输方向一般而言也是确定的:或是输入(IN)或是输出(OUT)也有些芯片提供的端点的数据方向是可以配置的例如MCHCJB包含有两个用于数据收发的端点:端点和端点。其中端点只能用于数据发送即支持输入(IN)端点既能用于数据发送也可用于数据接收即支持输入(IN)和输出(OUT)操作。需要注意的是在这里数据的传输方向是站在主机的立场上来看得。比如端点只能发送数据在主机看来是端点向主机输入数据即IN操作当端点配置为接收数据时主机向端点输出数据即OUT操作。这一点是初学者比较容易产生混淆的地方。利用设备地址、端点号和传输方向就可以指定一个端点并和它进行通信。号端点比较特殊它有数据输入IN和数据输出OUT两个物理单元且只能支持控制传输。USB系统基本概念USB系统基本概念USB设备字符串在USB设备中通常还含有字符串描述符以说明一些专用信息如制造商的名称、设备的序列号等。它的内容以UNICODE的形式给出且可以被客户软件所读取。对USB设备来说字符串描述符是可选的。管道在USB系统结构中可以认为数据传输是在主机软件(USB系统软件或客户软件)和USB设备的各个端点之间直接进行的它们之间的连接称为管道。管道是在USB设备的配置过程中建立的。管道是对主机和USB设备间通信流的抽象它表示主机的数据缓冲区和USB设备的端点之间存在着逻辑数据传输而实际的数据传输是由USB总线接口层来完成的。管道和USB设备中的端点一一对应。一个USB设备含有多少个端点其和主机进行通信时就可以使用多少条管道且端点的类型决定了管道中数据的传输类型如中断端点对应中断管道且该管道只能进行中断传输。传输类型在后面会介绍。不论存在着多少条管道在各个管道中进行的数据传输都是相互独立的。USB物理特性USB物理特性USB接口USB使用一根屏蔽的线电缆与网络上的设备进行互联。数据传输通过一个差分双绞线进行这两根线分别标为D和D另外两根线是Vcc和Ground其中Vcc向USB设备供电。使用USB电源的设备称为总线供电设备而使用自己外部电源的设备叫做自供电设备。为了避免混淆USB电缆中的线都用不同的颜色标记如表所示。表USB缆线的信号与颜色USB物理特性USB物理特性USB接口从一个设备连回到主机称为上行连接从主机到设备的连接称为下行连接。为了防止回环情况的发生上行和下行端口使用不同的连接器所以USB在电缆和设备的连接中分别采用了两种类型的连接头即图所示的A型连接头和B型连接头。每个连接头内的电线号与图的引脚编号是一致的。A型连接头用于上行连接即在主机或集线器上有一个A型插座而在连接到主机或集线器的电缆的一端是A型插头。在USB设备上有B型插座而B型插头在从主机或集线器接出的下行电缆的一端。采用这种连接方式可以确保USB设备、主机集线器和USB电缆始终以正确的方式连接而不出现电缆接入方式出错或直接将两个USB设备连接到一起的情况。USB物理特性USB物理特性USB信号差分信号技术特点传统的传输方式大多使用“正信号”或者“负信号”二进制表达机制这些信号利用单线传输。用不同的信号电平范围来分别表示和它们之间有一个临界值如果在数据传输过程中受到中低强度的干扰高低电平不会突破临界值那么信号传输可以正常进行。但如果遇到强干扰高低电平突破临界值由此造成数据传输出错。差分信号技术最大的特点是:必须使用两条线路才能表达一个比特位用两条线路传输信号的压差作为判断还是的依据。这种做法的优点是具有极强的抗干扰性。倘若遭受外界强烈干扰两条线路对应的电平同样会出现大幅度提升或降低的情况但二者的电平改变方向和幅度几乎相同电压差值就可始终保持相对稳定因此数据的准确性并不会因干扰噪声而有所降低。()USB通信的格式图在USB电缆上使用双向不归零编码和差动信号的传输USB的数据包使用反向不归零编码(NRZI)。图描述了在USB电缆段上传输信息的步骤。反向不归零编码由传送信息的USB代理程序完成然后被编码的数据通过差分驱动器送到USB电缆上接着接收器将输入的差分信号进行放大将其送给解码器。使用该编码和差动信号传输方式可以更好地保证数据的完整性并减少噪声干扰。()USB通信的格式图反向不归零编码使用反向不归零编码方式可以保证数据传输的完整性而且不要求传输过程中有独立的时钟信号。反向不归零编码不是一个新的编码方式。它在许多方面都有应用。图给出了一个数据流和编码之后的结果。在反向不归零编码时遇到“”转换遇到“”保持。反向不归零码必须保持与输入数据的同步性以确保数据采样正确。反向不归零码数据流必须在一个数据窗口被采样无论前一个位时间是否发生过转换。解码器在每个位时间采样数据以检查是否有转换。()USB通信的格式若重复相同的“”信号一直进入时就会造成数据长时间无法转换逐渐的积累而导致接收器最终丢失同步信号的状况使得读取的时序会发生严重的错误。因此在NRZI编码之间还需执行所谓的位填充的工作。位填充要求数据流中如果有连续的六个“”就要强行转换。这样接收器在反向不归零码数据流中最多每七个位就检测到一次跳转。这样就保证了接收器与输入数据流保持同步。反向不归零码的发送器要把“”(填充位)插到数据流中。接收器必须被设计成能够在连续的六个“”之后识别一个自动跳转并且立即扔掉这六个“”之后的“”位。图的第一行是送到接收器的原始数据。注意数据流包括连续的八个“”。第二行表示对原始数据进行了位填充在原始的第六个和第七个“”之间填入了一个“”。第七个“”延时一个位时间让填充位插入。接收器知道连续六个“”之后将是一个填充位所以该位就要被忽略。注意如果原始数据的第七个位是“”填充位也同样插入在填充过的数据流中就会有两个连续的“”。USB物理特性检测设备连接和速度USB物理特性检测设备连接和速度在USB设备连接时USB系统能自动检测到这个连接并识别出其采用的数据传输速率。USB采用在D或D线上增加上拉电阻的方法来识别低速和全速设备。USB支持三种类型的传输速率:Mbs的低速传输、Mbs的全速传输和Mbs的高速传输。如图和图所示。当主控制器或集线器的下行端口上没有USB设备连接时其D和D线上的下拉电阻使得这两条数据线的电压都是近地的(V)当全速低速设备连接以后电流流过由集线器的下拉电阻和设备在DD的上拉电阻构成的分压器。由于下拉电阻的阻值是KΩ上拉电阻的阻值是KΩ所以在DD线上会出现大小为(Vcc*())的直流高电平电压。当USB主机探测到DD线的电压已经接近高电平而其它的线保持接地时它就知道全速低速设备已经连接了。USB物理特性检测设备连接和速度USB物理特性检测设备连接和速度低速USB设备电缆和电阻的连接全速USB设备电缆和电阻的连接USB的通讯协议USB的通讯协议包包(Packet)是USB系统中信息传输的基本单元所有数据都是经过打包后在总线上传输的。USB包由五部分组成即同步字段(SYNC)、包标识符字段(PID)、数据字段、循环冗余校验字段(CRC)和包结尾字段(EOP)包的基本格式如下图:、SYNC字段:由位组成作为每个数据封包的前导用来产生同步作用使USB设备与总线的包传输率同步它的数值固定为。、PID字段:用来表示数据封包的类型。包标识符中的校验字段是通过对类型字段的每个位求反码产生的PID字段如下图所示:表中列出了信息包的类型包括令牌、数据、握手或特殊四种信息包类型。表中列出了信息包的类型包括令牌、数据、握手或特殊四种信息包类型。表各种信息包的类型与规范、数据字段:是用来携带主机与设备之间要传递的信息其内容和长度根据包标识符、传输类型的不同而各不相同。在USB包中数据字段可以包含设备地址、端点号、帧序列号以及数据等内容。在总线传输中总是首先传输字节的最低位最后传输字节的最高位。()设备地址(ADDR)数据域ADDR数据域由位组成可用来寻址多达个外围设备。()端点(ENDP)数据域ENDP数据域由位组成。通过这个位最多可寻址出个端点。这个ENDP数据域仅用在IN、OUT与SETUP令牌信息包中。对于慢速设备可支持端点以及端点作为中断传输模式而全速设备则可以拥有个输入端点(IN)与个输出端点(OUT)共个端点。()帧序列号当USB令牌包的PID为SOF时其数据字段必须为位的帧序列号。帧序列号由主机产生且每个数据帧自动加一最大数值为xFF。当帧序列号达到最大数时将自动从开始循环。()数据它仅存于DATA信息包内根据不同的传输类型拥有不同的字节大小从到字节(实时传输)。、循环冗余码CRC字段由不同数目的位所组成。根据不同的信息包类型CRC数据域由不同数目的位所组成。其中重要的数据信息包采用CRC的数据域(个位)而其余的信息包类型则采用CRC的数据域(个位)。其中的循环冗余码校验CRC是一种错误检测技术。由于数据在传输时有时候会发生错误因此CRC可根据数据算出一个校验值然后依此判断数据的正确性、包结尾字段即发送方在包的结尾发出包结尾信号。USB主机根据EOP判断数据包的结束。信息包格式信息包格式.令牌(token)包在USB系统中只有主机才能发出令牌包。令牌包定义了数据传输的类型它是事务处理的第一阶段。令牌包中较为重要的是SETUP、IN和OUT这三个令牌包。它们用来在根集线器和设备端点之间建立数据传输。一个IN包用来建立一个从设备到根集线器的数据传送一个OUT包用来建立从根集线器到设备的数据传输。令牌包格式如下:.数据(data)包数据封包含有个域:SYNC、PID、DATA与CRC。DATA数据域的位值是根据USB设备的传输速度及传输类型而定且须以字节为基本单位。也就是若传输的数据不足字节或传输到最后所剩余的也不足字节仍须传输字节的数据域。格式如下:握手(Handshake)包握手信息包是最简单的信息包类型。在这个握手信息包中仅包含一个PID数据域而已它的格式如下所列:事务事务在USB上数据信息的一次接收或发送的处理过程称为事务处理(Transaction)。事务处理的类型包括输入(IN)事务处理、输出(OUT)事务处理、设置(SETUP)事务处理和帧开始、帧结尾等类型。在输出(OUT)事务处理和设置(SETUP)事务处理中紧接着SETUP和OUT包后的是DATA包DATA和DATA包是交替地发送的在DATA包后面设备将回应一个握手信号如果设备可以接收数据就回应ACK包如果设备忙就回应NAK包如果设备出错则回应STALL包在IN事务中IN包后面是设备发来的DATA包或NAK包或STALL包若设备忙或出错就发NAK包或STALL包给主机若设备数据准备好发送则发DATA包DATA和DATA包也是交替地发送的紧接着DATA包后面是主机发给设备的握手包ACK表示主机可以接收数据NAK包代表主机忙STALL包代表主机出错。事务事务.输入(IN)事务处理输入事务处理表示USB主机从总线上的某个USB设备接收一个数据包的过程。正常的输入事务处理设备忙时的输入事务处理设备出错时的输入事务处理.输出(OUT)事务处理.输出(OUT)事务处理正常的输出事务处理设备忙时的输出事务处理设备出错时的输入事务处理.设置(SETUP)事务处理.设置(SETUP)事务处理正常的设置事务处理设备忙时的设置事务处理设备出错时的设置事务处理USB传输类型USB传输类型在USB的传输中制定了种传输类型:控制传输、中断传输、批量传输以及等时传输。控制传输类型分为~个阶段:设置阶段、数据阶段(无数据控制没有此阶段)以及状态阶段。根据数据阶段的数据传输的方向控制传输又可分为种类型:控制读取(读取USB描述符)、控制写入(配置USB设备)以及无数据控制。.控制传输控制传输是USB传输中最重要的传输。它包含种类型:控制读取、控制写入以及无数据控制。这种控制传输类型又分为~个阶段:设置阶段、数据阶段(无数据控制没有此阶段)以及状态阶段。阶段一:设置阶段主机从USB设备获取配置信息并设置设备的配置值。设置阶段的数据交换包含了SETUP令牌封包、紧随其后的DATA数据封包以及ACK握手封包。它的作用是执行一个设置(概念含糊)的数据交换并定义此控制传输的内容。阶段二:数据传输阶段阶段二:数据传输阶段数据传输阶段用来传输主机与设备之间的数据。控制读取是将数据从设备读到主机上读取的数据USB设备描述符。该过程如图所示。对每一个数据信息包而言首先主机会发送一个IN令牌信息包表示要读数据进来。然后设备将数据通过DATA数据信息包回传给主机。最后主机将以下列的方式加以响应:当数据已经正确接收时主机送出ACK令牌信息包当主机正在忙碌时发出NAK握手信息包当发生了错误时主机发出STALL握手信息包。控制写入则是将数据从主机传到设备上所传的数据即为对USB设备的配置信息该过程如图所示。对每一个数据信息包而言主机将会送出一个OUT令牌信息包表示数据要送出去。紧接着主机将数据通过DATA数据信息包传递至设备。最后设备将以下列方式加以响应:当数据已经正确接收时设备送出ACK令牌信息包当设备正在忙碌时设备发出NAK握手信息包当发生了错误时设备发出STALL握手信息包。阶段三:状态阶段阶段三:状态阶段状态阶段用来表示整个传输的过程已完全结束。状态阶段传输的方向必须与数据阶段的方向相反即原来是IN令牌封包这个阶段应为OUT令牌封包反之原来是OUT令牌封包这个阶段应为IN令牌封包。对于控制读取而言主机会送出OUT令牌封包其后再跟着长度的DATA封包。而此时设备也会做出相对应的动作送ACK握手封包、NAK握手封包或STALL握手封包。相对地对于控制写入传输主机会送出IN令牌封包然后设备送出表示完成状态阶段的长度的DATA封包主机再做出相对应的动作:送ACK握手封包、NAK握手封包或STALL握手封包。.实时传输实时传输适用于必须以固定速率抵达或在指定时刻抵达可以容忍偶尔错误的数据上。实时传输一般用于麦克风、喇叭等设备。实时传输只需令牌与数据两个信息包阶段没有握手包故数据传错时不会重传。.批量传输用于传输大量数据要求传输不能出错但对时间没有要求适用于打印机、存储设备等。.中断传输中断传输方式总是用于对设备的查询以确定是否有数据需要传输。因此中断传输的方向总是从USB设备到主机。设备列举设备列举.描述符USB描述符就好像是USB外围设备的“身份证”一样详细地记录着外围设备相关的一切信息。为了描述不同的数据就需以不同类型的USB描述符来加以描述它共有以下几种类型:设备描述符、配置描述符、接口描述符和端点描述符这几个描述符是必须具有的下面将结合实例详细介绍其他的描述符例如字符串描述符、数种不同的群组描述符以及报告描述符则可以根据不同的设备进行选择。设备列举设备列举()设备描述符设备列举设备列举()设备描述符设备列举设备列举()配置描述符设备列举设备列举()接口描述符设备列举设备列举()端点描述符设备列举设备列举()端点描述符.USB设备请求.USB设备请求清除请求(ClearFeature)获得描述符(GetDescriptor)设置地址(SetAddress)设置状态(SetConfiguration)几个主要的设备请求.USB设备请求.USB设备请求下面结合实例分别介绍几个主要的设备请求。()清除特性(ClearFeature)该请求是用来取消一个特性其格式如下:该请求中的wValue表示特性选择器它对应的值为:=端点=设备。当某个特点不允许取消或该特性根本不存在或者是指向一个根本不存在的接口或端点时该请求将会导致设备请求失败。如果端点被固件设为停止状态主机软件(总线驱动程序)也可以发送一个值为的CLEARFEATURE命令清除该端点的停止状态本实例中就是这样使用该请求的。.USB设备请求.USB设备请求()取得描述符(GetDescriptor)该请求可以取得USB设备中存在的特定的描述符其格式如下:该请求中的wValue的高字节表示要取的描述符类型低字节表示描述符的索引值描述的类型有:表示设备描述符表示配置描述符表示字符串描述符表示接口描述符表示端点描述符。wIndex的值为或语言ID当要取的描述符是字符串描述符时该域的值为语言ID当为其他的描述符时该域为。wLength表示要返回的数据长度如果SETUP阶段的地址使用的是预设地址(ENDP字段为)这时的wLength值会大于实际的描述的值。这是为什么呢?原因是用户以预设的地址来取得设备描述符时不管设多少字节用户最多只取其前字节即在控制传输过程只有一次数据阶段。但是如果用户以新的地址(ENDP字段不为)来取得设备描述符时这时wLength的值就要注意了。.USB设备请求.USB设备请求()设置地址(SetAddress)该请求给USB设备设置地址从而可以对该USB设备进行进一步的访问。其格式如下:该请求与其他的请求有一个重要的不同点该请求下USB设备一直不改变它的地址直到该请求的状态阶段被成功地完成而其他请求的操作都是在状态阶段之前完成可以阅读本实例加深对该点的理解。若特定的设备地址大于或者wIndex或wLength为非值那么该请求不执行。.USB设备请求.USB设备请求()设置配置(SetConfiguration)该请求对设备进行设置。其格式如下:该请求中的wValue域的低字节表示设置的值该值必须为或者与配置描述符中的配置值相匹配。如果设置值等于表示设备在地址状态。如果wIndex或wLength为非值那么该请求不执行。.设备列举设备列举可以简单地概括为这样的一个过程:主机通过USB设备请求来取得设备描述符并对该设备进行配置。该过程可以简化为如下个步骤:第一步使用预设的地址取得设备描述符。第二步设置设备的新地址。第三步使用新地址取得设备描述符。第四步取得配置描述符。第五步设置配置描述符。设备列举使用的是控制传输。上述的个步骤必须符合控制传输的基本架构第一步、第三步和第四步使用的是控制读取第二步和第五步使用的是无数据控制。JBUSB模块的编程方法JBUSB模块的编程方法MCHCJB简介.MCHCJB单片机的性能概述MHz内部总线频率。字节IO寄存器区。字节的片内RAM。字节的片内Flash存储器具有在线编程能力和保密功能。字节监控ROM。字节用户定义矢量区。个位双通道定时器接口模块每个通道可选择为输入捕捉、输出比较和脉宽调制输出。内置USB模块遵循USB协议。JBUSB模块的编程方法JBUSB模块的编程方法MCHCJB简介.引脚功能JB具有、、三种封装形式下面以引脚封装的JB为例介绍其引脚功能。电源类引脚VDD、VSS(脚、脚):电源供给端VREG(脚):为V输出其主要用于USB数据驱动的电压调制控制类引脚(脚):外部低有效复位输入或输出脚有内部上拉电阻(脚):外部中断输入脚有内部上拉电阻IO类引脚PTAKBA~PTAKBA(~、~脚):位通用双向IO口PTB~PTB(~、~脚):位通用双向IO口PTC~PTC(~、~脚):位通用双向IO口PTD~PTD(~、~脚):位通用双向IO口PTED、PTED(、脚):位通用双向IO口D、D用于USB模块PTED还可编程对IRQ中断进行触发PTETCH、PTETCH、PTETCLK(、、脚):位通用双向IO口TCH、TCH、TCLK用于定时器模块TIM其它OSC、OSC(、脚):片内振荡器引脚。JB具有、、三种封装形式不同封装只是引脚数量和形式有所区别其它方面是一致的JB单片机的封装见图所示其中a,b,c分别给出了三种封装形式的管脚图。MCHCJB简介MCHCJB简介.JB存储器组织CPU可寻址K地址空间所以它的地址范围是$~$FFFF在这$~$FFFF的寻址范围内分成多个不同区段每个区段的作用不同。MCHCJB单片机的存储器组织及地址分配见图。图JB存储映像图USB功能模块USB功能模块可以内嵌在芯片中也可以外扩。MCHCJB使用了内嵌的USB功能模块如右图所示。()USB收发器:USB的D和D数据提供了接口。()USB控制逻辑:处理CPU和收发器之间的数据移动。()USB寄存器:USB寄存器是用来控制和监控USB操作。()USB复位信号:()USB悬挂()USB低速设备USB寄存器USB寄存器USB寄存器是用来控制和监视USB操作的MCHCJB中USB寄存器有如下几种:地址寄存器(ADDR)、控制寄存器(UCRUCR)、状态寄存器(USRUSR)、中断寄存器(UIRUIR)、端点数据寄存器(UEDUED)、端点数据寄存器(UEDUED)和端点数据寄存器(UEDUED)。下面分别介绍这些寄存器。USB寄存器USB寄存器)USB地址寄存器(UADDR)UADDR的地址:$定义如下:DUSBEN位:USB模块允许位。USBEN=允许USB模块并且PTE中断不允许USBEN=不允许USB模块包括USB中断、复位以及复位中断都不允许并且PTED和PTED用作高电流开漏输入输出口PTE和PTE。可读写位。D~DUADD~UADD:USB模块的地址。都是可读写位。USB寄存器USB寄存器)USB中断寄存器(UIR)UIR的地址:$定义如下:DEOPIE位:EOP检测中断允许位。可读写位EOPIE=如果EOP被检测到能产生一个CPU中断请求EOPIE=如果EOP被检测到不能产生一个CPU中断请求。DSUSPND位:USB挂起位。可读写位如果USB总线上连续ms处于闲置状态则该位将会被软件置位。置该位可以将收发器处于节能模式。在置该位之前RESUMF标志位必须清零在RESUMF置位后软件必须清掉该位。DTXDIE位:端点输出中断允许位。可读写位TXDIE=输出端点能产生一个CPU中断请求TXDIE=输出端点不能产生一个CPU中断请求。DRXDIE位:端点接收中断允许位。可读写位RXDIE=输入端点能产生一个CPU中断请求RXDIE=接收端点不能产生一个CPU中断请求。DTXDIE位:端点输出中断允许位。可读写位TXDIE=输出端点能产生一个CPU中断请求TXDIE=输出端点不能产生一个CPU中断请求。DTXDIE位:端点输出中断允许位。可读写位TXDIE=输出端点能产生一个CPU中断请求TXDIE=输出端点不能产生一个CPU中断请求。DRXDIE位:端点接收中断允许位。可读写位RXDIE=输入端点能产生一个CPU中断请求RXDIE=接收端点不能产生一个CPU中断请求。USB寄存器USB寄存器)USB中断寄存器(UIR)UIR的地址:$A定义如下:该寄存器所有的位均为只读位。DEOPF位:EOP检测标志位。EOPF=EOP被检测到EOPF=EOP没有被检测到。DRSTF位:USB复位标志位。在D和D上当一个合法的复位信号状态被检测到该位被置。DTXDF位:端点输出标志位。当存放在端点输出缓冲区中的数据被送出并且接收到一个从主机发送的ACK握手包该位被置。DRXDF位:端点数据接收标志位。当USB模块接收到了一个数据包并返回一个ACK握手包后该位被置。DTXDF位:端点输出标志位。当存放在端点输出缓冲区中的数据被送出并且一个从主机发送的ACK握手包被接收到该位被置。DRESUMF位:唤醒标志位。当SUSPND位置并且USB总线被激活该位被置。DTXDF位:端点输出标志位。当存放在端点输出缓冲区中的数据被送出并且一个从主机发送的ACK握手包被接收到该位被置。DRXDF位:端点数据接收标志位。当USB模块接收到了一个数据包并返回一个ACK握手包后该位被置。USB寄存器USB寄存器)USB中断寄存器(UIR)UIR的地址:$B定义如下:该寄存器所有的位均为只写位。DEOPFR位:EOP标志位复位。写“”到该位将清EOPF位写“”到该位不产生任何影响。复位将清该位。DRSTFR位:清复位指示器位。写“”到该位将清RSTF位写“”到该位不产生任何影响。复位将清该位。DTXDFR位:端点输出标志位复位。写“”到该位将清TXDF位写“”到该位不产生任何影响。复位将清该位。DRXDFR位:端点数据接收标志位复位。写“”到该位将清RXDF位写“”到该位不产生任何影响。复位将清该位。DTXDFR位:端点输出标志位复位。写“”到该位将清TXDF位写“”到该位不产生任何影响。复位将清该位。DRESUMFR位:唤醒标志位复位。写“”到该位将清RESUMF位写“”到该位不产生任何影响。复位将清该位。DTXDFR位:端点输出标志位复位。写“”到该位将清TXDF位写“”到该位不产生任何影响。复位将清该位。DRXDFR位:端点数据接收标志位复位。写“”到该位将清RXDF位写“”到该位不产生任何影响。复位将清该位。USB寄存器USB寄存器)USB控制寄存器(UCR)UCR的地址:$B定义如下:DTSEQ位:端点输出序列位。该位为可读可写位它决定端点的下一个IN事务发何种类型的数据包(DATA或者DATA)。TOSEQ=表示端点下一个发送的是DATA包TOSEQ=表示端点下一个发送的是DATA包。复位将清除该位。DTXE位:端点输出允许位。该位为可读可写位当USB主控制器向端点发送一个IN事务时该位可以允许发送。当数据准备好发送后软件应该将该位置“”当端点没有数据被发送时该位必须被清“”。如果该位是“”或者TXDF位为“”USB设备将对端点的任何一个IN事务返回一个NAK握手包。复位将清除该位。TXE=,表示数据准备好可以发送TXE=表示数据没准备好以NAK包作为回应。DRXE位:端点接收允许位。该位为可读可写位当USB主控制器向端点发送一个OUT事务时该位可以允许接收。当准备好接收数据后软件应该将该位置“”当没有数据被接收时该位必须被清“”。如果该位是“”或者RXDF位为“”USB设备将对端点的任何一个OUT事务返回一个NAK握手包但是对SETUP事务将不作反应。复位将清除该位。RXE=,表示可以接收数据RXE=表示不可以接收数据以NAK包作为回应。D~DTPSIZ~TPSIZ位:端点输出数据包大小。这些位为可读可写位这几位存储的是端点下一个IN事务发送数据的个数。复位将清除这几位。USB寄存器USB寄存器)USB控制寄存器(UCR)UCR的地址:$C定义如下:DTSEQ位:端点输出序列位。该位为可读可写位它决定端点的下一个IN事务发何种类型的数据包(DATA或者DATA)。TSEQ=表示端点下一个发送的是DATA包TSEQ=表示端点下一个发送的是DATA包。复位将清除该位。DSTALL位:端点强制发STALL位。该位为可读可写位当USB主控制器发送一个IN事务或OUT事务时该位将使端点发送一个STALL握手包。复位将清除该位。STALL=表示发送STALL握手包。STALL=默认状态。DTXE位:端点输出允许位。该位为可读可写位如果UCR寄存器中的ENABLE位(端点使能位)被置当USB主控制器向端点发送一个IN事务时该位可以允许发送。当数据准备好发送后软件应该将该位置“”当端点没有数据被发送时该位必须被清“”。如果该位是“”或者TXDF位为“”USB设备将对端点的任何一个IN事务返回一个NAK握手包。复位将清除该位。TXE=,表示数据准备好可以发送TXE=表示数据没准备好以NAK包作为回应。DFRESUM位:强制唤醒位。D~DTPSIZ~TPSIZ位:端点输出数据包大小。这些位为可读可写位这几位存储的是端点下一个IN事务发送数据的个数。复位将清除这几位。USB寄存器USB寄存器)USB控制寄存器(UCR)UCR的地址:$定义如下:DTSEQ位:端点输出序列位。该位为可读可写位它决定端点的下一个IN事务发何种类型的数据包(DATA或者DATA)。TSEQ=表示端点下一个发送的是DATA包TSEQ=表示端点下一个发送的是DATA包。复位将清除该位。DSTALL位:端点强制发STALL位。该位为可读可写位当USB主控制器发送一个IN事务或OUT事务时该位将使端点发送一个STALL握手包。复位将清除该位。STALL=表示发送STALL握手包。STALL=默认状态。DTXE位:端点输出允许位。该位为可读可写位如果UCR寄存器中的ENABLE位(端点使能位)被置位当USB主控制器向端点发送一个IN事务时该位可以允许发送。当数据准备好发送后软件应该将该位置“”当端点没有数据被发送时该位必须被清“”。如果该位是“”或者TXDF位为“”USB设备将对端点的任何一个IN事务返回一个NAK握手包。复位将清除该位。TXE=,表示数据准备好可以发送TXE=表示数据没准备好以NAK包作为回应。DRXE位:端点接收允许位。端点接收允许位。该位为可读可写位当USB主控制器向端点发送一个OUT事务时该位可以允许接收。当准备好接收数据后软件应该将该位置“”当没有数据被接收时该位必须被清“”。如果该位是“”或者RXDF位为“”USB设备将对端点的任何一个OUT事务返回一个NAK握手包。复位将清除该位。RXE=,表示可以接收数据RXE=表示不接收数据以NAK包作为回应。D:TPSIZ:位:端点输出数据包大小。这些位为可读可写位这几位存储的是端点下一个IN事务发送数据的个数。复位将清除这几位。USB寄存器USB寄存器)USB控制寄存器(UCR)UCR的地址:$A定义如下:DTXST位:端点传输起始标志。该位为表示IN传输包发生在SETUPOUT包之前为表示IN传输包发生在SETUPOUT包之后。该位为只读位。DTXSTR位:写到该位将清除TXST位写不产生影响。DOSTALL位:端点的OUT包STALL位。该位为表示发送STALL握手信号为默认值。DISTALL位:端点的IN包STALL位。该位为表示发送STALL握手信号为默认值。DPULLEN位:上拉允许位。该位为表示D脚有内部上拉表示D脚没接内部上拉。DENABLE位:端点允许位。为允许为不允许。DENABLE位:端点允许位。为允许为不允许。USB寄存器USB寄存器)USB控制寄存器(UCR)UCR的地址:$B定义如下:DFUSBO位:该位若为表示使能USB输出缓冲该位若为表示USB模块处于默认操作状态。DFDP位:该位若为表示D处于输出高电平状态该位若为表示D处于输出低电平状态。DFDM位:该位若为表示D处于输出高电平状态该位若为表示D处于输出低电平状态。USB寄存器USB寄存器)USB状态寄存器(USR)USR的地址:$E定义如下:DRSEQ位:端点接收序列位。为表示上一次端点接收的是DATA为表示上一次端点接收的是DATA。DSETUP位:SETUP包检测位。为表示上一次端点接收的是一个SETUP包为表示上一次端点接收的不是SETUP包。D~DRPSIZ~RPSIZ位:端点接收数据包大小。USB寄存器USB寄存器)USB状态寄存器(USR)USR的地址:$E定义如下:DRSEQ位:端点接收序列位。为表示上一次端点接收的是DATA为表示上一次端点接收的是DATA。DTXACK位:ACK包传输位。为表示上一次端点发送的是一个ACK包为表示上一次端点发送的不是ACK包。DTXANK位:NAK包传输位。为表示上一次端点发送的是一个NAK包为表示上一次端点发送的不是NAK包。DTXSTL位:STALL包传输位。为表示上一次端点发送的是一个STALL包为表示上一次端点发送的不是STALL包。D~DRPSIZ~RPSIZ位:端点接收数据包大小。USB寄存器)USB端点数据寄存器(UEDUED)UEDUED的地址是从$$。可读可写。)USB端点数据寄存器(UEDUED)UEDUED的地址是从$$F。只写。)USB端点数据寄存器(UEDUED)UEDUED的地址是从$$。可读可写。USB寄存器)USB端点数据寄存器(UEDUED)UEDUED的地址是从$$。可读可写。)USB端点数据寄存器(UEDUED)UEDUED的地址是从$$F。只写。)USB端点数据寄存器(UEDUED)UEDUED的地址是从$$。可读可写。USB中断USB中断USB模块中断有三种类型:当接收或发送事务完成时产生事务结束中断当USB总线悬挂后被激活时产生唤醒中断当检测到一个低速的包结束信号时产生结束中断。所有的中断共享同一个中断向量由中断程序区分产生的是什么中断。JBUSB通信编程JBUSB通信编程USB中断处理流程图USB中断服务程序USB中断服务程序端点和端点利用查询方式发送和接收数据的编程方法包括:USB初始化、发送字节和接收字节。()USB初始化()发送数据子程序()接收数据子程序端点发送、接受数据的流程图端点发送、接受数据的流程图USB中断服务程序USB中断服务程序()USB初始化USB中断服务程序USB中断服务程序()发送数据子程序USB中断服务程序USB中断服务程序()发送数据子程序USB中断服务程序USB中断服务程序()接收数据子程序PC机方USB编程实例PC机方USB编程步骤.选择并安装合适的USB驱动程序.选择一种高级语言参照驱动程序的相关文档进行编程()

精彩专题

职业精品

上传我的资料

热门资料

资料评价:

/ 75
所需积分:0 立即下载

意见
反馈

返回
顶部

Q