串口控制的USB设备切换模块开发_第1页
串口控制的USB设备切换模块开发_第2页
串口控制的USB设备切换模块开发_第3页
串口控制的USB设备切换模块开发_第4页
串口控制的USB设备切换模块开发_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

1、串口控制的USB设备切换模块开发目录摘要1Abstract2第一章绪论31.1本课题的研究的背景与意义31.1.1本课题的背景31.1.2本课题的意义31.2国内外的研究现状41.2.1USB协议的发展现状41.2.2USB集线器的发展现状41.3本文的研究内容和结构安排51.3.1研究内容51.3.2结构安排5第二章开发工具介绍72.1硬件设计工具72.1.1PCB介绍72.1.2Altium Designer介绍72.2软件设计工具82.2.1Quartus以及Verilog HDL介绍82.2.2Keil以及C51介绍102.2.3Visual Studio介绍11第三章USB设备切换模

2、块硬件设计123.1硬件设计方案介绍123.2CPLD主控方案设计133.2.1直流降压模块133.2.2主控模块153.2.3电源管理模块163.2.4集线器功能模块173.2.5串口通信模块的硬件设计173.3MCU主控方案设计193.3.1供电方式自动切换模块193.3.2电源管理模块203.3.3集线器模块213.3.4串口通信模块设计23第四章USB设备切换模块软件设计244.1CPLD主控方案软件设计244.1.1波特率信号发生器模块244.1.2串口通信模块设计254.1.3处理模块254.2MCU主控方案软件设计274.2.1串口通信逻辑274.2.2处理控制逻辑29第五章PC

3、端软件设计305.1C#设计的优势305.2串口类的使用305.3WPF界面设计325.4整体流程33第六章实验测试356.1硬件实物图356.2串口通信模块测试366.3主控芯片程序设计376.4电源管理测试386.5集线器功能测试39第七章总结与展望417.1本课题研究总结417.1.1硬件设计417.1.2嵌入式软件设计417.1.3上位机软件417.2课题展望427.2.1硬件设计展望427.2.2嵌入式软件设计展望427.2.3上位机软件设计展望42致谢43参考文献44附录45文献翻译45原文45译文50串口控制的USB设备切换模块开发摘要USB是当下最受欢迎的外设接口标准,当前的很

4、多外设都选择使用它。由于现在的个人计算机通用串行总线外设接口数量不多,外设接口常常不够用,所以可以扩展接口数目的通用总线集线器受到了很多人的青睐。众所周知,反复插拔会造成通用串行总线物理接口的松动,长期下去会导致传输不稳定。故而,一款可以通过电脑控制扩展接口电源通断的通用串行总线集线器将会很有市场。本文提供了两种可以通过串口控制的USB设备切换模块的开发思路:由CPLD充当主控芯片、继电器充当电源管理器件的CPLD主控方案以及由单片机充当主控芯片、配电开关芯片充当电源管理器件的单片机主控方案。硬件方案经过印刷电路板、焊接、调试以及嵌入式软件、上位机软件经过编写调试,最终使方案得到了验证。关键词

5、:通用串行总线,印刷电路板,串口通信,单片机等AbstractNow, Universal Serial Bus is the most popular port. Almost every peripheral can be connected to computer by Universal Serial Bus. The number of USB port cannot fulfill the users need usually. It leads to the appearance and popularity of USB HUB. Just as we know, repeat

6、edly plug will make the physical interface of USB loose and lead to unstable transmission. Then a USB HUB can be controlled by Computer to change the switch of USB ports state will have a lot of market.This paper will offer two different design that Switchable USB HUB module controlled by UART. The

7、one uses CPLD to be the main chip on board, and the other uses MCU to be the main chip on board.The hardware part of the two design have been made into PCB and two real board have been completed. The software runs on the chip and the software runs on Windows also have been completed.Key words: USB,

8、PCB, UART, CPLD, MCU, WPF.第一章 绪论1.1本课题的研究的背景与意义1.1.1本课题的背景USB (Universal Serial Bus,通用串行总线)作为当今众多电子产品接口之一,由于它具有即插即用和热插拔、高速度和价格低廉等优点,使其得到了大规模的应用1。USB 最初是为了解决传统PC 外部设备接口的形式多、不统一、低速率且安装新设备过程麻烦等问题而提出的2。其具有高速、双向、低成本、热插拔等优点,自从得到了微软Win98 操作系统内核支持以后,迅速得到普及推广。在二十年之前,电脑的键盘、鼠标使用的是PS2接口,打印机使用的是专用的打印机接口。而在现在,它们都

9、统一使用了USB接口,甚至一些只需要供电的设备也采用了USB接口,比如USB照明灯、笔记本电脑的风扇等等。目前USB接口已经成为计算机外围设备、移动存储设备、数码产品乃至移动通讯设备与计算机互连的首选标准接口3。1.1.2本课题的意义USB设备多了就带来了,电脑USB接口紧缺的问题,有的笔记本电脑甚至只预留了两个USB接口。USB HUB的出现解决了这一问题,它可以将稀缺的USB接口进行拓展。HUB(集线器)是USB体系中不可或缺的一部分,它是USB的最新规范,由英特尔等公司发起4。就算是只有一个USB接口的电脑,在有了USB HUB的帮助下也可以让用户同时使用USB接口的各种外接设备。我们日

10、常使用的外接设备即使是在闲置情况下,也会有不必要的电源消耗,而反复的插拔会导致USB物理接口的松动,长期下去会影响数据传输稳定性。在这种情况下,一种可以通过软件方式控制USB电源通断的集线器设备就有了用武之地。一方面它可以像其他USB集线器一样,对稀缺的主机USB接口进行拓展;另一方面,通过软件控制扩展端口的电源可以避免反复插拔带来的接口松动问题。1.2国内外的研究现状1.2.1USB协议的发展现状1996年1月,USB1.0问世,其最大传输速度为1.5Mbps。在当时,支持USB协议的外设还很少,很多主板商都没有在其展品上预留USB接口。1998年5月,在修补了USB1.0不足之处后,USB

11、1.1问世,其最大传输速度为12Mbps。这个时候USB接口一步步地开始变得流行,越来越多的外接设备开始使用USB接口。渐渐地,USB接口逐步成为了电脑的必备接口,而且是首选接口。2000年4月,USB2.0问世,其最大传输速度为480Mbps。USB2.0协议采取四线制,其中包括一对用于信号传输的差分信号对线,另外两根提供电源的总线电源和接地。值得一提的是,USB2.0仍然使用了半双工的通信方式。2008年11月,USB3.0问世,其最大传输速度为5Gbps。USB3.0在USB2.0的基础上,增加了五根线,除了一个接地线之外,另外四根线构成了两组差分对线,一组负责接收,一组负责发送。至此,

12、USB协议才真正实现了全双工的通信模式。2013年12月,USB3.1问世,其最大传输速度为10Gbps;1.2.2USB集线器的发展现状目前市场上的USB HUB分为有源和无源的两种,两者的区别在于有无专门的电源适配器负责拓展接口的供电,后者在USB设备功率需求较大时无法正常工作。电子系统中存在大量的USB设备需要使用和切换,但是目前市场上能够买到的USB HUB虽然种类繁多,却很难找到一款价格低廉、能够按照用户的系统需求进行方便切换控制的具有扩展性的新型USB HUB设备。将来的USB接口会和目前的音频设备、无线网卡一样,可以再操作系统中找到便捷的软件开关。在不久的将来,USB接口将被用于

13、冰箱、微波炉、电饭煲等家用电器的控制,随着智能家居设备的普及,可软件控制USB线路通断的HUB将占有重要的使用地位。1.3本文的研究内容和结构安排1.3.1研究内容研究内容主要包括三个部分:硬件设计、嵌入式软件设计以及上位机软件设计。在毕业设计完成的过程中,提出并验证了新的方案。硬件部分:1. 根据设计思路绘制原理图,并根据需求进行调整,以及各个元器件封装形式的确定;2. 将原理图导出的网络表导入PCB文件,进行PCB各个元器件的排版、走线、开定位孔、敷铜等操作,根据厂家的生产工艺要求和电气特性要求校验PCB并进行调整;3. 电路板送厂家印制以及元器件的采购;4. 元器件焊接以及功能调试;嵌入

14、式软件部分:1 开发环境配置;2 程序下载测试;3 功能的模块化设计;4 功能的具体实现调试;上述两个部分,本文给出两种实现方案(CPLD主控方案和MCU主控方案)都是分别开发的。上位机软件部分:1. 开发环境配置2. 界面设计3. 程序编写4. 程序调试5. 系统联合测试1.3.2结构安排本文行文从背景介绍展开,中间包括详细的内容介绍,最终包括验证结果和对于课题的进一步展望。除了本章的背景研究意义,本文主要还包括了开发工具的介绍、硬件设计方法介绍、嵌入式软件设计介绍、PC软件介绍以及最终的实验测试结构。开发工具介绍部分主要介绍了两套方案分别使用的开发工具,包括阿尔特拉公司的Quartus、A

15、ltium公司的Altium Designer、微软的Visual Studio、ARM公司的Keil等。硬件设计方法介绍部分主要分别介绍了两套方案的硬件设计思路,包括全局的模块图以及各个部分的详细阐述和解释。嵌入式软件设计介绍部分主要分别介绍了两套方案的嵌入式软件设计思路,包括CPLD主控方案的硬件编程逻辑设计和MCU主控方案的软件编程逻辑设计。PC软件介绍部分,即上位机软件介绍部分主要介绍了上位机软件的程序开发,包括编程语言的介绍以及相关库的介绍。第二章 开发工具介绍2.1硬件设计工具2.1.1PCB介绍PCB,中文名称是印刷电路板,也称印制电路板,作为电子元件的支撑体,它是重要电子部件5

16、。因为采用了电子印刷技术,故而称之为印刷电路板。印刷电路板最大的优势之一就是,在没有设计问题的情况下,电路的电气特性不会因为焊接的问题发生很大的不同。PCB设计时包括多个不同的层面,根据设计需求,可以对层面进行增删并对使用到的层面进行详尽的设计和验证。 本文提供的两种硬件设计方案最终都使用PCB工艺制作了出来,选取了双面板制作工艺。印刷电路板的制作过程包括:开料、钻孔、沉铜、图形转移、图形电镀、蚀刻、阻焊、字符印刷、表面处理、成型、测试。2.1.2Altium Designer介绍制作印刷电路板需要厂家提供PCB设计文件,本方案最终选取了Altium Designer作为设计工具。Protel

17、是最早被国内电子设计公司采用的PCB设计软件之一,占有很重大的市场份额,并被电子设计爱好者所青睐。2000年以后,Protel公司改名Altium并推出了新系列的Altium Designer。图 1 Altium Designer界面Altium Designer与旧版本的Protel相比,界面更加友好,对于中文的支持也得到了改善,也更加适合当下比较流行的操作系统环境。如图 1所示,它的界面主要包括菜单栏、工具栏、左侧边栏中的文件浏览器以及右边侧边栏中的对象浏览器。使用Altium Designer进行印刷电路板的设计,主要需要经过四个环节的操作:1 封装原理图库:这一步骤视需求而定,如果原

18、理图设计中使用到了现有原理图库里面没有的元器件,需要对这些元器件进行原理图对象的封装;2 封装电路板库:这一步骤也视需求而定,如果电路板设计中使用到了现有库没有的封装形式,需要对这些封装形式进行封装;3 绘制原理图:根据设计理念,将方案通过原理图的形式绘制出来,实际就是以图形和的方式呈现设计中的各个元器件以及各个引脚之间的连接关系;4 绘制PCB图:将编辑完成的原理图导入到PCB文件中,将各个器件在电路板编辑视图上进行排版、布线、校验、调整。最后一个步骤得到的PCB文件,就可以直接交付厂家生产了。如果对于印制流程有特殊需求的还可以使用该软件导出Gerber文件,即电路板每一层的描述文件,这是印

19、刷设备可以直接使用的格式,在不同的步骤使用的Gerber文件。值得注意的是,由于生产的工艺总是有限制,必须按照厂家提供的技术限制对PCB设计文件进行校验。校验一方面可以检查出电气特性错误,即检查走线与原理图设计的网络表是否有误差,另一方面校验可以检查线宽、线距、孔径等一系列指标是否超出生产工艺限制。印刷PCB的同时,还要进行元器件的采购,Altium Designer可以导出PCB设计文件的元器件清单。2.2软件设计工具2.2.1Quartus以及Verilog HDL介绍在CPLD主控方案中,主控部分的核心器件是一款阿尔特拉公司的CPLD芯片。需要通过官方提供的开发工具Quartus去开发我

20、们所需要的功能,即对器件进行硬件编程。早年,阿尔特拉公司提供的CPLD开发工具是Max+plux II。后来,随着FPGA芯片的诞生和流行,阿尔特拉公司推出了新的开发环境Quartus。Quartus可以作为阿尔特拉旗下所有型号可编程器件的开发工具,而且提供了开发片上系统的功能6。另外,Quartus还提供了很多硬件逻辑设计的IP,可以直接使用,避免了硬件设计过程中不必要的重复工作。图 2 Quartus界面如图 2所示,是Quartus软件启动后的画面。在使用的过程中,用户必须经历以下的一步步操作:1. 新建工程,并通过向导配置工程包括器件型号在内的基本属性;2. 添加顶层设计文件以及其他需

21、要的设计文件;3. 代码编写;4. 编译分析工程是否有语法错误,并进行仿真;5. 将工程编译生成的结果烧录到CPLD或者FPGA中;Quartus支持包括主流的Verilog HDL和VHDL在内的多种硬件描述语言,在CPLD主控方案中,笔者选取了自己较为熟悉的Verilog HDL进行开发。Verilog HDL是符合IEEE标准的硬件描述语言,它可以进行以模块为基础的硬件逻辑设计,在ASIC开发等诸多领域都得到了广泛的运用。而且在设计初衷上,Verilog与C语言的语法风格也更为接近,相较于VHDL更有亲和力。2.2.2Keil以及C51介绍Keil是由美国Keil公司开发的嵌入式软件开发

22、环境,支持单片机和ARM等多个系列的嵌入式处理器。Keil可以运行于当下流行的诸多Windows系列操作系统环境下,将代码编译生成二进制代码,并通过下载工具写入嵌入式处理器。MCU主控方案中使用到了STC公司出品的新51系列的一款单片机,这一型号不在Keil for C51自带的支持库中。所以在开发之前,需要将STC官方提供的Keil库支持安装到Keil的库目录下。在使用Keil进行嵌入式软件开发时,要完成依次下列操作:1. 新建工程,并根据需求在向导中配置好工程属性;2. 添加主函数文件以及各种需要的文件;3. 编写代码并进行尝试编译;4. 编译生成二进制程序文件;5. 利用STC官方提供的

23、下载工具下载程序;官方提供的下载工具如图 3所示:图 3 STC官方下载器左侧用于程序的下载烧录,右侧自带串口助手用于串口调试。下载程序时,需要先选定好芯片型号和波特率、串口号,然后打开程序文件,点击下载。此时,下载工具处于等待状态,因为单片机需要重新上电才能开始下载过程,对单片机重新上电即可开始下载。开始下载和下载成功,下载工具都会在右下侧的面板中显示状态信息。而MCU主控方案使用的嵌入式软件开发语言是C51,这是一种从C语言发展而来专门运行于单片机平台的语言。一般单片机开发,汇编和C51是使用的最多的,但是汇编相对来说难于理解和调试。C51因为是从C语言发展而来的,所以语法结构基本相似,有

24、C语言基础的人很容易上手。2.2.3Visual Studio介绍对于本文提供的两种设计方案,尽管在计算机上可以通过串口助手来呈现,但笔者还是决定为两套方案共同开发一套上位机软件。笔者选用了Visual Studio的最新版本VS2015作为上位机软件的开发工具。Visual Studio简称VS,这是一款有微软公司提供的大型软件集成开发环境,到目前为止,它是开发Windows软件最好的工具之一。VS支持Visual C+、Visual C#、Visual Basic、Visual F#等多种主流开发语言,同时它也可以用于数据库和网站的开发7。在本文后面的章节中,会对上位机软件的开发有更详尽的

25、介绍,这里大致介绍一下VS2015的使用。首先,是工程的建立,在工程向导中选择自己需要进行开发的编程语言并选择好自己需要进行开发的开发框架;然后,是程序的编写和调试。VS提供了强大的程序调试功能,除了基本的断言执行和单步调试,VS还提供了局部变量视图,这让我们不用添加额外的代码就能在程序调试遇到阻碍时检查各个变量的值。同时,VS还是还提供了程序打包功能,即静态编译功能,当我们使用了动态链接库进行编程时,可以将使用到的动态链接库写进可执行文件中,避免了程序转移到其他计算机上因为库缺失而无法运行的问题。VS还提供了发布功能,允许软件的开发者通过该功能生成程序安装向导。第三章 USB设备切换模块硬件

26、设计3.1硬件设计方案介绍本设计提供了两种不同的串口控制的USB设备切换模块的设计方案:1. CPLD主控方案2. MCU主控方案方案二在方案一的基础上改进获得,在各个部分都实现了改进。两个方案都包括了电源、主控、集线器、串口通信等几个部分,在实现方法或者细节上存在一定的差异,后者在与前者尽可能做出了改进。CPLD主控方案选取了可编程器件作为主控部分核心器件,整个硬件部分的电源全部采用独立电源给供电,有专门的直流降压电路去支持CPLD的运转。本方案中的串口通信部分设计了USB转UART电路,集线器功能使用了专用芯片加外围电路实现。对于扩展端口的电源管理,采用了通过继电器控制通断的设计方法。MC

27、U主控方案选取了单片机取代了上一方案中的CPLD作为主控部分核心器件,因而同时去除了为了支持CPLD运转而存在的降压电路部分。整个硬件的电源既可以通过独立电源供电,也可以通过上游端口的总线电压供电,同时串口通信部分的工作电压独立于全局其他部分的工作电压采用了USB转串口的USB信号的总线的电压。集线器功能部分,使用了同型号芯片的其他封装,调整了外围电路。对于扩展端口的电源通断的管理,也放弃了体积较大的继电器而采用了电源开关芯片。3.2CPLD主控方案设计图 4 CPLD主控方案框图图 4为CPLD主控方案的主要模块框图,独立外部电源输入的电压经过直流降压模块分别输出5V、3.3V、1.8V的工

28、作电压;主控模块处理与上位机的信息交互;串口通信模块可以将USB信号和TTL电平的串行口信号相互转换;集线器功能负责USB端口的扩展功能;电源管理模块负责管理各个扩展端口的电源。3.2.1直流降压模块在本方案中,由于不同芯片工作电压的差异,单一的5V外部电源无法满足所有模块的运行,需要通过本地的直流电压转换电路获取其他的工作电压。图 5 独立电源连接图 6 独立电源滤波图 5是外部电源输入,实物采用了被普遍使用的5毫米插头插座。图 6是电源滤波电路,滤波电路的存在保证了系统工作时工作电压的稳定。可编程器件CPLD有多种不同的电压需求,包括核心工作电压VCCINT、输入输出口驱动电压VCCIO、

29、辅助电压VCCAUX,本方案只需要获取前两种电压。本方案中的CPLD采用的是Altera公司MAX V系列的5M160Z-T100,它的核心工作电压是1.8V,输入输出口驱动电压是3.3V。本方案中采用AMS1117系列的线性稳压ICAMS1117-1.8以及AMS1117-3.3。图 7 降压电路图 8 3.3V降压电路图 7、图 8分别是1.8V工作电压和3.3V工作电压的直流降压电路图。由于在独立电源输入的位置已经有5V工作电压的滤波电容,所以这里省略了降压芯片输入端的滤波电容。3.2.2主控模块图 9 主控模块连接如图 9所示,本方案的主控部分采用了型号为5M160Z-T100的CPL

30、D芯片。本部分的CPLD核心工作电压由直流降压模块输出的1.8V提供,CPLD输入输出口的驱动电压由直流降压模块输出的3.3V提供。全局时钟由外部的一块11.0592MHz的有源晶振提供,由于内部可能多出用到此信号,所以在有源晶振的输出处增加了上拉电阻,提高了时钟信号的带负载能力。图中右下角部分是CPLD的程序下载电路,这里的双排插针可以直接插上阿尔特拉官方提供的下载器。可以看到,选取了一双输入输出口用于串口通信,另选一组4个输入输出口用于输出扩展端口电源控制信号。3.2.3电源管理模块这里的电源管理模块主要是负责扩展端口的电源管理。输入的控制信号来自主控部分,它的工作电平是3.3V和0V,而

31、采用的继电器的工作电压是5V,如果直接使用控制信号是无法驱动继电器的。因为,本部分需要加入如下图所示的电平转换电路,图 10以扩展端口其中的一个示例:图 10 电源控制电路图中的SRD-5VDC-SL-C是在5V直流电压下工作的继电器,PXT8050为NPN型的晶体三极管。当控制信号PWREN为低电平时,三极管处于截止状态,相当于断开的开关,集电极电压为5V;当控制信号PWREN为高电平时,三极管处于饱和导通状态,相当于连通的开关,此时的集电极电压与0V接近。这样就完成了逻辑电平的转换。继电器的4、5号引脚之间输入继电器工作的驱动电压,线路连接上采用了上拉式的结构,这样避免了前级电路的驱动能力

32、弱的问题。总结下来,各个关键测试点的电平状态如下:表 1 电源管理输入输出表控制信号PWREN三极管集电极电压继电器驱动电压继电器被控制端连接态扩展端口PWR输出3.3V接近0V接近5V1、3脚连通5V0V接近5V接近0V1、2脚连通0V3.2.4集线器功能模块集线器功能模块的主要功能是实现USB接口数目的拓展。图 11 集线器芯片图 12 集线器芯片外围电路本方案的集线器模块采用GL850G芯片实现,封装选择的是LQF48。输入外部电源5V并从48号引脚输出工作电压DVDD并通过图 12上面两个电路转换成AVDD给芯片的其他引脚输入使用。CR3为12MHz的无源晶振,提供GL850G的工作时

33、钟。按照手册要求,PREF脚通过680欧姆的电阻接地。PGANG是一个复用的引脚,在芯片启动时,为输入脚,获取PGANG、Individual模式设置信号,一段时间后变成输出脚,另作他用,本设计未涉及到。3.2.5串口通信模块的硬件设计串行口是出现较早的外设接口,它的协议相对简单易于理解与上手,旧式的台式机上都自带有九针的串口接口。而现在所有的笔记本电脑和大部分台式机主板均放弃了这种接口,所以当下对串口有特殊需求时,一般使用USB转串口线来实现功能。由于USB转串口一般是兼容的九针串口接口,就意味着里面采用的是RS232的电平标准,如果直接使用这种串口转接线的话,就要在硬件设计上增加复杂的TT

34、L电平与RS232电平的转换电路。故而,本方案在硬件设计时,直接增加了USB转串口TTL电平的电路,通过USB线与上位机连接,而与主控芯片的通信直接是TTL电平,不用再增加多余的RS232电平转换电路。图 13 USB转串口电路如图 13所示,CH340G是一款USB转串口TTL电平芯片,CR1为12MHz的无源晶体振荡器,用于提供芯片的工作时钟,UD_P、UD_N是一对USB差分对信号线。按照手册要求,当输入电压为5V时,V3经过退耦电容接地。TXD、RXD是TTL电平的串口输入输出信号。其他引脚本方案未使用,不再赘述。3.3MCU主控方案设计图 14 MCU主控方案框图图 14是MCU主控

35、方案的框图,在CPLD主控方案的基础上发展而来,框图层面上做出更改的是直流电压模块。本方案中由于只采用了5V的工作电压,所以降压模块被移除,这里又加入了供电方式自动切换模块。主控模块中使用的核心器件更换为了MCU,所以工作电压更新5V。增加了电源管理模块的反馈信号反馈给主控模块。3.3.1供电方式自动切换模块上级USB主机的供电功率有限,在扩展口有大功率USB设备存在时,使用USB总线供电会因为欠压导致设备无法正常运作,所以在USB集线器的设计中有总线供电和自供电两种供电方式,自供电就是采用独立外部电源供电。供电方式需要通过集线器芯片告诉上游的USB主机,在有大功率设备连接下游扩展口时,系统会

36、根据供电方式的不同做出不同的处理。图 15 供电方式自动切换电路在图 15中,PSELF为提供给集线器芯片的自供电、总线供电识别信号。VCC是由本电路输出的全局电压,B_VCC是由上游USB提供的总线电压。根据DC-005插座的设计,当有插头插入时,2、3脚断开,3号脚出于悬空状态,集线器芯片引脚内部上拉,为高电平,此时全局电压直接是外部输入的电源电压;当没有插头插入时,2、3接触,PSELF接地为低电平。PSELF为高电平时,场效应管处于截断状态外部独立电源与总线电源电压隔离;PSELF为低电平时,场效应管处理导通状态,B_VCC与VCC导通,USB总线电压提供全局工作电源。3.3.2电源管

37、理模块本方案中的电源管理放弃了上一方案的继电器,改为了体积较小的电源开关芯片。图 16 单路电源管理电路G547E2P11U是一款配电开关芯片,使能端低电平有效。它输出一个电流过载信号,低电平有效。输入输出电压分配通过滤波电容接地。电流过载信号输出为OC门电路,需要外部上拉。图 17 过载自保护电路CD4011是一款四2输入与非门芯片,在本方案中用于电流过载保护,CS为主控芯片传来的控制信号,OC为后级的配电开关芯片的过载信号,PWREN为传输给后级配电开关芯片的使能信号。当且仅当CS和OC信号均为高电平时,PWREN才为有效的低电平。3.3.3集线器模块本方案的集线器功能部分采用GL850G

38、-SSOP28芯片。与LQFP48封装一样,工作电压DVDD由输入芯片的5V降压输出3.3V获得,AVDD由DVDD经过磁珠和电容滤波获得。PSELF信号由电源输入部分提供,PSELF输入为高电平时代表当前使用的是独立电源,反之,使用的是总线电源。图 18 集线器芯片 图 19 集线器芯片外围电路图 19中一次为芯片工作所需要的晶振电路、手册规定的PREF下拉电路、模式设置工作状态提示电路、重置信号电路。模式设置工作状态电路在重置信号发出后的一小段室内是模式设置电路,这里输入一个拉高的电平信号,将芯片工作模式更改为PGANG;正式运作后,变成工作状态提示电路,在扩展端口与USB主机之间有数据交

39、互时,这里的LED会被点亮,指示工作状态。重置信号电路由上游USB提供的总线电压B_VCC驱动,B_VCC接入的瞬间RESET会得到一个重置信号脉冲,芯片在此信号作用下开始工作。图 20 AVDD滤波电路图 20是AVDD电压的滤波电容网络,电容在电路板上要尽量挨近AVDD的输入端。图 21 DVDD、AVDD转换电路图 21是模拟DVDD到AVDD的转换电路,中间器件是磁珠,用于抑制频率很高的噪声和尖锐的干扰,简言之起到滤波的作用。3.3.4串口通信模块设计图 22 USB转串口电路在上一方案的串口通信模块的基础上,在读取信号线上增加了分压电阻应对可能存在的压差,避免了压差引起的短路;在发送

40、信号线上,增加了一个二极管,以防止CH340对主控芯片供电。另外,本部分的工作电压独立于其他部分,采用了负责串口信号传递的USB信号线的总线电压。这样的设计,使得本部分可以独立测试。而且由于主控芯片改换成了MCU,需要重新上电,来启动程序的下载过程,如果串口部分的电源不独立,在重新上电时,本部分电路无法正常工作,会导致程序无法下载。第四章 USB设备切换模块软件设计4.1CPLD主控方案软件设计图 23 CPLD硬件描述模块框图串口接收模块的作用是将串行的信号缓冲成并行的8比特信号;串口发送模块的作用是将并行的8比特信号转换成串行信号发送;波特率信号发生器通过分频输出波特率时钟信号给串口接收、

41、发送模块工作使用;处理模块负责解析数据、反馈数据、输出控制信号等工作。4.1.1波特率信号发生器模块由于CPLD的硬件编程操作和本方案对于时钟信号的需求,需要从CPLD外部获取时钟信号。在前面的硬件设计方案中,已经提到,本方案的CPLD的时钟由一块有源晶振提供。外部时钟的频率很高,并不能直接用于串口通信,需要将其分频,才能获取本方案预期的波特率时钟。在进行分频时,一般会通过计数器循环计数的方式,但在本方案中,为了让波特率时钟边沿对准最佳采样时刻,需要增加对于计数器的控制,以实现波特率相位输出的控制。这就要求计数器计数值除了要在全局重置信号的情况下重置,还要在串口通信模块发出的控制信号下清零。4

42、.1.2串口通信模块设计串口通信需要完成发送和接收两个部分,两者要求相互独立开的波特率发生器。发送部分:系统其它部分向串口通信模块的发送部分送来工作信号,当串口发送处于闲置状态时,立即转入工作状态,比特位计数器按照波特率时钟进行计数。输出根据比特位计数的值分别输出开始位信号、数据信号、校验信号(本方案未使用)、停止位信号。接收部分:在重置状态,接收部分处于闲置状态,监测接收信号的上升边沿。当监测到串口接收信号的上升时,如果是闲置状态,就表示对端开始发送数据,通知接收部分的波特率计数器重置计数值。本部分比特位计数器根据接收波特率发生器输出的时钟上升边沿进行计数,讲串口接收信号按照此时钟串行缓冲8

43、位,在比特位计数器达到9时,将其归零,并输出接收成功信号,将接收部分重新转为闲置状态。图 24 串口信号、波特率时钟时序图如图 24所示,是串口信号与波特率时钟信号的时序对照图。波特率时钟信号占空比为50%时,其上升边沿正好对准串口接收信号的最佳采样时刻,下降边沿正好对准串口发送信号的电平状态改变时刻。图中串口信号的第一个0就是起始位,在接收时,监测它的下降沿可以校准波特率时钟信号的相位。4.1.3处理模块处理模块,作为本方案的核心,控制着全局的资源。串口接收的数据传输给控制模块,并由控制模块根据数据解析上位机的指令,在需要反馈信息给上位机时,也要通过控制模块将数据编码后传输给串口发送部分发送

44、。这里约定,上位机发送来的数据信号,最高为1时是控制指令,低4位比特位的值分别代表4个扩展端口的开关打开或者关闭指令。在处理完成后,或者接受到上位机的查询指令,本方案将通过串口将端口当前的状态发送给上位机。表 2 串口信息比特位对照表D7D6D5D4D3D2D1D0控制有效位未定义未定义未定义扩展4扩展3扩展2扩展14.2MCU主控方案软件设计图 25 MCU主控方案软件流程图除了程序刚启动时的初始化以及各个寄存器配置操作,主要功能在中断函数中实现,避免了轮询操作潜在的各种差错。4.2.1串口通信逻辑C51单片机在设计上一般至少包括提供了一组UART接口。在本方案中,如果要及时响应上位机发送来

45、的数据,显然中断是最好的方式,它可以让程序结构更加清晰,在串口接收中断到来时,从串口接收缓冲区获取数据,并进行进一步处理和操作。对于单片机而言,要进行串口通信,也同样需要有对应的接口电路。这部分电路被集成在单片机芯片的内部,成为单片机自带的一部分。C51单片机至少带有一个全双工的串行口,这个口即可以用于网络通信,也可以用于实现串行异步通信,还可以用作串行异步寄存器使用8。C51单片机的串行口主要由发送数据缓冲器、发送控制器、输出控制门、接收控制器、输入移位寄存器、接收数据缓冲器等组成,如图 26所示9。图 26 单片机串口模块示意图这里的发送缓冲器和接收缓冲器共用一个寄存器名称SBUF,因为发

46、送缓冲器只能写入而接收缓冲器只能读取。通过使用不同的读写命令决定对哪个缓冲器操作。除此之外,串行口还拥有两个专用缓冲器SCON、PCON,SCON用于存放串行口的控制和状态信息,PCON用于改变串行通信的波特率,波特率发生器可由单片机内部的定时器构成。C51单片机串行口正是通过对上述专用寄存器的设置、检测与读取来管理串行通信10。串行控制器SCON用于设定串行口的工作模式、接收/发送控制及设置状态标志,其格式为11:表 3 SCON位含义对照表D7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRISM0、SM1:串行口工作模式选择位,可选择四种工作模式,如果下表所示:表

47、4 串口工作模式表SM0SM1工作模式功能说明波特率00模式0同步移位寄存器方式fosc/1201模式110位异步接收发送由定时器控制10模式211位异步接收发送fosc/32或fosc/6411模式311位异步接收发送由定时器控制本方案采用了模式1,所以SM0、SM1被分别设置成了0和1。SM2:多机通信允许位。用于模式2和模式3。当SM2=1时,允许多机通信。本方案没有涉及到串口的多机通信故而设置为0。REN:允许接收控制位。该位相当于串行口的开关,只有当REN=1时,允许接收数据;反之,禁止接收。TB8:在模式2和模式3中,作为接收数据的第9位,而在模式1中,该位未用。RB8:在模式1中

48、是已经接收到的停止位。TI:发送中断标志。在数据发送完成后,由硬件置位,可用于查询串口发送完成状态。必须通过软件清零。RI:接收中断标志。在接收完一帧完整数据后,由硬件置位,代表接收完成,同时作为申请中断标志位,也必须要通过软件清零,以准备接收下一帧数据。PCON的最高位为SMOD设置波特率是否倍增,其余位与本方案采用的模式1无关。而具体波特率的值取决于定时器的溢出值。以定时器1为例,它拥有T1H、T1L两个寄存器分别设置初始值的高八位和低八位,在定时器工作允许后,开始根据系统时钟计数,计满就触发定时中断或者给串口部分提供发送、接收的波特率时钟。用C语言编写51单片机程序时,中断函数需要通过i

49、nterrupt和using关键字设置,前者设置指定的中断号,在指定中断引发时执行本函数,后者用于设置函数执行时使用的寄存器组。4.2.2处理控制逻辑在本方案中,控制部分的主要任务是处理从上位机传送过来的数据和指令,以及将本地的情况反馈给上位机。根据预先约定好的格式,上位机数据在首位为1时,代表控制指令,此时的低四位代表上位机要求的四个端口的通断状态。在接收中断函数中,先将SBUF中获取到的数据转存到局部变量中,进行解读并作用于输出控制信号的IO口。一段延时后,从输入实际通断情况的IO口读取当年各个IO实际的通断状态。在本方案的硬件设计中,有过载保护的环节。当某一端口发生电流过载甚至短路的情况

50、下,读取到的通断状态会和设置的不同。将读取到的状态通过串行口发送给上位机,可以使上位机了解,各个口的电流状态是否正常。第五章 PC端软件设计5.1C#设计的优势C#是一种运行于.Net框架上的面向对象的高级程序设计语言,是微软当前主推的编程语言。在语法上,C#与Java更为接近;运行机制上也是,C#和Java都是编译生成中间代码执行。尽管C#编译生成的也是exe文件,但是必须要有.Net才能运行,和C+编译生成的exe文件有很大的不同。同时,它和Delphi一样,与COM是直接集成的,是.Net Windows网络框架的主角。因为运行于.Net环境之上,所以很多很功能都不用调用复杂且难以理解的

51、系统API去实现,C#拥有丰富的功能类调用,.Net环境已经将大部分系统API实现的功能重新封装成了类。5.2串口类的使用C#中的串口类名为SerialPort,最早出现被.Net Framework 2.0所支持。在使用时,利用SerialPort类实例化出一个全局的串口通信对象,对这个串口对象进行详尽的参数设计。SerialPort类将构造函数重载了很多不同的使用形式,且有详细的属性和方法成员。非常重要的一点就是,SerialPort支持响应包括串口接收事件在内的多种事件。响应事件和消息,这一概念与中断接近,都可以使得程序避免浪费大量的代码执行事件去轮询串口接收状态。在将指定函数添加到串口

52、接收事件的响应列表中后,每当有串口驱动程序接收到一帧数据,都会通过.Net环境去触发SerialPort类的指定函数执行。在整个执行流程中,当程序执行到串口类的构造函数时,串口对象将会通过串口类被创建。继而,根据需求对串口类的各个属性进行配置。在一切就绪后,在异常机制处理框架下打开串口,如果失败的话重新构造一个串口对象。很重要的一点是,要将串口接收的处理函数添加响应串口接收事件的列表中。图 27 串口类的设置步骤图 28 串口类接收事件处理步骤利用SerialPort.GetPortNames可以获取所有可用的端口名称;为了应对各种意外状况,使用异常处理机制try-catch-finally尝

53、试打开串口,在try中加入打开串口的代码,在catch中加入打开失败的处理代码;串口信息接收的函数不是由用户手动触发的,需要通过事件托管,在串口接收到信息时,启动接收信息的处理线程,所以在串口打开后,要讲相应的线程函数添加到对象的托管列表中。5.3WPF界面设计WPF的界面设计采用了XAML语言,这是一种可扩展性应用程序标记语言,它的代表风格与HTML接近,它提供了一种便于扩展和定位的语法来定义和程序逻辑分离的用户界面。WPF比它的前辈WinForm最大的一个优势就在于使用了XAML语言去规范页面设计,用户可以直接编辑XAML代码视图,而不像WinForm一样只能在图形界面上操作。在每个控件都

54、可以通过显示的声明将界面元素或者界面事件与后台代码进行绑定,使用XAML可以将这些绑定关系一目了然的被查看。WPF提供了丰富的控件,但是我们只需要使用到以下几个比较基础的界面控件,包括:静态文本框、下拉框、按钮、复选框、组面板、列表框等。还可以用自己设计的图标替换掉默认的图标。图 29 WPF设计出的界面图5.4整体流程图 30 上位机整体流程图如图 30所示,是上位机软件的整体流程图。在界面初试话过程中,界面中的各个控件被调整到笔者预期的重置状态。继而是串口初始化,如前文所言,主要是配置串口参数。成功打开串口,将串口接收界面同步函数添加到串口接收事件的响应列表中。然后整个软件进入闲置状态,等

55、待各种事件触发。界面事件,即用户触发了界面某个控件时会引发的事件。这里值得一说的是复选框事件,笔者设定当复选框被点击时,会触发事件,将界面上设定的扩展口状态控制信息通过串口发送给下位机。如果是串口接收事件的话,会在串口接收的处理函数中,解析下位机传来的反馈信息,同时更新界面。串口接收的函数实际上是以多线程的方式运行的,为了避免接收线程和主线程对于界面同时做出修改,WPF禁止了接收线程像主线程那样直接对界面进行操作。在接收线程中如果要处理界面的话必须通过调度机制,即将修改的界面的代码块通过Dispatcher发送给系统调度由其安排处理界面。第六章 实验测试6.1硬件实物图图 31 CPLD主控方

56、案电路板正面图 32 CPLD主控方案电路板背面图 31图 32,分别是CPLD主控方案的硬件实物的两面,这套方案因为在排版布局上存在一些问题,导致集线器功能部分的晶振无法正常起振,所以集线器功能无法使用,重新排版布线后,问题应该可以得到解决。同时,也可以看到,CPLD主控方案中使用的继电器等器件占的空间比较大,导致无法在同一面放置所有的元器件。图 33 MCU主控方案电路板正面图 33是MCU主控方案的硬件实物图,本方案的硬件最终可以按照预期运行。由于采用了MCU取代CPLD省略了很大的空间,电源开关芯片也比继电器更加节约空间,故而MCU方案可以将所有的元器件都放置在同一面上。6.2串口通信模块测试串口通信是两套方案都要使用的功能,两套方案上也是用了基本相同的USB转串口电路且测试方法和结果相同,所以这里的验证只放了一组图片。第一次将USB转串口的USB接口插入电脑后,

温馨提示

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

评论

0/150

提交评论