毕业设计(论文)-基于USB接口波形发生器设计.doc_第1页
毕业设计(论文)-基于USB接口波形发生器设计.doc_第2页
毕业设计(论文)-基于USB接口波形发生器设计.doc_第3页
毕业设计(论文)-基于USB接口波形发生器设计.doc_第4页
毕业设计(论文)-基于USB接口波形发生器设计.doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

目 录1 引言31.1课题背景及意义31.2课题的主要任务和技术指标42 系统总体设计和工作原理52.1方案设计与论证52.2工作原理52.2.1 usb主机52.2.2 usb设备62.3 usb接口芯片72.3.1 usb主控制器芯片82.3.2 usb集线器芯片82.3.3 usb功能设备芯片82.4 usb信号92.4.1 usb信号的发送93 系统硬件电路的设计113.1主控制器单片机an2131qc的特点113.1.1芯片结构113.2系统硬件模块电路的设计133.2.1 电路总体方框图133.2.2 usb接口单元143.2.3 ddfs控制单元143.2.4 波形输出单元154 软件的设计与实现174.1软件功能及作用174.1.1主函数174.2上位机程序设计174.2.2上位机程序功能和界面184.3设备驱动程序194.3.1 固件程序194.3.2 波形功能程序19结 论21参 考 文 献22附录1:原理图23附录2:程 序(主函数部分)26致 谢3534天津工程师范学院2009届本科生毕业设计1 引言当今的计算机外部设备,都在追求高速度和高通用性。为了满足用户的需求,以intel为首的七家公司于1994年推出了usb(universal serial bus,通用串行总线)总线协议,专用于低、中速的计算机外设。目前,usb端口已成为了微机主板的标准端口;而在不久的将来,所有的微机外设,包括键盘、鼠标、显示器、打印机、数字相机、扫描仪和游戏柄等等,都将通过usb与主机相连。这种连接较以往普通并口和串口的连接而言,主要的优点是速度高、功耗低、支持即插即用(plug & play)和维护方便。1.1课题背景及意义 在usb产生之前,外设与pc机的通信主要是通过pc机主板所提供的各种接口来实现的,如isa接口,pci接口,ps/2接口、串行接口、并行接口等。这些老式的接口最初是由ibm公司在20世纪80年代早期设计提出的,存在很多缺陷。1.它们是非共享式接口。只支持单个外设的连接,即在同一时刻一个接口只能连接一个外设;而当前pc机接口的数量是有限的,根本无法满足大量外设连接的需要。这时,pc机的可用接口数就显得越来越紧张了。2.这些接口的体积庞大。它们几乎占用了pc机主板面积的一半,而硬件厂商不可能无限制地增加主板的面积来扩充这些老式的接口。另外,大体积的接口不利于pc机外设的小型化。3.这些接口的规格不一。当用户需要把一些外设连接到pc机时,他们不得不面对种类繁多的i/o扩展槽和外部端口,这会使用户觉得很不方便。4.这些接口采用传统的i/o模式。外设被映射为cpu的i/o地址空间,并被分配一个指定的irq(中断请求),或是一个dma通道。这种模式会带来诸如i/o地址冲突、所指定的irq已被别的外设占用等诸多问题。这时用户需要采用手工的方法来设置一些开关和跳线以重新配置这些设备,有些还必须打开机箱盖,而且在设置完毕后,用户必须重新启动计算机才能使这些新的配置生效。不论对外设的开发者还是使用者来说,这个过程都是相当繁琐的。为了克服老式接口的上述缺陷,pc机制造商和用户迫切需要一种新型的外设连接方式。这时usb应运而生,它是一种快速、双向、同步、廉价,并支持热插拔功能的串行接口。随着usb2.0版本的发布,usb越来越流行,它已经成为一个标准接口,目前市场上出售的所有pc机都完全支持usb,而且很多外设只推出了usb版本,如移动硬盘和电子盘等。可以预见,usb的应用肯定会越来越广泛,其传输速率也越来越高。1.2 课题的主要任务和技术指标本系统采用直接数字频率合成(ddfs)技术,实时将usb接收到的数据转换成各种频率的波形输出,所使用的usb传输方式为全速同步传输。可以输出5种波形:正锯齿波、反锯齿波、三角波、方波和正弦波。本课题的主要工作任务为:1.采用usb总线或外部+5v电源供电,并具有供电指示灯。2.采用tlc7524完成波形数据的da转换,并具有da转换指示灯。3.采用dac0832完成波形幅度峰峰值的调节,范围是0v+5v,步进值为20mv.4.采用ddfs技术完成波形频率调节,范围是0.5hz15999.5hz,步进值为0.5hz。5.采用全速同步端点8、9、10米传输系统控制命令和波形数据。6.可读取该usb设备的各种描述符和usb总线的当前帧号。2 系统总体设计和工作原理2.1方案设计与论证 方案1:采用模拟分立元件或单片机控制函数发生器max8038,可产生正弦波、方波、三角波,通过外部元件可改变输出频率,但采用模拟器件由于元件分散性太大,即使用单片机控制函数发生器,参数也与外部元件有关,外接的电阻电容对参数影响很大,应而产生的频率稳定度较差、精度低、抗干扰能力低、成本高而且灵活性较差,不能实现任意波形及波形运算输出等智能化的功能。方案2:采用传统的直接频率合成器。这种方法能快速实现频率变换,具有低相位噪声以及所有方法中最高的工作频率。但由于采用大量的倍频、分频、混频和滤波环节,导致直接频率合成器的结构复杂,体积庞大,成本高,难以达到较高的频谱纯度。更重要的是,这种方法只能实现正弦波,或者进行积分,微分等方法实现方波,三角波等标准波形,而对于我们所要求的任意波形却无法实现。方案3:usb接口波形发生器。采用直接频率合成技术,它可以实时将usb接收到的数据转换成各种频率的波形输出,所使用的usb传输方式为全速同步传输。这种方法产生的频率稳定度较好,精度高,抗干扰能力强,成本低且灵活性好。综合考虑各种因素,选择方案3。2.2工作原理2.2.1 usb主机在终端用户看来,usb系统就是外设通过一根usb电缆和pc机连接起来。usb在外设和pc机之间提供通信服务,通常把外设称为usb设备,把其所连接的pc机称为usb主机,且把指向usb主机的数据传输称为上行通信,把指向usb设备的传输称为下行通信。在usb主机内部含有usb主控制器,负责完成主机和usb设备之间的物理数据传输。目前,usb主控制器分为两种类型:开放型主控制器(ohc)和通用性主控制器(uhc),这两种主控制器执行相同的操作,只是在处理方式上稍有差异。主控制器内部包含一个usb根集线器,用于给usb系统提供一个或多个连接点(端口),现在pc机箱后面的那两个usb端口就是由集线器提供的。进入windows操作系统的“设备管理器”,并选择“按类型查看设备”,其中的“通用串行总线控制器”项列出了pc机所使用usb主控器和根集线器。usb主机中还有客户软件:usb设备驱动程序和界面应用程序,用于和指定的usb设备进行通信,以实现其特殊功能,如传输文件、播放声音等。客户软件是专用的,根据具体设备的不同而不同,且一般需开发人员自行编写。2.2.2 usb设备 按usb设备功能的不同,可以把其分为两大类:集线器和功能设备。其中,集线器为usb系统提供额外的连接点,它使得一个usb端口可以连接多个设备;功能设备为主机提供额外的功能,如usb键盘、数码相机等。1.集线器集线器(hub)在usb结构中是一个关键,它提供了附加的usb节点,这些节点被称为端口。hub可以检测出每一个下行端口的状态,并且可以给下端的设备提供电源。图2-1是一个典型的hub。图2-1 usb集线器示意图对于usb2.0集线器,其上行端口既可采用高速传输速率又可采用全速传输速率,下行端口支持高速、全速和低速usb设备的连接,也就是说,它可以做为高速、全速和低速集线器。当做为高速集线器时(上行端口采用高速传输),不论其下行端口连接的是高速、全速还是低速usb设备,其上行通信都是高速的,这样可以减少低速和全速传输对高速usb总线带宽造成的影响。对于usb1.1集线器,其上行端口采用全速传输速率,下行端口支持全速和低速usb设备的连接,即它可以做为全速和低速集线器。2.功能设备功能设备可以和usb主机进行数据和控制信息的交互,并为主机提供额外的功能。在每个功能设备内部都含有描述其功能和资源需求的配置,如usb带宽、接口种类等。在它们能够被使用前,主机必须对其进行配置。功能设备通常是一个独立的外围设备,具有单一的功能。但有的usb设备实现了两个或多个不同的功能,如具有键盘和音效功能的传真机,这时称其为合成设备。对主机而言,合成设备是一个单独的usb设备,其只有一个设备地址。对某些特殊应用,有时需要将一个或多个功能设备嵌入到一个集线器中,并通过一根usb电缆进行连接,这被称为复合设备,如集成了集线器的usb键盘。对主机而言,一个复合设备就是一个永远连接有一个或多个usb功能设备的集线器。3.usb的连接usb物理连接是指一个集线器下行端口和另一个集线器上行端口或usb功能设备之间通过usb电缆的连接。usb高速(480mb/s)和全速(12mb/s)传输需要使用外壳屏蔽,而且数据线双绞的usb电缆;而低速(1.5mb/s)电缆不需要屏蔽和双绞。所有usb电缆都是支持热插拔的,其插头上usb图标的触角指明了正确连接的方向。usb采用层次星型的拓扑连接结构。通过usb集线器,一台含有一个usb主控制器的pc机最多可以连接126个外设。连接器usb定义了两种类型的连接器:a系列和b系列,a系列连接器包括a型插头和a型插座,它们相互匹配;a型插座总是作为usb主机或集线器的下行端口,所以a型插头总是指向上行usb主机。b系列连接器也包括b型插头和b型插座,它们相互匹配;b型插座总是作为usb设备或集线器的上行端口,所以b型插头总是指向下行usb设备或集线器。电缆usb电缆线内部含有4根导线:vbus、gnd、d+和d-。其中,vbus是+5v电源线,gnd是地线,d+和d-是差分数据线对。在usb连接器上也有4个管脚,分别对应这四根导线,而且电源管脚比数据管脚长,以保证电源信号先于数据信号到达usb设备。这些管脚都有编号,其对应导线的颜色也不相同。见表2-1:表2-1 usb连接器的四个管脚管脚编号导线名称导线颜色管脚编号导线名称导线颜色1vbus红3 d+绿2d-白4gnd黑 为了保证数据能在usb电缆中无错误的传输,usb规范规定全速/高速电缆必须具有外层屏蔽和铜漏线,且差分数据线必须双绞,对低速电缆来说,其传输速率较低,所以不需要以上特殊处理,且其一般不含b型插头,而需要与usb设备永久连接。低速电缆不能传输高速和全速信号,只是可以使用全速/高速电缆来传输低速信号,只是要注意其长度不能超过低速电缆所允许的最大长度。另外,全速/高速电缆既可以是束缚电缆也可以是分离电缆,而低速电缆必须是束缚电缆。2.3 usb接口芯片usb接口芯片(或称usb芯片)是一个集成了usb协议的微处理器,它能自动对各种usb事件做出响应,以处理usb总线上的数据传输。按其功能,可以分为usb主控制器芯片、usb集线器芯片和usb功能设备芯片。所有的主机和设备上都至少含有一块实现其功能的usb芯片。2.3.1 usb主控制器芯片usb主控制器芯片负责实现主机和usb设备间的物理数据传输,它是构成usb主机的必须部件。intel公司在1996年2月首次推出了支持usb1.0功能的440hx和440vx pci芯片组,其实现usb主控制器接口的模块为82371sb。它标志着usb主控制器芯片的正式诞生,但它是集成在pci控制器中的。世界上第一块单片usb2.0主控制器是2001年6月nec公司发布的upd720100,它具有5个usb端口,并支持pci总线。 随着嵌入式技术的飞速发展,usb主机已不再局限于单纯的pc机,其可以是含有usb主控制器的任何设备,如pda,mp3播放机等2.3.2 usb集线器芯片usb集线器芯片负责将一个usb上行端口转化为多个下行端口,它是构成usb集线器的必需部件。也有一些集线器芯片提供了驱动外围电路的i/o口,可构成usb复合设备,如intel公司在1996年11月推出的世界上第一块usb集成芯片;8x930hx,就是一块提供32个外部i/o口的usb1.0集线器芯片。世界上第一块usb2.0集线器芯片是nec公司于2001年8月发布的upd720110,它支持4个下行端口。2.3.3 usb功能设备芯片usb功能设备芯片负责实现功能设备和usb主机间的物理数据传输,它是构成usb功能设备的必需部件。按其所支持的传输速率,可以分为低速设备芯片、全速设备芯片和高速设备芯片。通常这些usb芯片都含有多个驱动外围电路的i/o口,以实现usb设备的特殊功能。一般来说,usb功能设备的组成结构如下:1.cpu:负责执行存储在芯片程序存储的代码,以控制整个usb芯片的活动。cpu可以是通用的微控制器,如8051单片机;也可以是专用的cpu,如risc。2.程序存储器:负责保存cpu执行的程序代码(或称固件)。类型通常为rom、eprom、eeprom、flash eprom、ram中的一种,存储容量一般在几千字节左右。3.数据存储器:负责保护芯片固件执行时产生临时数据。其类型通常为ram,存储容量一般在1kb 以下。4.寄存器:用于存储有特殊功能的、临时性的数据。按其功能,可分为状态寄存器、数据寄存器和控制寄存器。访问速度通常比数据存储器快,但数量较少,一般为几十个。5.usb接口:负责发送和接收usb总线上的数据,完成位填充、nrzi(反向非归零)编解码等工作,也可以称为(串行接口引擎)。6.usb缓冲器:负责存储在usb总线上发送和接收的usb数据,可分为发送缓冲器和接收缓冲器。它们可以是数据存储器的一部分,也可以是单独的一块存储器,如fifo等。7.外部i/o:每种usb功能设备芯片都含有驱动其外围电路的i/o口,如数据总线、地址总线、i2c总线、spi接口等。8.其他部件:有些usb功能设备芯片中还含有诸如定时器、看门狗、uart等特殊功能模块。世界上第一块支持usb1.0的功能设备芯片是intel公司在1996年11月推出的8x930ax,采用增强型8051cpu,并提供32个外部i/o口。cypress公司在2000年11月推出的cy7c68013是世界上第一块usb2.0功能设备芯片,其采用增强型8051cpu,最多可提供40个外部i/o口。2.4 usb信号数据在usb总线上实际传输时,使用的是nrzi编码的差分信号,这种usb信号有利于保证数据的完整性和消除噪声干扰。usb根据数据的传输方向和传输类型,对usb信号在d+和d-线上的电压(或电压差)提出了具体要求,以完成主机和usb设备间的物理通信。2.4.1 usb信号的发送usb使用差分驱动器把usb信号发送到总线上,但具体实现方式根据usb信号传输速率的不同而不同。但是,差分驱动器必须支持三态(高电平、低电平和高阻),以满足usb双向数据和半双工数据传输的需要。1.低速/全速信号的发送对于低速/全速传输,其d+和d-线上输出低电位的电压必须小于vol(max):0.3v;输出高电位时的电压必须大于voh(min):2.8v。为尽量减少信号失真,高低电位之间的输出摆动应被很好平衡,这要求在差分驱动器中使用摆动比率控制机制。表2-2列出了低速/全速信号的输出电平。其中,交叉电平表示高低电位交叉点的电压值;se1状态表示d+和d-线上的电压都大于vose1(min):0.8v,它不是差分驱动器自动产生的。低速usb设备在连接时一般使用束缚型低速电缆,它不需要外层屏蔽和数据双绞,最大传输延时为18ns。在低速电缆与usb设备的连接处,其d+和d-线上通常表2-2 低速/全速信号的输出电平状态符号最小值/v最大值/v低电位vol0.00.3高电位voh2.83.6se1vose10.8-交叉电平vcrs1.32.0各需要一个200pf450pf的电容接地。全速usb设备在连接时必须使用具有外层屏蔽和数据线双绞的全速电缆,其差分特征阻抗为90(115),共模阻抗为30(130),单向最大传输延时为26ns。通常,全速差分驱动器的输出阻抗为2844;但当它是高速设备的一部分时,其输出阻抗必须大于40.5而小于49.5。2.高速信号的发送对于高速传输,其d+和d-线上的输出低电位时的电压(vhsol)必须为0v10mv;输出高电位时的电压(vhsoh)必须为400(110)mv。但实质上,高速差分驱动器使用的是差分电压。高速usb设备在连接时必须使用具有外层屏蔽和数据线双绞的高速电缆,其差分特征阻抗为90(115),共模阻抗为30(130),单向最大传输延时为26ns。通常,高速差分驱动器的输出阻抗为90(110);但当它工作在全速和低速一部分时,其输出阻抗为45(110)。 3 系统硬件电路的设计3.1主控制器单片机an2131qc的特点ez-usb系列usb接口芯片是anchor公司最早的产品(从1999年开始anchor成为cypress公司的一个销售部门),它支持12mb/s的全速传输,可使用4种usb传输模式:控制传输、中断传输、块传输和同步传输,完成兼容usb1.1协议。该系列芯片的典型应用是mp3播放机、扫描仪、打印机和数码相机等设备。3.1.1芯片结构ez-usb系列芯片的显著特点是固件升级容易,它是在主机上而不是在芯片内部存储固件。当连接并接通电源时,设备驱动程序会发送这些固件到芯片的ram中,所以在升级固件时,不需替换芯片或使用特殊的程序。这样做的不利之处是增加了固件代码和设备驱动的复杂性,但cypress公司为用户提供了很多范例代码和一个可用的设备驱动程序,并为该系列芯片提供了开发装置an2131-dk001,以缩短产品的开发周期。ez-usb为块传输、控制传输和中断传输提供了16个端点:ep0inep7in和ep0outep7out,它们的数据长度均为64字节;为同步传输提供了16个端点:ep8inep15in和ep8outep15out,它们的最大数据长度为1024字节。其中,ep0用于控制端点,ep1ep7均可用于块端点,ep1inep7in用于中断端点,ep8ep15均为同步端点。ez-usb系列芯片的上述特性决定了它具有一种非常独特的结构,以80管脚的an2131qc为例,其主要包括usb收发器、anchor core、增强型8051、8kb的片内ram、2kb的fifo存储器、i/o口、数据总线、地址总线和i2c接口。图3-1是ez-usb系列芯片的结构图。1.anchor core在ez-usb系列芯片内部有一个anchor core,它由串行接口引擎(sie)和usb接口两部分组成。sie负责和usb收发器、usb接口进行数据交换,以完成串行数据的编解码、差错控制、位填充等与usb协议有关的功能。这样,客户在编写8051固件代码时就不用过多考虑usb的传输协议了。当ez-usb上电时,先由anchor core完成usb设备的列举,它把8051的固件代码下载至芯片内部的ram中,并启动8051。之后,8051运行该固件程序,并进行usb设备的重列举。完成后,用户就可以使用该设备了。i/o端口外部存储器+5vd+d-gndusb连接器usb收发器串行接口引擎(sie)usb接口程序和数据存储器通用微处理器(增强型8051)地址总线数据总线ez-usb图3-1 ez-usb系列芯片的结构2.增强型8051ez-usb系列芯片采用增强型8051内核,其性能是标准8051的5倍,负责控制芯片的外围连接,以使它们可以和anchor core完成usb数据交换。简单的说,可以认为ez-usb是一个具有usb功能的增强型8051单片机,用户必须编写8051固件程序对它进行控制,其指令集和标准8051完全兼容。增强型8051内核给用户开发带来了很大的方便,如果熟悉8051,那么就很容易掌握ez-usb,即便以前不了解8051,用户也可以很容易得到其相关资料和编程工具。为了进一步节省产品的开发周期,还可以使用keil公司提供的c编译器c51,其比原有汇编语言要简单得多,不足之处是它的代码冗余度较高,不如汇编语言精简。3.ramez-usb系列芯片内部具有4kb或8kb的ram,它们兼做程序存储器和数据存储器,增强型8051的固件代码就存储在该区域中。ram在断电后不能保存数据,同样,ez-usb断电后存储在ram中的固件也会消失。为了解决这个问题,ez-usb在每一次上电时,将自动从主机或外部的eeprom中自动加载8051固件代码。用户也可以自己加载8051固件代码,并可以多次加载、随时加载。这给开发人员带来了极大的方便,他们可以随时更改或升级固件代码,而不需使用额外的编程器和其它的开发装置。这种机制的不利之处是延长了usb设备的列举时间,增加了驱动程序的复杂性。4.其它组件ez-usb系列芯片内部还包含i2c总线,以便其能从外部eeprom中下载8051的固件代码。如果芯片支持usb同步输出,其内部还会包含有容量为2kb的fifo缓冲区,该系列芯片采用3.3v供电,且可使用usb总线电源,它们具有44脚、48脚和80脚三种封装形式,最多可支持24个i/o口,16根地址总线和8根数据总线,芯片最小面积只有1英寸2,占用很少的电路板空间。5.应用范围ez-usb系列芯片的典型应用是mp3播放机、扫描仪、打印机和数码相机等设备。为了满足不同用户的需要,cypress公司为ez-usb提供了多种不同的类型芯片,如设备只需使用usb块传输且需8位数据总线和较高数据传输速率,就可选用an2131sc。图3-2是80脚an2131qc的封装形式,它是该系列芯片中引脚最多、功能最强的一款,其它型号都是它的简化。 图3-2 80脚an2131qc的封装形式3.2系统硬件模块电路的设计 3.2.1 电路总体方框图单片机串行通信可编程逻辑器件列队缓冲器d/a转换运算放大示波器pc机图3-3是电路总体方框图。 图3-3 硬件原理框图3.2.2 usb接口单元usb接口单元的主要实现芯片为cypress公司的an2131qc,负责完成硬件系统和pc机之间的数据传输。其中,an2131qc的discon#和usb d+管脚间接有1.5k电阻,以选择全速usb传输:pc1用于控制tlc7524的工作状态,以决定是否输出波形;数据总线d0d7负责将主机发出的数据输出到idt7202,以供tlc7524进行da转换;pc4pc7用于向epm7064发出ddfs频率控制字,以选择波形输出的频率;pb0pb7用于向dac0832提供数据,以控制波形输出的幅度;pa6和pa7用于控制发光二极管led1与led2的点亮和熄灭,以指示硬件系统是否正在工作。图3-4是usb接口原理图。图3-4 usb接口单元部分3.2.3 ddfs控制单元ddfs控制单元的主要芯片为altera公司的epm7064,负责控制系统输出波 型的频率。图3-5是ddfs控制单元。图3-5 ddfs控制单元其中,epm7064的clock和data管脚负责以串行数据方式接收an2131qc发出的频率控制字(设为m),共15位,高位在前,低位在后。因系统波形采样点数为64点,所以最终输出波形的频率为: =0.48828125其中,为epm7064所选用的频率,本例为4.096mhz。因此系统输出的最低频率为0.488hz(约0.5hz),最高频率为15999.5hz,频率分辨率为0.5hz,相对误差为2.4%。表3-1列出了几种典型频率所对应的控制字。表3-1 典型输出频率所对应的控制字控制字输出频率/hz控制字(m)输出频率/hz10.48840962000157.3281924000255124.51638480002048124.532767159波形输出单元波形输出单元的主要实现芯片为ti公司的tlc7524和美国国家半导体公司的dac0832,它们的输出形式均为电流。为了得到电压信号,使用了运算放大器op07和op27。本系统中,tlc7524的片选信号和dac寄存器写选通信号。都与an2131qc芯片的pc1连接,这时,只要pc1管脚输出低电平,tlc7524就开始进行da转换,并将fifo存储器idt7202输出的数据直接写入dac寄存器,系统输出的波形也就随之变化。dac0832工作于直通方式:即数据允许锁存信号ile接高电平,片选信号、数据传送信号和写选通信号与均接低电平。这时,dac0832会实时将an2131qc芯片pb口的输出数据转换成模拟量,以控制tlc7524的参考电压ref。图3-6是波形输出单元。图3-6 波形输出单元4 软件的设计与实现4.1软件功能及作用 an2131qc芯片的固件程序控制整个硬件系统的运行,并负责处理pc机发来的各种usb请求。本例固件开发所使用的编程语言为德国keil公司的c51编译器,集成开发环境为uvision2。固件共包含8个程序文件:main.c、function.c、delayms.a51、dscrptr.a51、jmptable.a51、testheader.h、testregs.inc。其中,头文件testheader.h、testregs.inc对an2131qc中的各种寄存器进行了定义;testheader.h定义了通用的ez-usb常量、数据类型和宏;dscrptr.a51定义了系统所使用的各种usb描述符;delayms.a51中包含了延时1ms子程序和芯片挂起处理子程序;jmptable.a51文件定义了ez-usb的int2中断跳转表;main.c是固件运行的主程序文件,负责处理各种usb设备请求;function.c中包含各种功能函数的定义,用于完成系统的主要功能,如处理usb同步传输等。4.1.1 主函数main.c是固件运行的主程序文件,负责处理主机发出的各种usb设备请求,图4-1所示是其流程图。该程序首先初始化所有的内部状态的变量,然后调用td_init(以前缀“td_”开头的函数均在function.c文件中定义)用户函数进行初始化,并打开中断,最后固件程序开始列举usb设备,直至在端点0上接收到setup令牌包时为止。一旦接收到setup令牌包,并将重复执行下面的任务分配过程。1.调用函数td_poll,以完成用户指定的任务。2. 判断是否有usb设备请求(setup令牌包)。如果有,则调用parse control trans-fer函数进行相应的处理;如果没有,则继续向下执行。3.检测usb总线是否空闲。如果空闲,则调用程序td_suspend返回值后,它将调用ez-usb_suap,以使8051处于空闲状态。这时,只有usb总线活动或芯片wakeup#管脚活动,才可能将8051重新激活。4.8051被激活后,固件程序将首先调用ezusb_resume函数,以使8051从空闲状态中恢复出来,然后在调用td_resume函数来处理用户指令。4.2上位机程序设计visual c+是一种功能强大、简单易学的程序设计语言。它不但保留了原先basic语言的全部功能,而且还增加了面向对象程序设计功能。不需要设计者编写大量的代码去描述界面外观和位置,只要把预先建立的控件直接应用到屏幕上,简上电复位初始化状态变量调用td_init()使能中断是否接收到setup包n延时1s、重列举y调用td_po11()是否接收到setup包yy执行设备要求nnusb总线空闲?标志是否有效y调用td_suspend()falsetrue挂起处理器调用td_resume()图4-1 系统流程图化了设计过程,应用简单信息交互方便。它不仅可以方便快捷地编制适用于数据处理、多媒体等方面的程序,而且利用activex控件mscomm还能十分方便地开发出使用计算机串口的计算机通信程序。利用vc进行windows应用程序开发的一个显著特点就是应用程序与操作系统的联系非常密切。4.2.2 上位机程序功能和界面上位机部分的功能主要是完成人机交互,实现上位机对检测仪的控制;将界面中的人机交互动作转变为机器可以识别的二进制数据,并通过串行接口发出控制指令,并承担将单片机上串的数据处理后进行显示等任务,实现检测信息的交互。上位机部分采用visual c+编写程序完成界面设计,界面内有以下几个功能区域可供操作者点击:坐标区、坐标指针实时区、station区(line、sine、free功能键)、频率振幅显示区、编辑提示区。图4-2为其上位机界面。上位机visual c+编写界面中使用了文本控件、命令按纽控件、标题控件、sstab控件、mscom控件等,对其属性进行了相关设置。 使用了visual c+中的对话*.show、*.hide和mscomm1_oncomm等系统函数。在模块级范围内声明了一个公共数组作为数据传递和存储使用,在子模块中使用局域变量。这样的设计使各个模块中数值可以直接传递,且不会造成过多的系统消耗,使全局和模块直接的关系直观,逻辑清晰。图4-2 上位机界面上位机部分采用visual c+编写程序完成界面设计,界面内有以下几个功能区域可供操作者点击:坐标区、坐标指针实时区、station区(line、sine、free功能键)、频率振幅显示区、编辑提示区。4.3设备驱动程序usb设备驱动的组要功能是是win32应用程序能正确访问本波形发生器的硬件设备。本系统中将an2131qc的固件代码存放在主机上,当系统上电或usb连接时,再将它下载至芯片的ram中,由增强型8051执行。这需要使用两个驱动程序:一个是loaderwave.sys,专用于下载芯片的固件程序;另一usbwave.sys,用于实现本波形发生器的具体功能。4.3.1 固件程序loaderwave.sys的主要任务是将固件程序下载至an2131qc芯片的ram中,由增强型8051执行。loaderwave.sys中不包含分发例程,且电源管理例程和即插即用例程由同一函数testpnpirp来处理,其主要实现文件有两个:testinit.c和testpnp.c。另外,还有两个c文件需要参加编译:loader.c和tagtest.h,它们都是an2131qc芯片固件程序。其中,loader.c实现了将数据下载至an2131qc芯片ram中的供应商自定义请求,由cypress公司提供;tagtest.c为本系统所使用的芯片固件。为将keil c51语言编译连接所得到的intel十六进制记录(.hex文件)转换为c代码(.c文件),需使用cypress公司提供的hex2c工具,它是一个win32控制台应用程序,用法为hex2c varname。其中,参数intel_hexfile_name指明输入文件名,即由keil工具建立的.hex文件,本例中为tagtest.hex;参数c_filename指明输出的c文件名,本例中为tagtest.c。4.3.2 波形功能程序usbwave.sys,是本波形发生器运行时所使用的驱动程序,负责完成上位机win32应用程序和系统硬件设备间的数据传输。 结 论自开题以来,我常常到图书馆查阅相关的书籍,期刊,通过互联网查询有关usb工程开发的相关知识。并不时向这方面理论掌握扎实和实践经验丰富的老师和同学请教学习,请求指导解决课题进行中遇到的种种问题,直到彻底弄懂为止。此课题,基于usb接口波形发生器设计:主要针对an2131qc单片机的实验和开发,通过对an2131qc单片机的学习,来了解usb的工程开发,同时通过画电路pcb的制作,掌握制版的一些知识。在软件编程中,对cpld的编程是一个难点,需要对cpld的管脚定义有所了解。毕业设计过程中主要进行了an2131qc单片机电路的设计,首先确定了设计任务,其次查找资料,研究设计方案,进行方案比较并确定了一个最佳方案,然后就开始设计工作,画电路图和pcb板,焊接电路并调试。设计包括硬件的设计和软件的设计,其硬件设计中主要是外围电路和单片机的结合,使得整个实验板可以完成多项功能。在这些日子的学习和思考中,我品尝了“书到用时方恨少”的苦恼,也感受到了学以致用的快乐。通过自己动手进一步发现理论与实际存在这一定的距离,在实施过程中遇到了很多预先没有想到的困难。在今后的理论学习中要加强与实际动手的联系,能把先进的理论更快的运用于实际工作中。参 考 文 献1 尹勇,王洪成编著 单片机开发环境vision 2使用指南 2004 2 李英伟 编著 usb 2.0原理与工程开发 20073 武安河 编著 windows 2000/xp wdm设备驱动程序开发 20054 周立功 编著 usb 2.0与otg规范及开发指南 20045 萧世文 编著 usb 2.0硬件设计 2002 6 廖济林 编著 usb 2.0应用系统开发实例精讲 20067 薛园园 编著 usb应用开发技术大全 2007 8 许永和编著 健莲科技改编 usb外围设备设计与应用 20029 张弘编著 usb接口设计 2002 10 胡晓军,张爱成编著 usb接口开发技术 200511 李肇庆 廖峰 刘建存编著 usb接口技术 2004 12 刘韬,楼兴华编著 fpga数字电子系统设计与开发实例导航 2005 13 钱峰编著 ez-usb fx2单片机原理、编程及应用 2006 14 许永和编著 8051单片机usb接口程序设计 2004 15 刘兵 编著 微型计算机通信与接口技术 200816 厉荣卫主编 微机原理与接口技术 2006 17 马伟 编著 计算机usb系统原理及其主从机设计 200418 (美) hyde john 著 usb设计应用实例 2003 19 网络资源:、附录1:原理图附录2:程 序(主函数部分)#include testheader.h#define allocate_extern #include testregs.h#include #definedelay_count0x9248#definemin(a,b) (a)(b)?(a):(b)#define writedelay() char writedelaydummy = 0;volatile boolgotsud;boolrwuen;boolselfpwr;volatile boolsleep;extern code devicedscrdevicedscr; extern code configdscrconfigdscr;extern code stringdscrstringdscr;void parsecontroltransfer(void);void td_init(void);void td_poll(void);bool td_resume(void);bool td_suspend(void);bool dr_getdescriptor(void);bool dr_setconfiguration(void);bool dr_getconfiguration(void);bool dr_setinterface(void);bool dr_getinterface(void);bool dr_getstatus(void);bool dr_clearfeature(void);bool dr_setfeature(void);bool dr_vendorcmnd(void);void usbdisconnect(bool renum);void delay(word ms);extern void delay1ms(void); extern void ezusb_susp(void); void ezusb_resume(void);configdscr* getconfigdscr(byte configidx);stringdscr* ezusb_getstringdscr(byte stridx);void main(void) dword j = 0; sleep = false;rwuen = false; selfpwr = true; gotsud = false;td_init(); eusb = 1; eicon |= 0x20; usbbav = usbbav | 1 & bmbreak; usbien |= bmsudav | bmsutok | bmsusp | bmur

温馨提示

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

评论

0/150

提交评论