AT89C51单片机USB接口驱动和应用程序的开发毕业论文.doc

上传人:laozhun 文档编号:2392414 上传时间:2023-02-17 格式:DOC 页数:59 大小:988.50KB
返回 下载 相关 举报
AT89C51单片机USB接口驱动和应用程序的开发毕业论文.doc_第1页
第1页 / 共59页
AT89C51单片机USB接口驱动和应用程序的开发毕业论文.doc_第2页
第2页 / 共59页
AT89C51单片机USB接口驱动和应用程序的开发毕业论文.doc_第3页
第3页 / 共59页
AT89C51单片机USB接口驱动和应用程序的开发毕业论文.doc_第4页
第4页 / 共59页
AT89C51单片机USB接口驱动和应用程序的开发毕业论文.doc_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《AT89C51单片机USB接口驱动和应用程序的开发毕业论文.doc》由会员分享,可在线阅读,更多相关《AT89C51单片机USB接口驱动和应用程序的开发毕业论文.doc(59页珍藏版)》请在三一办公上搜索。

1、北方民族大学学士学位论文论文题目: AT89C51单片机USB接口驱动和应用程序的开发 院(部)名 称: 电信学院 学 生 姓 名: 杨闯 专 业: 测控技术与仪器 学 号: 20060249 指导教师姓名: 周春艳 论文提交时间: 2010年5月24日 论文答辩时间: 2010年5月29日 学位授予时间: 北方民族大学教务摘 要通用串行总线USB是一种新兴的并逐渐取代其他接口标准的数据通信标准。USB,由于速度快,使用方便灵活,易于扩展,支持即插即用,成本低廉等一系列优点,得到了广泛的应用。本论文以基于USB总线的数据采集系统的研制过程为主要内容,阐述了利用CH372与ATMEL的AT89C

2、51等组成的一套数据采集系统的设计方案、开发方法和开发过程,并给出了具体实现方案。论文首先简要介绍了USB总线的相关内容,然后介绍了数据采集系统的设计。数据采集系统的设计包括硬件设计、固件程序开发、驱动程序开发和应用程序开发四部分。在硬件设计部分,首先介绍了设计中所用的CH372的性能和特点,然后给出了具体硬件设计方案,并对设计中应该注意的问题进行了说明。驱动和应用程序主要完成USB设备的读写和即插即用功能,并提供一个友好的人机界面,对数据采集系统进行控制并显示采集后的数据。本论文已完成了基于USB总线的数据采集系统的设计,用其实现了基本的数据采集功能。使用USB总线传输数据,为数据采集系统与

3、计算机之间的通讯开辟了新的道路。关键词:USB、驱动程序、应用程序、AT89C51、CH372AbstractUniversal serial bus USB is one kind of emerging and replace other interface standards of data communication standards. USB, due to fast, convenient and flexible easy to expand, to support plug and play, low cost advantages, such as widely appli

4、cation.The paper is mainly concerned with design process of data acquisition system that is based on USB bus. The design scheme, developing method and developing process of a suit of data acquisition system used with CH372 and ATMELs AT89C51 are expatiate. In addition, the paper also gives the mater

5、ial realization scheme.At fist, the paper introduces the protocol of USB bus in brief, and then discusses the design of data acquisition system, which includes four parts, hardware design, firmware design, device driver and application program. In hardware part, the performance of CH372 is fistly de

6、scribed; then the hardware scheme are given in detail; the questions which should be paid attention to in design is explained. Drivers and applications of the main equipment and USB plug and play function, and provide a friendly human-machine interface, control of data acquisition system and display

7、 the data collection.The paper has finished the design of data acquisition system based on USB bus and realized the basal data acquisition foundation. Using USB bus to transfer data blazed a way in communication between data acquisition system and computer.Keywords: USB、Drive、Applications、AT89C51、CH

8、372目 录第1章 绪论11.1 引言11.2 USB的特点11.3 USB实时数据采集系统的实现方案3第2章 USB体系简介42.1 体系概述42.2 USB的传输类型52.3 USB的设备状态7第3章 USB数据采集系统的硬件设计113.1 USB 接口方案113.2 USB接口的硬件设计113.2.1 CH372简介113.2.2 USB接口的硬件电路设计163.3 USB接口硬件的实现173.3.1时钟电路173.3.2 复位电路183.3.3 A/D转换电路183.3.4 CH372接口电路193.3.5 单片机扩展RAM接口电路20第4章 USB数据采集系统设备固件编写214.1

9、固件设计方案及工作流程214.1.1固件的设计思想214.1.2固件的工作流程214.2固件开发224.2.1主循环模块(MAINLOOP.C)224.2.2外接口模块224.2.3 CH375_INIT初始化模块234.2.4上传数据块模块234.2.5上传中断数据模块23第5章 USB设备驱动程序及应用程序245.1驱动开发工具的选择245.2 WDM概述245.3 主要模块设计255.3.1 初始化模块255.3.2即插即用管理模块265.3.3IO控制模块285.4 应用程序设计与实现285.4.1 操作例程及初始化285.4.2 设备读写接口程序的实现295.4.3 数据传输程序的设

10、计和实现305.5 用户应用程序的具体实现34结束语35致谢36参考文献37附录一38附录二39第1章 绪论1.1 引言现代工业生产和科学研究对数据采集系统的要求日益提高,目前比较通用的方法已逐渐不能适应其要求。例如在PC机及工控机内安装数据采集板卡,如A/D卡、422卡或485卡等。这些数据采集系统存在以下缺陷:安装麻烦;价格昂贵;受计算机插槽数量、地址、终端资源的限制,可扩展性差;在一些电磁干扰性强的测试现场,无法专门对其做电磁屏蔽,导致采集的数据失真等。USB是Universal Serial Bus的简称,译为通用串行总线。USB是一种外设总线,所不同的是,它是由Intel、Compa

11、q、Digital、IBM、Microsoft、NEC及Northern Telecom等几家计算机和通信公司联合制订的,并成为了行业标准。目前USB 1.1标准得到了广泛支持。2000年初,USB 2.0标准问世,USB 2.0以480Mb/s的传输速率得到了广泛关注,在一定基础上代表了计算机接口的发展趋势。1.2 USB的特点USB作为新一代的计算机接口,具备如下特点:(1)低成本。为了把外围设备连接到计算机上去,USB提供了一种低成本的解决方案,所有系统的智能机制都驻留在主机并嵌入芯片组中,方便了外设的制造。(2)热插拔。USB实现了真正的“即插即用”功能。设备连接后由USB自检测,并且

12、由软件自动配置,完成后立刻就能使用,不需要用户进行干涉。在操作系统方面,由主机负责扫描总线上的所有接口,自动识别USB设备的插拔,并相应的加载或卸载设备驱动程序,实现了即插即用功能。(3)单一的连接器类型。USB定义了一种简单的连接器,仅使用一个四芯电缆,即可用来连接任何一个USB设备。多个连接器可以通过USB集线器连接。(4)最多可通过网络连接127个设备,每个USB总线支持127个设备的连主机 RootHubRoot Hub设备设备设备设备设备设备HubHub图1.1 树形拓扑结构示意图接,其树形拓扑结构如图1.1所示。在图1.1中,每个Hub集线器可向上连接到另一个Hub,深度可达5层。

13、由于协议中规定使用8位数据寻址,因此每一个主机最多可连接127个设备。(其中0x00地址用于缺省地址,在设备刚入网或复位时使用)(5)如图1.1所示,无论多少个设备连接在系统中,主机只给USB主控制器分配固定的I/O地址和中断向量,不会额外占用系统资源。(6)USB有两种设备传输率:1.5Mb/s和12Mb/s,并且两种速率能够自适应转换。USB 2.0的传输速率可达480Mb/s。(7)独立供电。USB设备提供总线供电和自供电两种方式,通过集线器向设备提供电源。当外设的电源要求电压为5伏且电源小于500mA时,可以直接从USB总线获取电源,这样USB设备就无需专用电源线,从而降低了设备的成本

14、。(8)错误检测和恢复。USB事物处理包括错误检测机制,它们用于确保数据无错误发送。在发生错误时,事物处理可以重新进行。(9)电源保护。如果连续3ms没有总线活动,则USB会自动进入挂起状态,处于挂起状态的设备消耗的电流不超过500uA。(10)支持四种类型的传输方式。USB定义了四种不同的传输类型来满足不同设备的需求,这些传输类型包括等待传输、块传输、中断传输和控制传输。基于USB总线的数据采集系统,充分利用了USB总线的优点,有效解决了传统数据采集系统的缺陷,是数据采集系统设计的一种较好选择。1.3 USB实时数据采集系统的实现方案USB数据采集系统的硬件模块包括多路模拟开关、A/D转换器

15、、微控制器和USB接口芯片等。硬件总体结构如图1.2所示。微控制器USB芯片 模拟开关A/D转换器PC机 多 路 信 号图1.2 USB实时数据采集系统的硬件模块系统的模拟开关、A/D转换器均采用传统的设计方法,根据系统功能、采集的精度、速率、通道数等诸元素选择合适的芯片。微控制器采用了Atmel公司的AT89C51,USB接口芯片采用CH372。USB数据采集系统的软件包括USB设备驱动程序、设备固件、主机端应用程序三部分。我主要负责使用Delphi语言进行USB设备驱动程序和应用的开发。其中设备固件对数据采集系统进行控制,还要控制USB接口芯片实现USB协议。这要求设计者不仅熟悉Delph

16、i程序设计,还要熟悉USB协议Windows核心态。第2章 USB体系简介2.1 体系概述USB 体系包括“主机”、“设备”以及“物理连接”三个部分。其中主机是一个提供USB 接口及接口管理能力的硬件、软件及固件的复合体,可以是PC,也可以是OTG 设备。从图2.1中可以看出USB采用分层的星型拓扑来连接所有的USB设备。(图中的Func代表USB设备):图2.1 USB体系图在任何USB系统中都只有一个主机,它是USB通信的中心。主机管理总线,就必须知道总线上有哪些设备,以及每个设备的功能。总线上的各个设备有不同的要求,这些设备都在企图同时性的传输数据。主机必须让每一个设备都可以正确地发送和

17、接收数据。主机所完成的USB相关工作:1、为外围设备提供电源;2、检测设备的连接和移除;3、检查数据的错误;4、管理数据通信、5、与外围设备交换数据。USB 集线器最基本的作用是作为与设备融合为一体的分离器和中继器。集线器在 USB 设备和主机之间提供了电接口。集线器直接负责支持能使 USB 用户友好并让用户方便易用的各种属性。集线器提供了超越主机实施所能提供的额外结合点,并重播了在面对上行端口及面对下行端口上查看的所有通信量。集线器可以检测其下行端口上的连接与断开情况,并将此信息报告给主机。此外,集线器必须能够支持与下行端口相连的 USB 外设的所有速度或类型, 集线器必须能够从所有因连接目

18、标错误条件引发的总线故障中检测和恢复。此外,集线器负责为其下行端口管理电源,并将所有的电源问题报告给主机从而通知用户。USB协议规范为集线器定义了两种不同的电源类型:总线供电和自加电。USB设备是带有USB接口并可以完成特定功能的外设,它通过USB总线发送和接收数据/控制信息。每个USB设备都包含设置信息,来描述该设备的性能和所需资源。在功能部件使用前,主机要对其进行设置。设置信息包括USB带宽分配,选择设备的设置信息等。目前USB设备是USB总线中发展最快的部分,常见USB外设有:鼠标或光笔、键盘等。2.2 USB的传输类型USB通过通道在主机缓冲区与设备端点间传送数据。在消息通道中传递的数

19、据具有USB定义的格式,它在数据净荷区中包含的数据允许具有设备指定的格式。USB要求任何在通道上传送的数据均被打包,数据的解释工作由客户层软件和应用层软件负责。USB协议中规定了四种不同的数据传送类型,每种传送类型在以下的几个传送特征上会有不同: USB规定的数据格式; 信息流的方向; 数据净荷区的长度限制; 总线访问的限制; 延时的限制; 出错处理。USB设备的设计者可以决定设备上每个端点的能力。一旦为这个端点建立了一个通道,这个通道的绝大多数传送特征也就固定下来了,一直到这个通道被取消为止。USB定义了4种传送类型:(1) 控制传送 控制传输属于突发式、非周期性的,由主机软件发起的请求或响

20、应的通信,它用于支持在客户软件和功能设备之间的关于设置信息、命令信息、状态信息的传送。控制传送一般由三个阶段组成:首先是设置阶段,通过(Setup Stage)包建立联系,把请求信息从主机传到它的应用设备;接下来是数据阶段(Data Stage),零个或多个数据传送事物按照Setup包中指明的方向传送数据;最后是状态信息的回传,应用设备将状态信息传到主机。控制传送使用的是消息通道上双向信息流。所以,一旦一个控制通道被确认之后,这个通道就使用了具有某个端点号的两个端点,一个输入,一个输出。(2) 同步传送 USB要求等时传送能提供以下几点:固定的延迟下,确保对USB带宽的访问;只要数据能提供得上

21、,就能保证通道上的恒定数据传送速度;由于错误而造成的传送失败时,并不重传数据。只有高速设备可以使用等时传送。USB设备要求一个帧内不能有超过90%的时间用于等时传送或中断传送(因为吗,每帧都得保留10%的时间用于控制传送)。等时传送不支持因总线错误而进行的重传。接收器可以判断是否发生了一个错误。一般情况下,可以由握手信号来通知发送者包是否被成功的接收。对于等时传送来说,定时比正确性和重传更重要。考虑到总线的错误率较低,协议认为传送一般均能成功。同步接受者可以判断自己是否在一个帧内错过了一些数据,而且知道丢失了多少数据。(3) 中断传送 中断传送是低频率、固定延迟的通信。中断传送适用于那些请求传

22、输的频率不高,但是必须在指定时间内完成传输的数据。一般的应用包括USB的键盘、鼠标、游戏杆和集线器的状态报告。中断传输需要快速地向主机报告当前的状态,这是由设备的属性和使用的场合所决定的。要在USB上进行中断传送,必须在每个周期对端口进行访问。主机无法知道一个端口何时准备好一个中断传送,除非它访问这个端点,并同时请求一个中断传送,等待回答。如果端口无数据需要中断传送,就请求其回送一个NAK信号。如果端口传送数据时会有中断情况发生,一定要用中断传送,以防中断产生时,客户软件误以为IRP结束。长度为0的数据净荷区的传送是合法的,而且对某些实现是很有用的。低速、全速和高速设备都支持中断传送。中断传送

23、支持像游戏手柄,鼠标和键盘等输入设备,这些设备与主机间数据传输量小,无周期性,但对响应时间敏感,要求马上响应。(4) 批量传送 批量传送支持在不确定时间进行的相当大量的数据通信,它可以利用任何可获得的带宽,批量传送有以下特点: 可以获得带宽访问总线; 如果总线出现错误,传送失败,可进行重发; 可以保证数据必能被发送,但不能保证带宽和延迟;只有当可获得带宽时,批量传送才会发生。如果USB有较多的空闲带宽0则批量传送发生地相对频繁,如果空闲带宽较少,则可能有很长时间没有批量传送发生。通常打印机、扫描仪和数字相机以这种方式与主机联接。2.3 USB的设备状态USB设备状态共有6个,分别是连接(Att

24、ached)、加电(Powered)、缺省(Default)、地址(Address)、配置(Configured)和挂起(Suspended),下面将分别对各个状态的具体含义进行介绍:(1) 连接状态 连接状态又称接入状态,表示设备刚接入集线器的某下游接口上,如果此集线器是配置好的,集线器会通过中断传输通知给运行于主机端的集线器驱动程序,设备进入加电状态;否则设备将停留在接入状态。(2) 加电状态设备接入总线后带电时的状态称为加电状态。通过总线的端口获得电源的模式称为总线供电模式(Bus-powered)。设备对电源支持能力是通过配置描述符(Configuration Descriptor)反

25、映的。一个设备可以既支持自供电模式,又支持总线供电模式。自供电的接口功能和总线供电的接口功能是有区别的。当设备处于加电状态后,集线器发出一个复位命令,激活连接端口,使连接的设备可以与主机进行通信,这时设备进入缺省状态。(3) 缺省状态缺省状态表示设备使用总线的缺省地址与USB主机进行通信时的状态。设备在加电以后,端口在收到复位信号之前不应响应总线的任何传输,因为它还没有地址。等到复位完成后,此设备获得了肚子使用总线缺省地址0的权力,所以此状态为缺省状态。总线的缺省地址0是被总线上所有设备共享的,每一个时刻只能有一个设备处于缺省状态,这种按次序占用总线缺省地址的功能一般由集线器驱动程序实现。通过

26、缺省地址,主机可以识别这个新接入的设备,并通过设备的默认控制端点0获得它的设备描述符(通过Get_Descriptor命令),并为设备设置一个唯一的设备地址(通过Set_Address命令)当设备的唯一地址被成功设置后,设备将进入地址状态。(4) 地址状态地址状态表示设备获得一个唯一的设备地址。从此之后,主机将通过此地址识别这个设备。当USB设备处于挂起状态时,它仍然保持这个地址不变。进入地址状态时,为了使设备正常工作,USB主机会对此设备进行进一步的配置,包括获得设备的描述符、各种配置符以及每种配置描述符下的接口描述符和端点描述符等。这些工作完成后设备将进入配置完成状态(简称配置状态)。(5

27、) 配置状态配置状态表示主机激活了设备的某个配置,从此设备将在此配置下工作。在USB设备正常工作以前,设备必须被正确配置。从设备的角度来看,它必须保存主机为它配置的当前活动的配置信息。需要注意的是,即使是在I/O设备已经处于设置的状态,主机仍然可以发送控制请求。实际上如果设备有多个配置,主机可以发送一个Set_Configuration请求来指配置使I/O设备返回到它的地址状态,暂停设备传输活动。(6) 挂起状态如果一个I/O设备检测到总线没有活动的时间达到3ms,它就要转移到低功耗的挂起状态,在这个状态下它从总线取得的电流不大于0.5mA。这时,USB设备保持当前的内部状态,包括它的设备地址

28、及配置值信息等。总线没有活动的时间达到3ms,表明主机已经停止发送SOF包。这时因为主机关机或进入睡眠状态。如果主机关机,则没有必要使大多数I/O设备保持加电状态。在挂起状态下,总线上的任何活动将导致I/O设备从挂起状态返回,进入活动状态。I/O设备也可以使PC主机走出睡眠状态,这种能力称为REMOTE_WAKEUP。只有在这种情况下,才可以由I/O设备启动一个信号。例如,若I/O设备是一部电话,电话铃响,它就要唤醒主机。这种能力必须在设备配置描述符中预先做出说明,使主机对这样的事件有所准备。I/O设备要先驱动一个远程唤醒信号向它的本地集线器报警,集线器再把这个信号传到根集线器,唤醒主机。总线

29、活动挂起可能是因为主机本身进入了挂起状态。另外,USB设备必须在所连接的集线器端口失效时进入挂起状态,这就是所谓的选择性挂起(Selective Suspend)。当USB设备接上或USB设备移开的时候,主机启动一个被称作总线枚举(bus enumeration)的进程,来标识并管理设备状态的改变,当USB设备接上一个加电端口时,系统将采取以下操作:1USB设备所连的集线器通过其通向主机的状态改变通道向主机汇报本USB设备已连接上。此时,USB设备处于加电状态,它所连接的端口是无效的。2主机通过寻问集线器决定此次状态改变的确切含义。3主机一旦得知新设备已连上以后,它至少等待100ms以使得插入

30、操作的完成以及设备电源稳定工作。然后主机发出端口使能及复位命令给那个端口。4集线器将发向端口的复位信号持续10ms。当复位信号撤消后,端口已经有效了。这时USB设备处于缺省状态,并且可从VBUS汲取小于100mA的电流,所有设备寄存器及状态己经被复位,设备可对缺省地址产生响应。5主机给设备分配一个唯一的地址,设备转向地址状态(Address State)。6在USB设备接受设备地址之前,它的缺省控制通道(Default Control Pipe)在缺省地址处自然是可寻址的,主机通过读取设备描述表,判决设备缺省通道的地址。7、设备驱动程序开始收集关于设备的信息,包括接口和端点。如果设备有多个配置

31、,驱动程序通常也要全部读出。8、当设备已被配置好并且可以运行时,它将进入配置状态。第3章 USB数据采集系统的硬件设计系统的模拟开关、A/D转换器均采用传统的设计方法。本章主要介绍USB接口的设计。3.1 USB 接口方案USB接口设计中有三种芯片选择方案:第一种方案是选用设计成标准USB控制器的低层芯片,例如Cypress公司的CY7C63XXX系列,这类芯片是完全按照USB协议设计的,但由于其结构不同于其它常用控制芯片,开发者需要较长的学习时间,不利于快速开始一个项目;另一种方案是采用具备USB通信功能的单片机,例如Intel/Cypress的8X931、Cypress的EZ-USB,这些

32、单片机采用开发者熟悉的结构和指令集,处理能力强,构成系统的电路简单,调试方便,是目前常用的一种方案。但由于具备了USB接口,与过去的开发系统通常不兼容,需要购买新的开发系统,投资较高;第三种方案是采用连接到一般微控制器的接口芯片,例如philps的PDIUSBD11/12、National半导体公司的USBN960X、南京沁恒电子有限公司的CH372等,它可用一般的单片机开发系统进行开发,不需购买新系统,而且USB芯片本身价格较便宜,所以这种接口方案成本很低。另外由于采用一般单片机,熟悉单片机的开发人员可以很快的开始一个项目。其缺点是需要两个芯片,电路设计和调试比较复杂,接口性能由于开发者的因

33、素差异较大。根据本系统的设计要求和实际情况,在设计中选择了第三种方案。3.2 USB接口的硬件设计3.2.1 CH372简介CH372是一个USB总线的通用设备接口芯片。在本地端,CH372具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机/DSP/MCU/MPU等控制器的系统总线上;在计算机系统中,CH372的配套软件提供了简洁易用的操作接口,与本地端的单片机通讯就如同读写文件。CH372的主要特点包括以下方面:(1)全速USB设备接口,兼容USB V2.0,即插即用,外围元器件只需要晶体和电容。(2)提供一对主端点和一对辅助端点,支持控制传输、批量传输、中断传输。(3

34、)具有省事的内置固件模式和灵活的外部固件模式。(4)内置固件模式下屏蔽了相关的USB协议,自动完成标准的USB枚举配置过程,完全不需要本地端控制器作任何处理,简化了单片机的固件编程。(5)通用Windows驱动程序提供设备级接口,通过DLL提供API应用层接口。(6)产品制造商可以自定义厂商标识(Vendor ID)和产品标识(Product ID)。(7) 通用的本地8位数据总线,4线控制:读选通、写选通、片选输入、中断输出。(8) 主端点上传下传缓冲区各64字节,辅助端点上传下传缓冲区各8字节。(9) 支持5V电源电压和3.3V电源电压,支持低功耗模式。表3-1 CH372引脚CH372用

35、到的命令如下表3-2所示:表3-2 CH372的命令如果命令的输出数据是操作状态,参考表3-3。表3-3 操作状态命令GET_IC_VER:该命令获取芯片及固件版本。返回的一个字节数据是版本号,其位7为1,位6为0,位5位0为版本号。如果返回值为0B7H,去掉位7的1,实际版本号为37H。命令ENTER_SLEEP:该命令使CH372芯片进入低功耗睡眠挂起状态(部分型号的芯片不支持该功能)。进入低功耗状态后,CH372芯片的时钟停振,从而节约电能,直到检测到以下两种情况之一才退出低功耗状态:一是检测到USB总线有信号;二是单片机向CH372芯片写入新的命令(没有输入数据的命令,例如GET_IC

36、_VER命令)。通常情况下,CH372芯片从低功耗状态退出并恢复到正常工作状态需要几毫秒的唤醒时间,当完全恢复到正常工作状态后,CH372将产生USB_INT_WAKE_UP事件中断。命令RESET_ALL:该命令使CH372执行硬件复位。通常情况下,硬件复位在40ms时间之内完成。命令CHECK_EXIST:该命令测试工作状态,以检查CH372是否正常工作。该命令需要输入1个数据,可以是任意数据,如果CH372正常工作,那么CH372的输出数据是输入数据的按位取反。例如,输入数据是57H,则输出数据是A8H。另外,在CH372复位后未收到任何命令之前,从其并口通常是读出数据00H。命令CHK

37、_SUSPEND:该命令设置检查USB总线挂起状态的方式。该命令需要输入两个数据,分别是数据10H和检查方式。检查方式有2种:00H说明不检查USB挂起(上电或复位后的默认值);04H说明以50ms为间隔检查USB挂起。USB总线挂起状态包括两种情况:一是USB信号线物理断开,完全没有USB信号;二是USB主机端停止发送SOF信号,也就是USB主机端要求USB设备进入挂起状态。当检查到USB总线挂起状态后,CH372将产生USB_INT_USB_SUSPEND事件中断。命令SET_USB_ID:该命令设置USB的厂商识别码Vendor-ID和产品识别码Product-ID。该命令需要输入4个数

38、据,依次是厂商VID的低8位、厂商VID的高8位,产品PID的低8位,产品PID的高8位。如果需要设置ID,那么该命令必须在SET_USB_MODE命令之前执行。命令SET_USB_MODE:该命令设置USB工作模式。该命令需要输入1个数据,该数据是模式代码:模式代码为00H时切换到未启用的USB设备方式(上电或复位后的默认方式);模式代码为01H时切换到已启用的USB设备方式,外部固件模式;模式代码为02H时切换到已启用的USB设备方式,内置固件模式。在USB设备方式下,未启用是指USB总线D+的上拉电阻被禁止,相当于断开USB设备;启用是指USB总线D+的上拉电阻有效,相当于连接USB设备

39、,从而使USB主机能够检测到USB设备的存在。通过设置是否启用,可以模拟USB设备的插拔事件。通常情况下,设置USB工作模式在20uS时间之内完成,完成后输出操作状态。命令GET_STATUS:该命令获取CH372的中断状态并通知CH372取消中断请求。当CH372向单片机请求中断后,单片机通过该命令获取中断状态,分析中断原因并处理。表3-4 中断状态字节下面是中断状态的分析说明。在内置固件模式的USB设备方式下,单片机只需要处理表中标注为灰色的中断状态,CH372内部自动处理了其它中断状态。表3-5 中断状态值命令UNLOCK_USB:该命令释放当前USB缓冲区。为了防止缓冲区覆盖,CH37

40、2向单片机请求中断前首先锁定当前缓冲区,暂停所有的USB通讯,直到单片机通过UNLOCK_USB命令释放当前缓冲区,或者通过RD_USB_DATA命令读取数据后才会释放当前缓冲区。该命令不能多执行,也不能少执行。命令RD_USB_DATA0:该命令从当前USB中断的端点缓冲区中读取数据块。首先读取的输出数据是数据块长度,也就是后续数据流的字节数。数据块长度的有效值是0至64,如果长度不为0,则单片机必须将后续数据从CH372逐个读取完。该命令与RD_USB_DATA命令的唯一区别是后者在读取完成后还会自动释放当前USB缓冲区(相当于再加上UNLOCK_USB命令)。命令WR_USB_DATA5

41、:该命令向USB端点1的上传缓冲区写入数据块,在内置固件模式下,USB端点1就是中断端点。首先写入的数据是数据块长度,也就是后续数据流的字节数。数据块长度的有效值是0至8,如果长度不为0,则单片机必须将后续数据逐个写入CH372。命令WR_USB_DATA7:该命令向USB端点2的上传缓冲区写入数据块,在内置固件模式下,USB端点2就是批量端点。首先写入的输入数据是数据块长度,也就是后续数据流的字节数。数据块长度的有效值是0至64,如果长度不为0,则单片机必须将后续数据逐个写入CH372。3.2.2 USB接口的硬件电路设计图3-1 CH372的引脚图CH372芯片的被动并行接口包括:8位双向

42、数据总线D7D0、读选通输入引脚RD#、写选通输入引脚WR#、片选输入引脚CS#、中断输出引脚INT#以及地址输入引脚A0。通过被动并行接口,CH372芯片可以很方便地挂接到各种8位单片机、DSP、MCU的系统总线上,并且可以与多个外围器件共存。CH372芯片的RD#和WR#可以分别连接到单片机的读选通输出引脚和写选通输出引脚。CS#由地址译码电路驱动,用于当单片机具有多个外围器件时进行设备选择。INT#输出的中断请求是低电平有效,可以连接到单片机的中断输入引脚或者普通I/O引脚,单片机可以使用中断方式或者查询方式获知中断请求。当WR#为高电平并且CS#和RD#及A0都为低电平时,CH372中

43、的数据通过D7D0输出;当RD#为高电平并且CS#和WR#及A0都为低电平时,D7D0上的数据被写入CH372芯片中;当RD#为高电平并且CS#和WR#都为低电平而A1为高电平时,D7D0上的数据被作为命令码写入CH372芯片中。CH372芯片占用两个地址位,当A0引脚为高电平时选择命令端口,可以写入新的命令,或者读出中断标志;当A0引脚为低电平时选择数据端口,可以读写数据。表3-6 并口I/O操作的真值表(表中X代表不关心此位,Z代表CH372三态禁止)。CH372芯片的UD+和UD-引脚应该直接连接到USB总线上。如果为了芯片安全而串接保险电阻或者电感或者ESD保护器件,那么交直流等效串联

44、电阻应该在5之内。CH372芯片内置了电源上电复位电路,一般情况下,不需要外部提供复位。CH372芯片正常工作时需要外部为其提供12MHz的时钟信号。一般情况下,时钟信号由CH372内置的反相器通过晶体稳频振荡产生。外围电路只需要在X1和X0引脚之间连接一个标称频率为12MHz的晶体,并且分别为X1和X0引脚对地连接一个高频振荡电容。如果从外部直接输入12MHz时钟信号,那么应该从X1引脚输入,而X0引脚悬空。CH372B芯片支持3.3V或者5V电源电压。当使用5V工作电压时,CH372芯片的VCC引脚输入外部5V电源,并且V3引脚应该外接容量为4700pF到0.02uF左右的电源退耦电容。当

45、使用3.3V工作电压时,CH372芯片的V3引脚应该与VCC引脚相连接,同时输入外部的3.3V电源,并且与CH372芯片相连接的其它电路的工作电压不能超过3.3V。3.3 USB接口硬件的实现综合以上对USB的介绍和陈述,USB接口电路可有以下几部分构成(总体电路图的设计见附录一)。3.3.1时钟电路下图为AT89C51的时钟电路图,单片机内部有一个用于构成振荡器的高增益反相放大器,引脚X1和X2分别是此放大器的输入和输出端。单片机的这个放大器与作为反馈元件的片外晶体一起构成了稳定的自激振荡器,发出的脉冲直接送入内部的时钟电路。C1和C2值通常选择30pF,他们对频率有微调作用,震荡的频率范围

46、是1.2MHz至12MHz。CH372的时钟电路与此相似。图3-2 时钟电路3.3.2 复位电路图3-3 复位电路单片机的复位是上电自动复位,它是利用电容来实现的,即上电瞬间RST/Vpd端的电位与Vcc相同,随着充电电流的减少,RST/Vpd的电位逐渐下降。上电复位的最短时间是振荡周期建立时间加上2个机器周期时间,在这个时间内RST/Vpd端的电平应维持高于施密特触发器的下阈值。3.3.3 A/D转换电路1、 用单片机的P2.0口控制两个或门,当P2.0输出高电平时则两个或门关闭,当P2.0输出低电平时,或门开启,由单片机的WR#和RD#分别控制ADC0809的ALE、START和ENABLE。2、 通过一条单片机对ADC0809的写指令便能够启动其A/D转换,当单片机执行读指令时,WR#输出高电平,RD#输出低电平,则ADC0809的ALE引脚为高,ENABLE引脚也为高电平,所以首先地址被锁存,然后数据允许被读出11。3、 单片机的ALE引脚通过外接分频器(除2)为ADC0809提供时钟信号。4、 将ADC0809的EOC通过非门与单片机的INT0#相连,当A/D转换结束时产生中断信号,单片机在中断处理程序中将数据读出。图3-4 A/D转换电路

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号