毕业设计论文PC与单片机通过USB接口实现串行通信.docx
- 文档编号:24799436
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:33
- 大小:560.97KB
毕业设计论文PC与单片机通过USB接口实现串行通信.docx
《毕业设计论文PC与单片机通过USB接口实现串行通信.docx》由会员分享,可在线阅读,更多相关《毕业设计论文PC与单片机通过USB接口实现串行通信.docx(33页珍藏版)》请在冰豆网上搜索。
毕业设计论文PC与单片机通过USB接口实现串行通信
PC与单片机通过USB接口实现串行通信
摘要
基于串口通讯的原理,分析和讨论了电脑与单片机如何通过USB接口使用相关的通讯协议实现串行通信的。
本设计主要介绍如何使用一台电脑与一台单片机通过USB接口实现串行通信。
在本设计中单片机采用AT89C51,USB模块CH375,软件设计方面,PC机采用C语言编程,单片机方面用中断方式完成数据的接收和发送,程序采用也采用C语言。
关键字:
电脑,单片机,USB,串行通信
PCandSCMrealizingserialcommunicationviaaUSB
Abstract:
Basedontheprincipleofserialcommunication,thispaperanalyzesanddiscusseshowcomputerandSCMviaaUSBcommunicationprotocolrealizedwithrelatedserialcommunication.Thisdesignmainlyintroduceshowtouseacomputerandasingle-chipmicrocomputerviatheUSBinterfaceimplementationserialcommunication.Inthisdesignsingle-chipmicrocomputerAT89C51,USBmoduleCH375,softwaredesign,PCmachineadoptstheCprogramminglanguageusedinterruptmode,microcontrollerfinishdatabysendingandreceiving,theprogramalsouseClanguage.
Keywords:
Computer,MCU,USB,Serialcommunication
第1章前言
通信是指不同的独立系统利用线路互相交换数据,它的主要目的是将数据从一端传送到另一端,实现数据的交换。
在现代工业控制中,通常采用电脑作为上位机与下层的实时控制与监测设备进行通讯。
现场数据必须通过一个数据收集器传给上位机,同样上位机向现场设备发命令也必须通过数据收集器。
串行通信因其结构简单、执行速度快、抗干扰能力强等优点,已被广泛应用于数据采集和过程控制等领域。
电脑与外界的信息交换称为通信。
基本的通信方式有并行通信和串行通信两种。
串行通信是指一条信息额各位数据被逐位按顺序传送的通信方式。
串行通信的特点是:
数据位传送,按位顺序进行,最少只需要一根传输线即可完成,成本低但传送速度快,串行通信的距离可以从几米到几千米。
随着电脑技术尤其是单片微型机技术的发展,人们已越来越多的采用单片机来对一些工业控制系统中如温度、流量和压力等参数进行监测和控制。
PC机具有强大的监控和管理能力,而单片机则具有快速及灵和的控制特点,通过PC机的RS-232串行接口与外部设备进行通信,是许多测控系统中常用的一种通信解决方案。
而随着USB接口技术的成熟和使用的普及,由于USB接口大有着一系列RS-232(DB-9)串口无法比拟的优点,RS-232(DB-9)串口正在逐步的为USB接口所替代。
而在现在的大多数笔记本电脑中,出于节省物理空间和用处不大等原因,RS-232(DB-9)串口已不再设置,这就约束了基于RS-232(DB-9)串口与PC机联络的单片机设备的使用范围。
当前USB接口逐步取代RS-232(DB-9)串口已是大势所趋,单片机同电脑的USB通信在实际工作中的应用范围也将越来越广。
本文所介绍的单片机和PC机的USB通信方法,电路简单,兼容性好,可移植性强,故可作为单片机同电脑的USB通信模块广泛应用于工业和电子产品的开发中。
因此如何实现PC机与单片机之间的通讯具有非常重要的现实意义。
1.2本课题研究的主要内容
串行通信的基本原理;
USB的相关知识;
如何使用USB的功能模块;
如何实现单片机和PC机通过USB实现串行通信;
如何编写PC与单片机的数据收发程序;
针对以上内容,设计的功能模块分为以下3个方面:
〔1〕单片机系统:
实现和PC机通信的单片机选择。
〔2〕外围电路:
实现单片机和PC机之间的串行通信的USB模块电路。
〔3〕通信程序:
一方面是单片机的程序,另一方面是PC机的通信程序。
第2章串行通信基础
2.1串口通信的基本知识
2.1.1并行通信与串行通信
微机的信息交换有两种方式进行:
串行通信方式和并行通信方式。
〔一〕串行通信
串行通信的设备是最古老的沟通机制之一。
从IBM个人电脑和兼容式电脑的时代开始,几乎所有的电脑都配有一个或多个串行端口和一个并行端口。
顾名思义,一个串行端口发送和接收串行数据,一次一位数据。
相反,一个并行端口一次发送和接收8位数据,使用8个单独的电线。
提示:
要使串行通信工作,你只需要一根三根线的电缆——1根发送,1根用来接收,1根接地。
对于并行通信,你需要采用8条导线。
尽管相对较慢的传输速度远低于并行端口,串行端口通信依然因为它简单的设备和高的成本效益而是一个受欢送的连接选项。
图2-1显示了设备的使用串口连接部分到电脑。
使用串行端口,你可以连接到调制解调器,鼠标或设备等作为一个桥梁/路由器配置的目的。
图2-1一些常见的串行设备,调制解调器,鼠标和路由器
虽然今天的消费产品中在串行连接的地方使用USB连接,但还有很多的设备使用串行端口作为与外部世界的唯一连接。
一个串行设备一次发送和接收一位数据,有些设备因为在同一时间发送和接收数据,被称为全双工设备。
其他可以在任何时间发送或接收被称为单双工。
开始传输时,设备先发送一个起始位,其次是数据位。
该数据位可以是五,六,七,或8位,基于商定而定。
两个发送方和接收器必须设置为相同的数据通信比特或正确的比特率。
数据位被发送完后,就会发送一个停止位。
一个停止位可以是一位,一个半位,或两位。
波特率是数据从一个设备到另一个的传输速度。
波特率通常以每秒的位数〔bps〕来计量。
注意:
大多数串行设备传输七,八位数据。
为了检测数据已被正确发送,一个可选的校验位可以同数据位在一起。
一个校验位可以是以下内容:
奇数,偶数,mark,space或无〔空的奇偶位标志几乎总是被使用〕。
使用校验位提供了一个基本的机制,以检测已发送数据损坏,但不保证检查数据本身的错误。
然而,校验位可用于改善完整性数据传送。
大多数串行端口使用RS232C标准,它指定了一个连接器25针或9针,如图2-2所示。
大多数系列设备使用9针连接器。
图2-225针和9针串行接口
〔二〕并行通信
在电脑和终端之间的数据传输通常是靠电缆或信道上的电流或电压变化实现的。
如果一组数据的各数据位在多条线上同时被传送,这种传输被称为并行通信,如图2-3所示。
并行通信时数据的各个位同时传送,可以字或字节为单位并行进行。
并行通信速度快,但用的通信线多、成本高,故不宜进行远距离通信。
电脑或PLC各种内部总线就是以并行方式传送数据的。
图2-3并行通信
〔1〕各数据位同时传输,传输速度快、效率高,多用在实时、快速的场合。
〔2〕微机系统中最基本的信息交换方式。
〔3〕并行传递的信息不要求固定的格式。
〔4〕并行接口的数据传输率比串行接口快8倍,标准并口的数据传输率理论值为1Mbps(兆比特/秒)。
〔5〕并行传输的数据宽度可以是1~128位,甚至更宽,但是有多少数据位就需要多少根数据线,因此传输的成本较高。
〔6〕并行通信抗干扰能力差。
〔7〕在集成电路芯片的内部、同一插件板上各部件之间、同一机箱内个插件板之间的数据传输都是并行的。
〔8〕以电脑的字长,通常是8位、16位或32位为传输单位,一次传送一个字长的数据。
〔9〕适合于外部设备与微机之间进行近距离、大量和快速的信息交换。
〔10〕并行数据传输只适用于近距离的通信,通常传输距离小于30米。
串行通信工作模式
如果在通信过程的任意时刻,信息只能由一方A传到另一方B,则称为单工。
如果在任意时刻,信息既可由A传到B,又能由B传A,但只能由一个方向上的传输存在,称为半双工传输。
如果在任意时刻,线路上存在A到B和B到A的双向信号传输,则称为全双工。
线就是二线全双工信道。
由于采用了回波抵消技术,双向的传输信号不致混淆不清。
双工信道有时也将收、发信道分开,采用别离的线路或频带传输相反方向的信号,如回线传输。
在串行通信中,数据通常是在两个站〔如终端和微机〕之间进行传送,按照数据流的方向可分成三种基本的传送方式:
全双工、半双工、和单工。
但单工目前已很少采用,下面仅介绍前两种方式。
〔一〕半双工方式
假设使用同一根传输线既作接收又作发送,虽然数据可以在两个方向上传送,但通信双方不能同时收发数据,这样的传送方式就是半双工制,如图2-4所示。
采用半双工方式时,通信系统每一端的发送器和接收器,通过收/发开关转接到通信线上,进行方向的切换,因此,会产生时间延迟。
收/发开关实际上是由软件控制的电子开关。
图2-4半双工通信示意图
当电脑主机用串行接口连接显示终端时,在半双工方式中,输入过程和输出过程使用同一通路。
有些电脑和显示终端之间采用半双工方式工作,这时,从键盘打入的字符在发送到主机的同时就被送到终端上显示出来,而不是用回送的方法,所以防止了接收过程和发送过程同时进行的情况。
目前多数终端和串行接口都为半双工方式提供了换向能力,也为全双工方式提供了两条独立的引脚。
在实际使用时,一般并不需要通信双方同时既发送又接收,像打印机这类的单向传送设备,半双工甚至单工就能胜任,也无需倒向。
〔二〕全双工方式
当数据的发送和接收分流,分别由两根不同的传输线传送时,通信双方都能在同一时刻进行发送和接收操作,这样的传送方式就是全双工制,如图2-5所示。
在全双工方式下,通信系统的每一端都设置了发送器和接收器,因此,能控制数据同时在两个方向上传送。
全双工方式无需进行方向的切换,因此,没有切换操作所产生的时间延迟,这对那些不能有时间延误的交互式应用〔例如远程监测和控制系统〕十分有利。
这种方式要求通讯双方均有发送器和接收器,同时,需要2根数据线传送数据信号。
〔可能还需要控制线和状态线,以及地线〕。
图2-5全双工通信示意图
异步传输和同步传输
串行传输中,数据是一位一位按照到达的顺序依次传输的,每位数据的发送和接收都需要时钟来控制。
发送端通过发送时钟确定数据位的开始和结束,接收端需要在适当的时间间隔对数据流进行采样来正确的识别数据。
接收端和发送端必须保持步调一致,否则数据传输就会出现过失。
为了解决以上问题,串行传输可采用以下两种方法:
异步传输和同步传输。
〔一〕异步传输
通常,异步传输是以字符为传输单位,每个字符都要附加1位起始位和1位停止位,以标记一个字符的开始和结束,并以此实现数据传输同步。
所谓异步传输是指字符与字符(一个字符结束到下一个字符开始)之间的时间间隔是可变的,并不需要严格地限制它们的时间关系。
起始位对应于二进制值0,以低电平表示,占用1位宽度。
停止位对应于二进制值1,以高电平表示,占用1~2位宽度。
一个字符占用5~8位,具体取决于数据所采用的字符集。
例如,电报码字符为5位、ASCII码字符为7位、汉字码则为8位。
此外,还要附加1位奇偶校验位,可以选择奇校验或偶校验方式对该字符实施简单的过失控制。
发送端与接收端除了采用相同的数据格式(字符的位数、停止位的位数、有无校验位及校验方式等)外,还应当采用相同的传输速率。
典型的速率有:
9600b/s、19.2kb/s、56kb/s等。
异步传输又称为起止式异步通信方式,其优点是简单、可靠,适用于面向字符的、低速的异步通信场合。
例如,电脑与Modem之间的通信就是采用这种方式。
它的缺点是通信开销大,每传输一个字符都要额外附加2~3位,通信效率比较低。
例如,在使用Modem上网时,普遍感觉速度很慢,除了传输速率低之外,与通信开销大、通信效率低也密切相关。
〔二〕同步传输
通常,同步传输是以数据块为传输单位。
每个数据块的头部和尾部都要附加一个特殊的字符或比特序列,标记一个数据块的开始和结束,一般还要附加一个校验序列(如16位或32位CRC校验码),以便对数据块进行过失控制。
所谓同步传输是指数据块与数据块之间的时间间隔是固定的,必须严格地规定它们的时间关系。
和异步传输相比,数据传输单位的加长容易引起时钟漂移。
为了保证接收端能够正确地区分数据流中的每个数据位,收发双主必须通过某种方法建立起同步的时钟。
可以在发送器和接收器之间提供一条独立的时钟线路,由线路的一端〔发送器或者接收器〕定期地在每个比特时间中向线路发送一个短脉冲信号,另一端则将这些有规律的脉冲作为时钟。
这种技术在短距离传输时表现良好,但在长距离传输中,定时脉冲可能会和信息信号一样受到破坏,从而出现定时误差。
另一种方法是通过采用嵌有时钟信息的数据编码位向接收端提供同步信息。
第3章USB
3.1USB简介
USB(UniversalSerialBus,通用串行总线)是以Intel为主,并有Compaq,Microsoft,IBM,DEC,NorthernTelecom以及日本NEC等共七家公司共同制定的串行接口标准,1994年11月制定了第一个草案,1996年2月公布了USB标准版本。
USB可把多达127个外设同时联到你的系统上,所有的外设通过协议来共享USB的带宽,其12Mbps的带宽对于键盘,鼠标等低中速外设是完全足够的。
〔注在1999年2月发布的USB标准版本草案中,已建议将12Mbps的带宽提升到120-240Mbps。
〕USB允许外设在主机和其它外设工作时进行连接、配置、使用及移除,即所谓的即插即用〔Plug&Play〕。
同时USB总线的应用可以清除PC上过多的I/O端口,而以一个串行通道取代,使PC与外设之间的连接更容易。
3.1.1USB设备
USB设备包括Hub和功能设备,而功能设备又可以细分为定位设备字符设备等等。
为了进一步表达,我们给出端点(endpoint)和管道(pipe)的概念。
端点:
每一个USB设备在主机看来就是一个端点的集合,主机只能通过端点与设备进行通讯,以使用设备的功能。
每个端点实际上就是一个一定大小的数据缓冲区,这些端点在设备出厂时就已定义好。
在USB系统中,每一个端点都有唯一的地址,这是由设备地址和端点号给出的。
每个端点都有一定的特性。
其中包括:
传输方式、总线访问、频率、带宽、端点号、数据包的最大容量等等。
端点必须在设备配置后才能生效(端点0除外)。
端点0通常为控制端点。
用于设备初始化参数等。
端点12等一般用作数据端点存放主机与设备间往来的数据。
管道:
一个USB管道是驱动程序的一个数据缓冲区与一个外设端点的连接,它代表了一种在两者之间移动数据的能力。
一旦设备被配置,管道就存在了。
管道有两种类型,数据流管道〔其中的数据没有USB定义的结构〕与消息管道〔其中的数据必须有USB定义的结构〕管道只是一个逻辑上的概念。
所有的设备必须支持端点0以作为设备的控制管道。
通过控制管道可以获取完全描述USB设备的信息,包括:
设备类型、电源管理、配置、端点描述等等只要设备连接到USB上并且上电端点0就可以被访问与之对应的控制管道就存在了。
一个USB设备可以分为三个层图〔〕。
最底层是总线接口,用来发送与接收包。
中间层处理总线接口与不同的端点之间的数据流通。
一个端点是数据最终的使用者或提供者,它可以看作数据的源或接收端。
最上层就是USB设备所提供的功能,比方鼠标或键盘等。
3.1.2USB的优点
1.USB为所有的USB外设提供了单一的、易于使用的标准的连接类型。
这样一来就简化了USB外设的设计,同时也简化了用户在判断哪个插头对应哪个插槽时的任务,实现了单一的数据通用接口。
2.整个的USB的系统只有一个端口和一个中断,节省了系统资源。
3.USB支持热插拔(hotplug)和PNP(Plug-and-Play),也就是说在不关闭PC的情况下可以安全的插上和断开USB设备,电脑系统动态地检测外设的插拔,并且动态地加载驱动程序。
其他普通的外围连接标准,如SCSI设备等必须在关掉主机的情况下才能插拔外围设备。
4.USB在设备供电方面提供了灵活性。
USB直接连接到Hub或者是连接到Host的设备可以通过USB电缆供电,也可以通过电池或者其它的电力设备来供电,或使用两种供电方式的组合,并且支持节约能源的挂机和唤醒模式。
5.USB提供全速12Mbps的速率和低速的速率来适应各种不同类型的外设,还支持480Mbps的高速传输速率。
6.为了适应各种不同类型外围设备的要求,USB提供了四种不同的数据传输类型:
控制传输Bulk数据、传输中断数据传输和同步数据传输。
同步数据传输可为音频和视频等实时设备的实时数据传输提供固定带宽。
7.USB的端口具有很灵活的扩展性,一个USB端口串接上一个USBHub就可以扩展为多个USB端口。
USB有四种的传输方式控制(Control)同步(isochronous)中断(interrupt)大量(bulk)如果你是从硬件开始来设计整个的系统你还要正确选择传输的方式而作为一个驱动程序的书写者就只需要弄清楚他是采用的什么工作方式就行了通常所有的传输方式下的主动权都在PC边,也就是host边
1.控制(Control)方式传输:
控制传输是双向传输,数据量通常较小。
USB系统软件用来主要进行查询、配置和给USB设备发送通用的命令。
控制传输方式可以包括8、16、32和64字节的数据,这依赖于设备和传输速度。
控制传输典型地用在主电脑和USB外设之间的端点(Endpoint)0之间的传输,但是指定供给商的控制传输能用到其它的端点。
2.同步(isochronous)方式:
传输同步传输提供了确定的带宽和间隔时间latency)。
它被用于时间严格并具有较强容错性的流数据传输,或者用于要求恒定的数据传输率的即时应用中。
例如执行即时通话的网络应用时,使用同步传输模式是很好的选择。
同步数据要求确定的带宽值和确定的最大传输次数。
对于同步传输来说,即时的数据传递比完美的精度和数据的完整性更重要一些。
3.中断(interrupt)方式:
传输中断方式传输主要用于定时查询设备是否有中断数据要传输,设备的端点模式器的结构决定了它的查询频率,从1到255ms之间,这种传输方式典型的应用在少量的分散的,不可预测数据的传输。
键盘、操纵杆和鼠标就属于这一类型。
中断方式传输是单向的并且对于host来说只有输入的方式。
4.大量(bulk)传输:
主要应用在数据大量传输传输和接受数据上,同时又没有带宽和间隔时间要求的情况下,要求保证传输。
打印机和扫描仪属于这种类型。
这种类型的设备适合于传输非常慢和大量被延迟的传输,可以等到所有其它类型的数据的传输完成之后再传输和接收数据。
USB将其有效的带宽分成各个不同的帧(frame),每帧通常是1ms时间长。
每个设备每帧只能传输一个同步的传输包。
在完成了系统的配置信息和连接之后,USB的host就对不同的传输点和传输方式做一个统筹安排,用来适应整个的USB的带宽。
通常情况下,同步方式和中断方式的传输会占据整个带宽的90%剩下的就安排给控制方式传输数据。
3.2USB的总线协议
3.2.1总线拓扑结构
USB总线的物理连接是一种分层的菊花链结构,集线器(hub)是每个星形结构的中心。
PC机就是主机和根Hub,用户可以将外设或附加的Hub与之相连。
这些附加的Hub可以连接另外的外设以及下层HubUSB。
支持最多5个Hub层以及127个外设。
图描述了USB的物理拓扑结构,从中可以看出每一段的连接都是点对点的。
图2.1USB总线拓扑
USB的物理层
USB的物理接口包括电气特性和机械特性。
USB通过一个四线电缆来传输信号与电源,如图所示
图2.2USB电缆定义
其中D+和D-是一对差模的信号线,而VBus和GND则提供了+5V的电源,它可以给一些设备(包括Hub)供电,当然要有一定的条件限制。
USB提供了两种数据传输率:
一种是12Mb的高速(fullspeed)模式,另一种是的低速模式。
这两种模式可以同时存在于一个USB系统中而引入低速模式,主要是为了降低要求不高的设备的成本,比方鼠标、键盘等等
USB信号线在高速模式下必须使用带有屏蔽的双绞线,而且最长不能超过5m;而在低速模式时中可以使用不带屏蔽或不是双绞的线,但最长不能超过3m。
这主要是由于信号衰减的限制。
为了提供信号电压保证,以及与终端负载相匹配,在电缆的每一端都使用了不平衡的终端负载。
这种终端负载也保证了能够检测外设与端口的连接或别离,并且可以区分高速与低速设备。
所有的设备都有上行的接口。
上行和下行的接头是不能互换的,这保证了不会有非法的连接出现。
插头与插座有两个系列分别为A和B,系列A用于基本固定的外围设备,而系列B用于经常拔插的设备,这两个系列是不能互换的。
USB总线协议
所有总线操作都可以归结为三种包的传输。
任何操作都是从主机开始的,主机以预先排好的时序,发出一个描述操作类型、方向、外设地址以及端点号(这将在以下部分给予解释)的包,我们称之为令牌包(TokenPacket)。
然后在令牌中指定的数据发送者发出一个数据包或者指出它没有数据可以传输。
而数据的目的地一般要以一个确认包(HandshakePacket)作出响应以说明传输是否成功。
一.域的类型
同步域(SYNCfield):
所有的包都起始于SYNC域,它被用于本地时钟与输入信号的同步,并且在长度上定义为8位。
SYNC的最后两位作为一个记号说明PID域(标识域)的开始。
在以后的表达中,SYNC域将被省去。
标识域(PacketIdentifierField):
对于每个包,PID都是紧跟着SYNC的,PID指明了包的类型及其格式。
主机和所有的外设都必须对接收到的PID域进行解码。
如果出现错误或者解码为未定义的值,那么这个包就会被接收者忽略。
如果外设接收到一个PID,它所指明的操作类型或者方向不被支持,外设将不作出响应。
地址域(AddressField):
外设端点都是由地址域指明的,它包括两个子域:
外设地址和外设端点。
外设必须解读这两个域,其中有任何一个不匹配,这个令牌就会被忽略。
外设地址域(ADDR)指定了外设,它根据PID所说明的令牌的类型,指明了外设是数据包的发送者或接收者。
ADDR共6位,因此最多可以有127个地址。
一旦外设被复位或上电,外设的地址被缺省为0,这时必须在主机枚举过程中被赋予一个独一的地址。
而0地址只能用于缺省值而不能分配作一般的地址。
端点域(ENDP)有4位,它使设备可以拥有几个子通道。
所有的设备必须支持一个控制端点0(endpoint0)。
低速的设备最多支持2个端点:
0和一个附加端点。
高速设备可以支持最多16个端点。
帧号域(FrameNumberField):
这是一个11位的域,指明了目前帧的排号,每过一帧(1ms)这个域的值加1,到达最大值XFF后返回0。
这个域只存在于每帧开始时的SOF令牌中SOF令牌在下面将详细介绍。
数据域(DataField):
范围是01023字节,而且必须是整数个字节。
CRC校验:
包括令牌校验和数据校验。
二.包的类型
令牌包(TokenPacked):
其中包括:
IN(输入)、OUT(输出)、SET
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 论文 PC 单片机 通过 USB 接口 实现 串行 通信
![提示](https://static.bdocx.com/images/bang_tan.gif)