使用VB开发串口、USB通信软件ppt课件_第1页
使用VB开发串口、USB通信软件ppt课件_第2页
使用VB开发串口、USB通信软件ppt课件_第3页
使用VB开发串口、USB通信软件ppt课件_第4页
使用VB开发串口、USB通信软件ppt课件_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

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

文档简介

1、实际应用中,通常要遇到PC与单片机系统的通信问题。由于PC和单片机(如MCS-51)都具有串口,因此经常使用串口完成两者之间的数据交换。本章主要介绍RS-232C串行通信技术以及在Windows环境下编写串口通信程序的方法、USB接口技术以及相应的开发实例。,第7章 PC端接口技术,1,RS-232串行通信技术 USB接口技术 实践与思考,本章主要内容:,第7章 PC端接口技术,2,RS-232串行通信技术,目前已经有几种。RS-232标准是目前常用的串行通信接口标准,它是美国EIA(电子工业联合会)与BELL等公司一起开发的1969年公布的通信协议。它适合于数据传输速率在020Kbps范围内

2、的通信。这个标准对串行通信接口的有关问题,如信号线功能、电器特性都做了明确规定。由于通信设备厂商都生产与RS-232C制式兼容的通信设备,因此,它作为一种标准,目前已在计算机通信接口中广泛采用。,3,RS-232串行通信技术,RS-232C标准介绍 简单的串行通信协议的设计 MSComm控件介绍 使用VB开发串行口通信软件 使用VC+开发串行口通信软件,4,RS-232C标准介绍,1. RS-232C中的引脚定义,5,RS-232C标准介绍,2. RS-232C的电气特性,RS-232C标准对逻辑电平的定义:,在TXD和RXD上:逻辑1(MARK)= 315V,逻辑0(SPACE)=+3+15

3、V。 在RTS、CTS、DSR、DTR和DCD等控制线上:信号有效(接通,ON状态,正电压)=+3+15V ,信号无效(断开,OFF状态,负电压)=315V。,RS-232C与TTL转换:,EIA-RS-232C是用正负电压来表示逻辑状态的,为了能够同计算机接口或终端的TTL器件连接,必须在EIA-RS-232C与TTL电路之间进行电平和逻辑关系的变换。实现这种变换的方法可用分立元件,也可用集成电路芯片。目前较为广泛地使用集成电路转换器件,如MC1488、SN75150芯片可完成TTL电平到EIA电平的转换,而MC1489、SN75154可实现EIA电平到TTL电平的转换。,6,RS-232C

4、标准介绍,左图显示了1488 和1489的内部结构和引脚。MC1488的引脚(2)、(4,5)、(9,10)和(12,13)接TTL输入。引脚3、6、8、11输出端口接EIA- RS-232C。MC1498的14的1、4、10、13脚接EIA输入,而3、6、8、11脚接TTL输出。具体连接方法如右图所示。,7,RS-232C标准介绍,3. RS-232C接口的电平转换,RS-232C电平采用负逻辑,即: 逻辑“0”:+5+15V 逻辑“1”:515V,RS-232C不能和TTL电平直接相连,使用时必须进行电平转换,否则将使TTL电路烧坏,实际应用时必须注意!,常用的电平转换集成电路除了上面所介

5、绍的传输线驱动器MC1488和传输线接收器MC1489。另一种常用的电平转换电路是MAX232,MAX232芯片可完成TTLEIA双向电平转换。 图为MAX232引脚图。,8,简单的串行通信协议的设计,PC和单片机最简单的连接是零调制三线经济型。下图给出了采用MAX232芯片的PC和单片机串行通信接口电路,与PC相连采用9芯标准插座。,2. PC通信软件,1. 单片机通信软件,MCS-51通过中断方式接收PC发送的数据,并回送。单片机串行口工作在方式1,晶振为6MHz,波特率2400,定时器T1按方式2工作,经计算定时器预置值为0F3H,SMOD=1。,参考程序,PC方面的通信程序可以用汇编语

6、言编写,也可以用其他高级语言例如VB、VC来编写。,汇编语言编写的参考程序,9,MSComm控件介绍,在Windows环境下,串口是系统资源的一部分。应用程序要使用串口进行通信,必须在使用前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。在Windows的系统函数中,均包含了支持通信中断的功能。对串口通信而言,Windows为相应的串口设备开放了用户定义的输出缓冲区和输入缓冲区,应用程序只能对输入/输出缓冲区进行操作,数据进出串口的操作均由系统后台完成。以接收为例,系统每接收一个字符就产生一个低级的硬件中断,系统的串口驱动程序将接收到的字符送入输入缓冲区,此时应用程

7、序就可以通过访问输入缓冲区得到接收到的字符信息。,10,MSComm控件介绍,Windows为用户提供了两种方式实现串口通信。,使用串口通信控件 使用Windows的API应用程序接口,使用串口通信控件进行串口程序开发极为方便,如果不需要对串口进行高级控制一般多选择使用MSComm控件进行开发。本章介绍在VB下使用MSComm控件进行计算机实验室温控系统串口程序开发。,11,使用串口通信控件,针对串口通信,微软公司专门提供了MSComm控件,使用该控件进行串口通信设计是十分方便的,程序员不必花时间去了解较为复杂的API函数。通过简单修改控件的属性和使用控件提供的方法,就可以实现对串口的配置、完

8、成串口接收和发送数据。,12,使用Windows的API应用程序接口,在Windows中,串口是以文件的形式被打开和访问的。串口和串口通信驱动需要使用设备控制块(Device Control Block,DCB)进行配置。应用程序使用API函数CreateFile打开串口,ReadFile读串口,CreateEvent建立事件对象和CloseHandle关闭串口。,13,使用Windows的API应用程序接口,Micronsoft Communications Control (MSComm)是Micronsoft公司提供的简化Windows下串口通信编程的ActiveX控件,它为应用程序提供

9、了通过串口收发数据的简便方法。在串口编程中,使用MSComm控件非常方便,仅需通过简单修改控件的属性和使用控件提供的方法,就可以实现对串口的配置,完成串口接收和发送数据等任务。,14,使用Windows的API应用程序接口,(1)MSComm控件的通信方法。MSComm控件提供了两种处理通信的方式:事件驱动方式和查询方式。 (2)MSComm控件的属性与常数。,CommPort属性。设置并返回通信端口号。端口号的范围为116,但如果用PortOpen属性打开一个并不存在的端口时,MSComm控件会产生错误68(设备无效)。 RThreshold属性。设置返回要接收的字符数。接收字符后,如果RT

10、hreshold属性被设置为0(默认值),则不产生OnComm事件,如果RThreshold被设成n,则接收缓冲区收到n个字符时MSComm控件产生OnComm事件。 CTSHolding属性。确定是否通过查询Clear To Send(CTS)线的状态发送数据。该属性在设计时无效,在运行时为只读。,15,使用Windows的API应用程序接口,SThreshold属性。设置并返回传输缓冲区中允许的最小字符数。若SThreshold属性被设置为0(默认值)时,数据传输不会产生OnComm事件。而当SThreshold属性被设为1,当传输缓冲区完全空时,MSComm控件产生OnComm事件。 C

11、DHolding属性。通过查询Carrier Detect(CD)线的状态确定是否有传输。该属性在设计时无效,在运行时为只读。 DSRHolding属性。确定Data Set Read(DSR)线的状态。该属性在设计时无效,在运行时为只读。 Settings属性。设置返回波特率、奇偶校验、数据位、停止位参数。当端口打开时,如果属性值非法,则MSComm控件产生错误380(非法属性值)。,16,各个属性值间用逗号隔开,其中BBBB为波特率,P为奇偶校验,D为数据位数,S为停止位数。其默认值为“9600,N,8,1”。,Settings属性的设置由4个设置组成,格式如下:,InputLen属性。设

12、置并返回Input属性从接收缓冲区中读取的字符数。InputLen 属性的默认值是0。设置InputLen为0时,使用Input将使MSComm控件读取缓冲区中全部的内容。,使用Windows的API应用程序接口,17,使用Windows的API应用程序接口,EOFEnable 属性。确定在输入过程中 MSComm 控件是否寻找文件结尾(EOF)字符。如果找到 EOF 字符,将停止输入并激活 OnComm 事件,此时 CommEvent 属性设置为 comEvEOF。 语法:object.EOFEnable = value EOFEnable 属性语法包括下列部分: value 布尔表达式,确

13、定当找到 EOF 字符时,OnComm 事件是否被激活,如“设置值”中所描述。 value的设置值为True:当EOF字符找到时 OnComm 事件被激活。 value的设置值为False(默认):当EOF字符找到时OnComm事件不被激活。,当EOFEnable属性设置为False,OnComm控件将不在输入流中寻 找EOF字符。,说明:,18,使用Windows的API应用程序接口,Handshake常数。 Handshake常数如表所示。,OnComm常数。 OnComm常数如表所示,19,使用Windows的API应用程序接口,Error常数。Error常数如表所示。,20,使用Win

14、dows的API应用程序接口,InputMode常数。InputMode常数如表所示。,21,使用Windows的API应用程序接口,(3)错误消息(MS Comm控件)。表列出MSComm控件可以捕获的错误。,22,使用Windows的API应用程序接口,23,使用VB开发串行口通信软件,用户界面设计 初始化程序 发送数据 接收数据 其他工作,使用VB开发串行通信程序的详细步骤。,24,用户界面设计,添加控件,最终完成界面,添加用户界面,新工程界面,新建工程,25,用户界面设计,修改界面上各控件的属性如下表所示。,26,初始化程序,程序的初始化部分主要完成对串口的设置工作,包括串口的选择、波

15、特率及帧结构设置、打开串口以及发送和接收触发器的时间控制等。此外,在程序运行前,还应进行清除发送和接收缓冲区的工作。这部分工作是在窗体载入的时候完成的,因此应将初始化代码放在Form_Load()函数中添加如下代码,这样就完成了程序的初始化工作。,27,初始化程序,初始化代码 Private Sub Form_Load() MSComm.CommPort = 2 设置串口2 MSComm.Settings = 9600,N,8,1 波特率9600bps,无校验,8位数据,1位停止位 MSComm.InputLen = 0 读取接收缓冲区的所有字符 MSComm.InBufferSize = 1

16、024 设置接收缓冲区为1024字节 MSComm.OutBufferSize = 512 设置发送缓冲区为512字节 MSComm.PortOpen = True 打开串口 MSComm.SThreshold = 0 不触发发送事件 MSComm.RThreshold = 1 每一个字符到接收缓冲区都触发接收事件 MSComm.InBufferCount = 0 清除发送缓冲区数据 MSComm.OutBufferCount = 0 清除接收缓冲区数据 Text_SEND.Text = 清空发送文本框 Text_RECV.Text = 清空接收文本框 End Sub,28,发送数据,本例中,

17、发送数据的过程是通过单击发送数据按钮来完成的。程序应完成下面的工作: (1)单击发送数据按钮,程序检查发送文本框中的内容是否为空,如果为空,则终止发送命令,警告后返回。 (2)检测串口是否处于打开状态,如串口关闭,则打开串口。 (3)将发送文本框中的内容送入MSComm的发送缓冲区,等待数据发送。,29,发送数据,双击发送数据部分,添加Button_Send_Click() 函数,其代码如下: 发送数据 Private Sub Button_SEND_Click() Dim x As String If Text_SEND.Text = Then 发送数据不能为空 x = MsgBox(发送数

18、据不能为空, 16) Exit Sub End If If Not MSComm.PortOpen Then 保证串口打开 MSComm.PortOpen = True End If MSComm.Output = Text_SEND.Text + Chr$(13) 发送数据 For i = 1 To 20000000 延时 Next End Sub,30,接收数据,接收数据部分使用了事件响应方式。当串口收到数据使得数据缓冲区的内容超过1字节时就会引发comEvReceive事件。OnComm()函数负责捕捉这一事件,并负责将发送缓冲区的内容送入输出文本框显示。OnComm()函数还对错误信息

19、进行捕捉,当程序发生缓冲区溢出之类的错误时,由程序员负责将缓冲区清空。,31,接收数据,要实现上述功能,首先要双击MSComm控件创建OnComm(),并输入代码: 接收数据 Private Sub MSComm_OnComm() Select Case MSComm.CommEvent 检验串口事件 错误处理 Case comEventOverrun 数据丢失 Text_SEND.Text = 清空发送缓冲区 Text_RECV.Text = 清空接收缓冲区 Text_SEND.SetFocus Exit Sub Case ComEventRxOver 接收缓冲区溢出 Text_SEND.T

20、ext = 清空发送缓冲区 Text_RECV.Text = 清空接收缓冲区 Text_SEND.SetFocus Exit Sub,32,接收数据,Case ComEventTxFull 发送缓冲区已满 Text_SEND.Text = 清空发送缓冲区 Text_RECV.Text = 清空接收缓冲区 Text_SEND.SetFocus Exit Sub 事件处理 Case ComEvReceive 接收缓冲区内有数据 Dim str As String str = MSComm.Input 从接收队列中读入字符串 Text_RECV.Text = Text_RECV.Textstr 读出

21、字符串送显 End Select End Sub,33,其他工作,完成通信的主要功能后,还需要输入程序完成其他两个按钮的功能,这两个按钮负责清除发送和接收两个文本框的内容。该部分代码内容十分简单,其代码实现如下: 清空接收文本框 Private Sub Button_RECV_C_Click() Text_RECV.Text = 清空接收文本框 Text_SEND.SetFocus End Sub 清空发送文本框 Private Sub Button_SEND_C_Click() Text_SEND.Text = 清空发送文本框 Text_SEND.SetFocus,34,其他工作,使用该软件

22、实现通信效果的界面如图所示。,运行测试程序,35,使用VC+开发串行口通信软件,用户界面设计 初始化程序 发送数据 接收数据 其他工作,使用 Visual C+6.0(VC+6.0)开发串口通信软件的方法。,36,用户界面设计,新建工程步骤1,新建工程步骤2,建立新工程后界面,编辑程序界面,添加控件,最终完成界面,37,用户界面设计,修改程序界面用到的各个控件的属性后,要使用这些控件,还需要为其添加对应的变量。该项工作是使用ClassWizard面板来完成的。在Member Variables选项卡中相应控件的Control ID,MFC单击Add Variables按钮为相应控件添加对应变量

23、。,ClassWizard面板,添加控件对应变量,38,用户界面设计,各个控件添加变量的具体设置如表所示。,添加变量后的ClassWizard面板如图所示。,39,初始化程序,在VC中,需要将这部分代码添加到对话框类的OnInitDialog()函数中。,if(m_MSComm.GetPortOpen() / 如果串口已打开,则关闭串口 m_MSComm.SetPortOpen(FALSE); m_MSComm.SetCommPort(2); / 选择COM2 if(!m_MSComm.GetPortOpen() m_MSComm.SetPortOpen(TRUE); / 打开串口 else

24、AfxMessageBox(serial port open error); m_MSComm.SetSettings(“9600,n,8,1”); / 设置波特率9600,无 校验,8位数据位,1位停止位 m_MSComm.SetRThreshold(1); / 串口接收缓冲区中有多于或等于1 个字符时将产生接收数据的OnComm事件 m_MSComm.SetInputLen(0); / 设置当前接收区数据长度为0 m_MSComm.GetInput(); / 预读缓冲区以清除残留数据,40,接收数据,当MSComm的接收缓冲区有字符时,程序会发送事件消息,OnComm()函数响应该消息并进

25、行处理。由于MSComm类的GetInput()函数返回的数据变量类型为Variant型,而编辑框对应的显示字符串是Cstring型,因此接收数据时,需要先进行类型转换。在VC中,转换过程如下:,OnComm()函数的完整代码,将Variant类型转换为ColeSafeArray类型; 将ColeSafeArray类型转换为BYTE型数组; 将BYTE型数组转换为Cstring变量。,41,发送数据,发送数据功能使用发送数据按钮对应函数Onsend()来实现。发送数据时,程序仅需要读出发送编辑框的内容,将其转化为发送程序需要的数据格式后,再使用C语言中的强制类型转换功能,将其转换为ColeVa

26、riant数据类型,由MSComm类的SetOutput()函数送入发送缓冲区即可。,发送函数OnSend()的源代码,42,其他工作,void CRS232_VCDlg:OnClr() / TODO: Add your control notification handler code here m_str_send = ; / 清空发送文本框 m_str_recv = ; / 清空接收文本框 UpdateData(FALSE); / 更新文本框内容 ,清空按钮用于清除发送编辑框和接收编辑框中的已有内容,其相应函数OnClr的代码如下:,43,其他工作,运行测试程序,连接串口线,启动软件后,

27、首先勾选十六进制发送/接收单选框,在发送文本框中添入数据“02 35 08 4A”的字符串,单击发送按钮。然后删除发送文本框中的内容,去掉十六进制发送/接收的勾选,再填入数据“Goodbye”,软件的测试效果如图所示。,44,USB接口技术,USB的全称为Universal Searial Bus,即通用串行总线。与RS-232类似,USB总线也是一种串行外围设备连接的总线形式,它是1995年由Microsoft、Compaq、IBM等公司联合制定的一种新的PC串行通信协议,从推出之日起就得到了各大厂商的广泛支持,得以不断完善和发展,目前 USB协议的最新版本已经达到了2.0。USB总线作为一

28、种新的串行总线,不仅在传输速度上得到了极大的提高,同时还具有接口简单、真正的即插即用、传输线供电、多设备级联等特性。USB总线的成功推出,对外设的接口产生了广泛的影响,目前使用USB总线接口的如键盘、鼠标、闪存、摄像头等外围设备在市场上已广泛存在。本节将系统地介绍USB总线开发的相关知识,帮助读者尽快熟悉USB开发流程。,45,USB接口技术,USB总线介绍 EZ-USB系列接口控制芯片 EZ-USB固件程序开发 USB通信设计要点,46,USB总线介绍,USB设备主要具有以下优点:,(1)可以热插拔 (2)携带方便 (3)标准统一 (4)可以连接多个设备,USB的互联 USB的设备 USB的

29、主机,USB的互联主要包括以下几方面 :,USB的总线结构 USB的电气特性与电源管理 USB总线协议 系统设置 数据流种类 USB设备 USB主机:硬件和软件,一个典型的USB系统的描述如下。它主要被定义为3个部分:,47,USB的总线结构,USB连接了USB设备和USB主机,USB的物理连接是有层次性的星形结构。每个网络集线器是在星形的中心,每条线段是点点连接。从主机到集线器或其功能部件,或从集线器到集线器或其功能部件。 在任何USB系统中,只有一个主机。USB和主机系统的接口称为主机控制器,主机控制器可由硬件、固件和软件综合实现。根集线器是由主机系统整合的,用以提供更多的连接点。,48,

30、USB的总线结构,USB的设备如下所示: 网络集线器,向USB提供了更多的连接点。 功能器件:为系统提供具体功能,如ISDN的连接,数字的游戏杆或扬声器。 USB设备提供的USB标准接口的主要依据: 对USB协议的运用。 对标准USB操作的反馈,如设置和复位。 标准性能的描述性信息。,49,USB的电气特性与电源管理,1电气特性,USB的高速信号的比特率定为12Mbps。 低速信号传送的模式定为1.5Mbps。,低速模式需要更少的EMI保护。两种模式可在用同一USB总线传输的情况下自动地动态切换。,USB传送信号和电源是通过一种4线的电缆,图中的两根线用于发送信号。存在两种数据传输率:,50,

31、USB的电气特性与电源管理,2机械特性,所有设备都有一个上行的连接。上行连接器和下行连接器不可简单地互换,这样就避免了集线器间非法的循环往复的连接。电缆中有4根导线:一对互相缠绕的标准规格线,一对符合标准的电源线。连接器有4个方向,具有屏蔽层,以避免外界干扰,并有易拆装的特性。,3. 电源,电源分配:即USB的设备如何通过USB分配得到由主计算机提供的能源。 电源管理:即通过电源管理系统,USB的系统软件和设备如何与主机协调工作。,电源主要包括以下两个方面:,51,USB总线协议,USB总线属一种轮询方式的总线,主机控制端口初始化所有的数据传输。 存在两种类型的通道:流和消息。 事务预处理允许

32、对一些数据流的通道进行控制,从而 在硬件级上防止了对缓冲区的高估或低估,通过发送不确认握手信号从而阻塞了数据的传输速度。,52,系统设置,1USB设备的安装,主机对每个设备指定唯一的USB地址,并检测这种新装的USB设备是集线器还是功能部件。,2. USB设备的拆卸,当USB设备从集线器的端口拆除后,集线器关闭该端口,并且向主机报告该设备已不存在。,3. 总线标号,总线标号就是对连接在总线上的设备指定唯一地址的一种动作 。,53,数据流种类,控制数据传送:在设备连接时用来对设备进行设置,还可对指定设备进行控制,如通道控制。 批量数据传送:大批量产生并使用的数据,在传输约束下,具有很广的动态范围

33、。 中断数据的传送:用来描述或匹配人的感觉或对特征反应的回馈。 同步数据的传送:由预先确定的传送延迟来填满预定的USB带宽。,对于任何指定的设备进行设置时一种通道只能支持上述一种方式的数据传输。,USB的结构包含4种基本的数据传输类型:,54,USB设备,USB设备分为诸如集线器、分配器或文本设备等种类。集线器类指的是一种提供USB连接点的设备,USB设备需要提供自检和属性设置的信息,USB设备必须在任何时刻执行与所定义的USB设备状态相一致的动态 。,1. 设备特性,当设备被连接、编号后,该设备就拥有一个唯一的USB地址。设备就是通过该USB地址被操作的,每一个USB设备通过一个或多个通道与

34、主机通信。所有USB设备必须在零号端口上有一指定的通道,每个USB设备的USB控制通道将与之相连。通过此控制通道,所有的USB设备都列入一个共同的准入机制,以获得控制操作的信息。此类信息主要有以下几类 :,55,USB设备,标准信息:这类信息是对所有USB设备的共同性的定义,包括一些如厂商识别、设备种类、电源管理等的项目。设备设置、接口及终端的描述在此给出。 类别信息:此类信息给出了不同USB的设备类的定义,主要反映其不同点。 USB厂商信息:USB设备的厂商可自由地提供各种有关信息,其格式不受该规范制约。此外,每个USB设备均提供USB的控制和状态信息。,56,USB设备,(2)功能部件,功

35、能部件是一种通过总线进行发送接收数据和控制信息的USB设备,通过一根电缆连接在集线器的某个端口上,功能设备一般是一种相互无关的外部设备。,定位设备:如鼠标或光笔。 输入设备:如键盘。 电信适配器:如ISDN。,一个集线器包括两部分:集线控制器(Controller)和集线放大器(Repeater)。集线放大器是一种在上游端口和下游端口之间的协议控制开关,而且硬件上支持复位、挂起、唤醒的信号。,(1)集线器,2. 设备描述,57,USB设备,台式机环境下的集线器,58,USB主机:硬件和软件,USB的主机通过主机控制器与USB设备进行交互。主机功能如下:,检测USB设备的安装和拆卸。 管理在主机

36、和USB设备之间的控制流。 管理在主机和USB设备之间的数据流。 收集状态和动作信息。 提供能量给连接的USB设备。,59,EZ-USB系列接口控制芯片,使用嵌入MCU的USB控制器,CPU只需要访问一系列寄存器和存储器,便可实现USB口的数据传输,从而简化了程序的设计,并且供应商还提供许多范例电路和测试代码,使设计者从复杂的协议解释中得到解脱。现在,许多芯片制造商开始生产一些基于通用MCU的USB控制器,采用研制人员所熟知的指令集,大大简化了编程的难度。如基于8051结构的USB控制器有:Intel公司的8X930A、8X931A;CYPRESS公司的EZ-USB等。此外,还有基于MITSU

37、BISHI 740/7600/M16C的USB芯片;基于MOTORORA HC05系列的USB芯片等。本节中介绍EZ-USB 2100系列单片机。,60,EZ-USB系列接口控制芯片,EZ-USB组成结构及特性 EZ-USB微处理器 AN2131Q的封装和引脚描述 EZ-USB的枚举和再枚举 EZ-USB端点 EZ-USB的存储空间,61,EZ-USB组成结构及特性,1EZ-USB芯片组成结构,EZ-USB的组成框图,62,EZ-USB组成结构及特性,2EZ-USB特性,(1)改进的8051内核。性能可达到标准8051的510倍,与标准8051的指令完全兼容。 (2)高度集成。EZ-USB将上

38、述多个模块集成在一个芯片中,从而减少了各芯片接口部分时序配合时的麻烦。 (3)USB 内核。EZ-USB系列芯片接收全部USB 的吞吐量。这种采用EZ-USB的设计,不受端点数目、缓冲区大小及传输速度的限制。,63,EZ-USB组成结构及特性,(4)软配置。这个特性给USB外设开发者带来许多方便。如开发过程中,当固件需要修改时,可以在PC上修改好以后,下载到EZ-USB,从而省去了编程芯片的麻烦。这种基于RAM的软配置方法,可以允许无限的配置和升级。 (5)易用的软件开发工具。驱动程序和固件的开发与调试相互独立,可加快开发的速度。,64,EZ-USB微处理器,EZ-USB微处理器是一个改进的8

39、051内核,使用标准8051指令系统,其指令执行速度比标准8051快 。,改进的8051内核还有以下几处结构上的改进:,(1)第2个数据指针,可用于存储器块之间的传输。 (2)第2个UART。 (3)第3个16位计数器/定时器(TIMER2)。 (4)与非多路复用16位地址总线的高速存储器直接接口。 (5)增加了7个中断源(INT2INT5、PFI、T2和UART1)。 (6)可变的MOVX执行时间可适应高/低速的RAM外设。 (7)256字节的内部寄存器RAM,8K字节的程序/数据复合SRAM。 (8)3.3 V工作电压。,EZ-USB 集成芯片在8051的基础上又有其他的改进:快速外部数据

40、块传输(指针自动增量,快速传输模式)、USB中断向量、CONTROL传输的SETUP和DATA部分有各自的缓冲器。,65,AN2131Q的封装和引脚描述,EZ-USB 2100系列中80引脚封装的AN2131Q的引脚排列图,66,AN2131Q的封装和引脚描述,DISCON#:引脚1,输出。该引脚由两个位DISCOE和DISCON控制。当DISCOE=0时,引脚悬空;当DISCOE=1时,驱动引脚,驱动的逻辑与DISCON位相反。 USBD,USBD+:引脚77,79 ,高阻态。USB D+/D信号。将24振荡器与USB D+/D引脚相连。 A0A15:引脚712,15,16,2629,343

41、7输出。8051地址总线。 D0D7:引脚4851,5760,I/O/高阻态。8051数据总线。该双向总线空闲时处于高阻状态,总线读时为输入,总线写时为输出。,67,AN2131Q的封装和引脚描述,PSEN:引脚80,输出。程序存储器使能端。引脚接低电平时有效,表示从外部存储器中读取程序。当EA为低电平时,程序存储器的地址从0X1B40开始;当EA为高电平时,程序存储器的地址从0X0000开始。 PA0PA7:引脚6871,7376,I/O。多功能输入/输出引脚。 PB0PB7:引脚4447,5255,I/O。多功能输入/输出引脚。 PC0PC7:引脚3033,3841,I/O。多功能输入/输

42、出引脚。,68,AN2131Q的封装和引脚描述,BKPT:引脚61,输出断点。当8051地址总线与BPADDRH/L寄存器的内容一致,且USBBAV寄存器中的断点使能(BPEN)时,该引脚被激活(高电平)。如果USBBAV寄存器中的BPPULSE位为高,就产生8个24 MHz高电平的时钟脉冲;如果BPPULSE位为低,保持高电平直到8051清除USBBAV寄存器中的BREAK位(写1)。 RESET:引脚25,输入有效高电平复位。使8051和SIE复位。该引脚一般通过1个10 k电阻接地,用1个1F电容接VCC。,69,AN2131Q的封装和引脚描述,EA:引脚24,输入。访问外部存储器。该引

43、脚有效(HI)时,8051并不是从内部程序RAM中获得代码,而是从外部存储器中读取代码。当EA=0时,8051从外部存储器的0X1B40地址(AN2131)开始读取代码。 AVCC:引脚21,电源。Analog VCC(模拟电源)。该引脚为芯片的模拟部分提供电源。 AGND:引脚18,电源。Analog Ground(模拟地)。尽可能以最短路径接地。,70,AN2131Q的封装和引脚描述,XIN:引脚19,输入晶振输入。该引脚经由12 MHz晶振和2233 pF电容接地。它也能用12 MHz的时钟电路驱动。 XOUT:引脚20,输出。晶振输出。该引脚经由12 MHz晶振和2233 pF电容接地

44、。当XIN由12 MHz时钟电路驱动时,该引脚悬空。 WAKEUP#:引脚66,输入。USB唤醒。当8051挂起时,该引脚上的一个上升沿可开启振荡器,向8051发出中断,请求推出挂起状态。维持WAKEUP#的低电平可避免EZ-USB芯片进入挂起状态。,71,AN2131Q的封装和引脚描述,SCL:引脚65,OD(漏极开路)。I2C时钟。即使没有I2C设备相连,也要用2.2 k电阻接VCC。 SDA:引脚64,OD(漏极开路)。I2C数据。即使没有I2C设备相连,也要用2.2 k电阻接VCC。 CLK24:引脚4,输入。24 MHz时钟,可锁定为12 MHz输入时钟。当CPUCS寄存器中的OUT

45、CLKEN=0时没有输出。 NC:引脚67。该引脚不连接。,72,EZ-USB的枚举和再枚举,PC运行时,若插上或拔去一个USB设备,Windows系统便会自动装载或卸去设备的驱动程序,即所谓的即插即用。这一系列动作的自动完成归因于在每一个USB设备里都有一个描述符表,记录了设备的要求和性能。当插上USB时,要经过以下几个步骤:,73,EZ-USB的枚举和再枚举,(1)主机向地址0发送“Get_Descriptor/Device”请求(设备第一次连接时,必须响应地址0)。 (2)设备响应该请求,并将ID数据发送给主机。 (3)主机向设备发出“Set_Address”请求,给设备提供一个唯一的地

46、址,以区别其他与总线相连的设备。 (4)主机发出“Get_Descriptor”请求,获取更多的设备信息。据此,主机可以了解到该设备的其他情况,如该设备的端点个数、电气要求、所需带宽,然后下载程序。,74,EZ-USB的枚举和再枚举,为了支持软特性,EZ-USB芯片能自动地作为一个不需要固件的USB设备进行枚举,所以,USB接口本身可用来下载8051的程序和描述符表。当8051复位时,EZ-USB的内核进行最初(通电)的枚举和下载。这种支持程序下载的最初USB 设备被称为“默认的USB设备”。 在代码描述符表从主机中下载到EZ-USB RAM后,8051脱离复位状态,开始执行设备程序。EZ-U

47、SB设备再次枚举,这一次是作为装入的设备。第二次枚举称为“再枚举”。再枚举的完成是EZ-USB芯片通过给USB 加电,模拟物理断开和重连接来完成的。,75,EZ-USB端点,由于USB是串行总线,因此设备端点实际上是一个FIFO存储器。主机通过发出4位地址及1位方向位,选择设备端点。所以,USB可定位32个端点:IN0IN15和OUT0OUT15。8051从OUT缓冲区中读取端点数据,将通过USB传输的端点数据写入IN缓冲区。,USB端点有4种类型:,1.块(Bulk) 2.控制 3.中断 4.同步。,76,EZ-USB的存储空间,EZ-USB的RAM被分为两部分:一部分用做程序存储空间,另一

48、部分用做数据存储空间,包括EZ-USB的数据传输缓冲区和控制寄存器。,18051存储器,EZ-USB系列芯片中,RAM空间可以是4KB或8KB,两者的地址分配空间是不同的。对8KB的片内RAM,其中通用功能的RAM占用0X00000X1B3F,共6976个字节。这部分RAM 可以通过EZ-USB内核或I2C总线上E2PROM写入指令代码或数据。,77,EZ-USB的存储空间,EEZ-USB使用RD信号、WR信号和PSEN信号扩展外部存储器,外部存储器地址最大可以扩展为0X00000XFFFF,如果扩展外部存储器既被用做程序存储器又被用做数据存储器,可以将RD信号和PSEN信号进行逻辑或形成OE

49、信号后接入存储芯片读信号,将RD、WR和PSEN进行逻辑或形成CS信号做选通信号。,2EZ-USB扩展存储器,78,EZ-USB的存储空间,当EA=0时,内部存储器的地址分配不变,对外部数据存储器,0X00000X01FF和0X7F400X7FFF可以用做数据RAM,但RD、WR、CS和OE不可用,对外部程序存储器,0X00000X1B40可以用做代码RAM,但不产生PSEN选通信号。 当EA=1时,内部RAM和外部数据存储器的地址分配方式与EA=0时相同,但程序存储器将完全指向外部存储器,这样内部程序存储器完全被用做数据存储器。,79,EZ-USB固件程序开发,人机接口设备(HID)类是Windows完全支持的USB总线设备类型中的一种。在运行Windows98或更高版本操作系统的PC上,应用程序可以与HID进行通信。对于主机的驱动和HID通信,设备必须使用相应的固件程序来满足一定的要求,通过固件程序的调度,主机才可以得到设备的描述符表以及完成端点数据的传输。,固件基础 EZ-USB固件程序架构 EZ-USB固件程序开发实例,80,固件基础,1HID类描述符表,HID类描述符表的主要目的是识别HID 通信中所使用的其他描述符表。类描述符表可以有7

温馨提示

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

评论

0/150

提交评论