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

下载本文档

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

文档简介

1、2021/6/71 实际应用中,通常要遇到实际应用中,通常要遇到PC与单片机系统的通信问题。与单片机系统的通信问题。 由于由于PC和单片机(如和单片机(如MCS-51)都具有串口,因此经常使)都具有串口,因此经常使 用串口完成两者之间的数据交换。本章主要介绍用串口完成两者之间的数据交换。本章主要介绍RS-232C 串行通信技术以及在串行通信技术以及在Windows环境下编写串口通信程序的环境下编写串口通信程序的 方法、方法、USB接口技术以及相应的开发实例。接口技术以及相应的开发实例。 第7章 PC端接口技术 2021/6/72 RS-232串行通信技术串行通信技术 USB接口技术接口技术 实

2、践与思考实践与思考 本章主要内容: 第7章 PC端接口技术 2021/6/73 RS-232串行通信技术串行通信技术 目前已经有几种。目前已经有几种。RS-232标准是目前常用的串行通信接口标准是目前常用的串行通信接口 标准,它是美国标准,它是美国EIA(电子工业联合会)与(电子工业联合会)与BELL等公司一起开等公司一起开 发的发的1969年公布的通信协议。它适合于数据传输速率在年公布的通信协议。它适合于数据传输速率在0 20Kbps范围内的通信。这个标准对串行通信接口的有关问题,范围内的通信。这个标准对串行通信接口的有关问题, 如信号线功能、电器特性都做了明确规定。由于通信设备厂商如信号线

3、功能、电器特性都做了明确规定。由于通信设备厂商 都生产与都生产与RS-232C制式兼容的通信设备,因此,它作为一种标制式兼容的通信设备,因此,它作为一种标 准,目前已在计算机通信接口中广泛采用。准,目前已在计算机通信接口中广泛采用。 2021/6/74 RS-232串行通信技术串行通信技术 RS-232C标准介绍标准介绍 简单的串行通信协议的设计简单的串行通信协议的设计 MSComm控件介绍控件介绍 使用使用VB开发串行口通信软件开发串行口通信软件 使用使用VC+开发串行口通信软件开发串行口通信软件 2021/6/75 RS-232C标准介绍标准介绍 1. RS-232C中的引脚定义中的引脚定

4、义 9针RS-232串口(DB9)25针RS-232串口(DB25) 引脚简写功 能 说 明 引脚简写功 能 说 明 1CD载波侦测(Carrier Detect)8CD载波侦测(Carrier Detect) 2RXD接收数据(Receive)3RXD接收数据(Receive) 3TXD发送数据(Transmit)2TXD发送数据(Transmit) 4DTR 数据终端准备(Data Terminal Ready) 20DTR 数据终端准备(Data Terminal Ready) 5GND地线(Ground)7GND地线(Ground) 6DSR数据准备好(Data Set Ready)6

5、DSR数据准备好(Data Set Ready) 7RTS请求发送(Request To Send)4RTS请求发送(Request To Send) 8CTS清除发送(Clear To Send)5CTS清除发送(Clear To Send) 9RI振铃指示(Ring Indicator)22RI振铃指示(Ring Indicator) 2021/6/76 RS-232C标准介绍标准介绍 2. RS-232C的电气特性的电气特性 RS-232C标准对逻辑电平的定义:标准对逻辑电平的定义: 在TXD和RXD上:逻辑1(MARK)= 315V,逻辑0(SPACE)=+3+15V。 在RTS、CT

6、S、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电平的 转换。 2021/6/77

7、 RS-232C标准介绍标准介绍 左图显示了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输出。 具体连接方法如右图所示。 2021/6/78 RS-232C标准介绍标准介绍 3. RS-232C接口的电平转换接口的电平转换 RS-232C电平采用负逻辑,即:电平采用负逻辑,即: 逻辑逻辑“0”:+5+15V 逻辑逻辑“1”: 5 15V RS-232C不能和TTL电平直接 相连,使

8、用时必须进行电平转换, 否则将使TTL电路烧坏,实际应用 时必须注意! 常用的电平转换集成电路除了上 面所介绍的传输线驱动器MC1488和 传输线接收器MC1489。另一种常用 的电平转换电路是MAX232, MAX232芯片可完成TTLEIA双向 电平转换。 图为MAX232引脚图。 2021/6/79 简单的串行通信协议的设计简单的串行通信协议的设计 PC和单片机最简单的连接是零调制三线经济型。下图给出了采用MAX232芯片的 PC和单片机串行通信接口电路,与PC相连采用9芯标准插座。 2. PC通信软件通信软件 1. 单片机通信软件单片机通信软件 MCS-51通过中断 方式接收PC发送的

9、数 据,并回送。单片机 串行口工作在方式1, 晶振为6MHz,波特率 2400,定时器T1按方 式2工作,经计算定时 器预置值为0F3H, SMOD=1。 参考程序参考程序 PC方面的通信程序可以用汇编语言编写,也可以 用其他高级语言例如VB、VC来编写。 汇编语言编写的参考程序汇编语言编写的参考程序 2021/6/710 MSComm控件介绍控件介绍 在在Windows环境下,串口是系统资源的一部分。应用程序要环境下,串口是系统资源的一部分。应用程序要 使用串口进行通信,必须在使用前向操作系统提出资源申请要求使用串口进行通信,必须在使用前向操作系统提出资源申请要求 (打开串口),通信完成后必

10、须释放资源(关闭串口)。在(打开串口),通信完成后必须释放资源(关闭串口)。在 Windows的系统函数中,均包含了支持通信中断的功能。对串口的系统函数中,均包含了支持通信中断的功能。对串口 通信而言,通信而言,Windows为相应的串口设备开放了用户定义的输出缓为相应的串口设备开放了用户定义的输出缓 冲区和输入缓冲区,应用程序只能对输入冲区和输入缓冲区,应用程序只能对输入/输出缓冲区进行操作,输出缓冲区进行操作, 数据进出串口的操作均由系统后台完成。以接收为例,系统每接数据进出串口的操作均由系统后台完成。以接收为例,系统每接 收一个字符就产生一个低级的硬件中断,系统的串口驱动程序将收一个字符

11、就产生一个低级的硬件中断,系统的串口驱动程序将 接收到的字符送入输入缓冲区,此时应用程序就可以通过访问输接收到的字符送入输入缓冲区,此时应用程序就可以通过访问输 入缓冲区得到接收到的字符信息。入缓冲区得到接收到的字符信息。 2021/6/711 MSComm控件介绍控件介绍 Windows为用户提供了两种方式实现串口通信。 使用串口通信控件使用串口通信控件 使用使用Windows的的API应用程序接口应用程序接口 使用串口通信控件进行串口程序开发极为方便,如果不需要对串 口进行高级控制一般多选择使用MSComm控件进行开发。本章介绍在 VB下使用MSComm控件进行计算机实验室温控系统串口程序

12、开发。 2021/6/712 使用串口通信控件使用串口通信控件 针对串口通信,微软公司专门提供了针对串口通信,微软公司专门提供了MSComm控件,控件, 使用该控件进行串口通信设计是十分方便的,程序员不必使用该控件进行串口通信设计是十分方便的,程序员不必 花时间去了解较为复杂的花时间去了解较为复杂的API函数。通过简单修改控件的函数。通过简单修改控件的 属性和使用控件提供的方法,就可以实现对串口的配置、属性和使用控件提供的方法,就可以实现对串口的配置、 完成串口接收和发送数据。完成串口接收和发送数据。 2021/6/713 使用使用Windows的的API应用程序接口应用程序接口 在在Wind

13、ows中,串口是以文件的形式被打开和访问的。中,串口是以文件的形式被打开和访问的。 串口和串口通信驱动需要使用设备控制块(串口和串口通信驱动需要使用设备控制块(Device Control Block,DCB)进行配置。应用程序使用)进行配置。应用程序使用API函数函数 CreateFile打开串口,打开串口,ReadFile读串口,读串口,CreateEvent建立建立 事件对象和事件对象和CloseHandle关闭串口。关闭串口。 2021/6/714 使用使用Windows的的API应用程序接口应用程序接口 Micronsoft Communications Control (MSCom

14、m) 是是Micronsoft公司提供的简化公司提供的简化Windows下串口通信编程下串口通信编程 的的ActiveX控件,它为应用程序提供了通过串口收发数据控件,它为应用程序提供了通过串口收发数据 的简便方法。在串口编程中,使用的简便方法。在串口编程中,使用MSComm控件非常方控件非常方 便,仅需通过简单修改控件的属性和使用控件提供的方法,便,仅需通过简单修改控件的属性和使用控件提供的方法, 就可以实现对串口的配置,完成串口接收和发送数据等任就可以实现对串口的配置,完成串口接收和发送数据等任 务。务。 2021/6/715 使用使用Windows的的API应用程序接口应用程序接口 (1)

15、MSComm控件的通信方法。控件的通信方法。MSComm控件提供了两种处理通信的 方式:事件驱动方式和查询方式。 (2)MSComm控件的属性与常数。控件的属性与常数。 CommPort属性。设置并返回通信端口号。端口号的范围为116,但如果 用PortOpen属性打开一个并不存在的端口时,MSComm控件会产生错误68 (设备无效)。 RThreshold属性。设置返回要接收的字符数。接收字符后,如果RThreshold 属性被设置为0(默认值),则不产生OnComm事件,如果RThreshold被设 成n,则接收缓冲区收到n个字符时MSComm控件产生OnComm事件。 CTSHoldin

16、g属性。确定是否通过查询Clear To Send(CTS)线的状态发送 数据。该属性在设计时无效,在运行时为只读。 2021/6/716 使用使用Windows的的API应用程序接口应用程序接口 SThreshold属性。设置并返回传输缓冲区中允许的最小字符数。若 SThreshold属性被设置为0(默认值)时,数据传输不会产生OnComm事件。 而当SThreshold属性被设为1,当传输缓冲区完全空时,MSComm控件产生 OnComm事件。 CDHolding属性。通过查询Carrier Detect(CD)线的状态确定是否有传输。 该属性在设计时无效,在运行时为只读。 DSRHold

17、ing属性。确定Data Set Read(DSR)线的状态。该属性在设计时 无效,在运行时为只读。 Settings属性。设置返回波特率、奇偶校验、数据位、停止位参数。当端口 打开时,如果属性值非法,则MSComm控件产生错误380(非法属性值)。 2021/6/717 BBBBPDS 各个属性值间用逗号隔开,其中BBBB为波特率,P为奇偶校验,D为数 据位数,S为停止位数。其默认值为“9600,N,8,1”。 Settings属性的设置由4个设置组成,格式如下: InputLen属性。设置并返回Input属性从接收缓冲区中读取的字符数。 InputLen 属性的默认值是0。设置InputL

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

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

20、f握手 comRTS2Request-to-send/clear-to-send握手 comRTSXOnX Off 3Request-to-send和clear-to-send握手皆可 常 数值描 述 comEvSend1发送事件 comEvReceive2接收事件 comEvCTS3clear-to-send线变化 comEvDSR4data-set ready线变化 comEvCD5carrier detect线变化 comEvRing6振铃检测 comEvEOF7文件结束 2021/6/720 使用使用Windows的的API应用程序接口应用程序接口 Error常数。Error常数如表所

21、示。 常 数值描 述 comEventBreak1001接收到中断信号 comEventCTSTO1002Clear-to-send超时 comEventDSRTO1003Data-set ready超时 comEventFrame1004帧错误 comEventOverrun1006端口超速 comEventCDTO1007Carrier detect超时 comEventRxOver1008接收缓冲区溢出 comEventRxParity1009Parity错误 comEventTxFull1010传输缓冲区满 comEventDCB1011 检索端口设备控制块(DCB) 时的意外 错误

22、2021/6/721 使用使用Windows的的API应用程序接口应用程序接口 InputMode常数。InputMode常数如表所示。 常 数值描 述 comInputModeText0 (默认)通过Input属性以文本方式取回数 据 comInputModeBinary1通过Input属性以二进制方式检取回数据 2021/6/722 使用使用Windows的的API应用程序接口应用程序接口 (3)错误消息()错误消息(MS Comm控件)。控件)。表列出MSComm控件可以捕获的错误。 值描 述常 数 380无效属性值comInvalidPropertyValue 383属性为只读comS

23、etNotSupported 394属性为只读comGetNotSupported 8000端口打开时操作不合法 comPortOpen 8001超时值必须大于 8002无效端口号 ComPortInvalid8003属性只在运行时有效 8004属性在运行时为只读 8005端口已经打开 comPortAlreadyOpen 8006设备标识符无效或不支持该标识符 2021/6/723 使用使用Windows的的API应用程序接口应用程序接口 值描 述常 数 8007不支持设备的波特率 comPortAlreadyOpen 8008指定的字节大小无效 8009默认参数错误 8010硬件不可用(被

24、其他设备锁定) 8011函数不能分配队列 8012设备没有打开 comNoOpen8013设备已经打开 8014不能使用comm通知 8015不能设置comm状态 comSetCommStateFailed 8016不能设置comm事件屏蔽 8018仅当端口打开时操作才有效 comPortNotOpen 8019设备忙 8020读comm设备错误comReadError 8021为该端口检索设备控制块时的内部错误comDCBError 2021/6/724 使用使用VB开发串行口通信软件开发串行口通信软件 l 用户界面设计用户界面设计 l 初始化程序初始化程序 l 发送数据发送数据 l 接收数

25、据接收数据 l 其他工作其他工作 使用VB开发串行通信程序的详细步骤。 2021/6/725 用户界面设计用户界面设计 添加控件 最终完成界面 添加用户界面 新工程界面 新建工程 2021/6/726 用户界面设计用户界面设计 修改界面上各控件的属性如下表所示。 控件名称Name 属性Caption属性 FormRS232_VBRS232_VB Lable1Lable1发送数据 Lable2Lable2接收数据 Text1Text_SEND Text2Text_RECV Command1Button_SEND发送数据 Command2Button_SEND_C清空发送文本框 Command3B

26、utton_RECV_C清空接收文本框 MSComm1MSComm 2021/6/727 初始化程序初始化程序 程序的初始化部分主要完成对串口的设置工作,包括串程序的初始化部分主要完成对串口的设置工作,包括串 口的选择、波特率及帧结构设置、打开串口以及发送和接收口的选择、波特率及帧结构设置、打开串口以及发送和接收 触发器的时间控制等。此外,在程序运行前,还应进行清除触发器的时间控制等。此外,在程序运行前,还应进行清除 发送和接收缓冲区的工作。这部分工作是在窗体载入的时候发送和接收缓冲区的工作。这部分工作是在窗体载入的时候 完成的,因此应将初始化代码放在完成的,因此应将初始化代码放在Form_L

27、oad()函数中添加函数中添加 如下代码,这样就完成了程序的初始化工作。如下代码,这样就完成了程序的初始化工作。 2021/6/728 初始化程序初始化程序 初始化代码初始化代码 Private Sub Form_Load() MSComm.CommPort = 2 设置串口2 MSComm.Settings = 9600,N,8,1 波特率9600bps,无校验,8位数据, 1位停止位 MSComm.InputLen = 0 读取接收缓冲区的所有字符 MSComm.InBufferSize = 1024 设置接收缓冲区为1024字节 MSComm.OutBufferSize = 512 设置

28、发送缓冲区为512字节 MSComm.PortOpen = True 打开串口 MSComm.SThreshold = 0 不触发发送事件 MSComm.RThreshold = 1 每一个字符到接收缓冲区 都触发接收事件 MSComm.InBufferCount = 0 清除发送缓冲区数据 MSComm.OutBufferCount = 0 清除接收缓冲区数据 Text_SEND.Text = 清空发送文本框 Text_RECV.Text = 清空接收文本框 End Sub 2021/6/729 发送数据发送数据 本例中,发送数据的过程是通过单击发送数据按钮来 完成的。程序应完成下面的工作:

29、 (1)单击)单击发送数据发送数据按钮,程序检查发送文本框中的内容是否为按钮,程序检查发送文本框中的内容是否为 空,如果为空,则终止发送命令,警告后返回。空,如果为空,则终止发送命令,警告后返回。 (2)检测串口是否处于打开状态,如串口关闭,则打开串口。)检测串口是否处于打开状态,如串口关闭,则打开串口。 (3)将发送文本框中的内容送入)将发送文本框中的内容送入MSComm的发送缓冲区,等待的发送缓冲区,等待 数据发送。数据发送。 2021/6/730 发送数据发送数据 双击发送数据部分,添加Button_Send_Click() 函数,其代码如下: 发送数据 Private Sub Butt

30、on_SEND_Click() Dim x As String If Text_SEND.Text = Then 发送数据不能为空 x = MsgBox(发送数据不能为空, 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 2021/6/731 接收数据接收数据 接收数据部分使用了事件响应方式。当串口收到 数

31、据使得数据缓冲区的内容超过1字节时就会引发 comEvReceive事件。OnComm()函数负责捕捉这一 事件,并负责将发送缓冲区的内容送入输出文本框显 示。OnComm()函数还对错误信息进行捕捉,当程序 发生缓冲区溢出之类的错误时,由程序员负责将缓冲 区清空。 2021/6/732 接收数据接收数据 要实现上述功能,首先要双击MSComm控件创建OnComm(),并输入代 码: 接收数据 Private Sub MSComm_OnComm() Select Case MSComm.CommEvent 检验串口事件 错误处理 Case comEventOverrun 数据丢失 Text_S

32、END.Text = 清空发送缓冲区 Text_RECV.Text = 清空接收缓冲区 Text_SEND.SetFocus Exit Sub Case ComEventRxOver 接收缓冲区溢出 Text_SEND.Text = 清空发送缓冲区 Text_RECV.Text = 清空接收缓冲区 Text_SEND.SetFocus Exit Sub 2021/6/733 接收数据接收数据 Case ComEventTxFull 发送缓冲区已满 Text_SEND.Text = 清空发送缓冲区 Text_RECV.Text = 清空接收缓冲区 Text_SEND.SetFocus Exit

33、Sub 事件处理 Case ComEvReceive 接收缓冲区内有数据 Dim str As String str = MSComm.Input 从接收队列中读入字符串 Text_RECV.Text = Text_RECV.Textstr 读出字符串送显 End Select End Sub 2021/6/734 其他工作其他工作 完成通信的主要功能后,还需要输入程序完成其他两个按钮的功能, 这两个按钮负责清除发送和接收两个文本框的内容。该部分代码内容十分 简单,其代码实现如下: 清空接收文本框 Private Sub Button_RECV_C_Click() Text_RECV.Text

34、 = 清空接收文本框 Text_SEND.SetFocus End Sub 清空发送文本框 Private Sub Button_SEND_C_Click() Text_SEND.Text = 清空发送文本框 Text_SEND.SetFocus 2021/6/735 其他工作其他工作 使用该软件实现通信效果的界面如图所示。 运行测试程序 2021/6/736 使用使用VC+开发串行口通信软件开发串行口通信软件 l 用户界面设计用户界面设计 l 初始化程序初始化程序 l 发送数据发送数据 l 接收数据接收数据 l 其他工作其他工作 使用 Visual C+6.0(VC+6.0)开发串口通信 软

35、件的方法。 2021/6/737 用户界面设计用户界面设计 新建工程步骤1 新建工程步骤2 建立新工程后界面 编辑程序界面 添加控件 最终完成界面 2021/6/738 用户界面设计用户界面设计 修改程序界面用到的各个控件的属性后,要使用这些控件,还需要为其 添加对应的变量。该项工作是使用ClassWizard面板来完成的。在Member Variables选项卡中相应控件的Control ID,MFC单击Add Variables按钮为相 应控件添加对应变量。 ClassWizard面板面板 添加控件对应变量添加控件对应变量 2021/6/739 用户界面设计用户界面设计 各个控件添加变量的

36、具体设置如表所示。 控件ID对应变量变量类别变量类型 IDC_EDIT_RECVm_str_recvValueCString IDC_EDIT_SENDm_str_sendValueCString IDC_HEXM_hexcontrolCButton IDC_MSCOMMm_mscommcontrolCMSComm 添加变量后的ClassWizard面板如图所示。 2021/6/740 初始化程序初始化程序 在VC中,需要将这部分代码添加到对话框类的OnInitDialog()函数中。 if(m_MSComm.GetPortOpen() / 如果串口已打开,则关闭串口 m_MSComm.Set

37、PortOpen(FALSE); m_MSComm.SetCommPort(2); / 选择COM2 if(!m_MSComm.GetPortOpen() m_MSComm.SetPortOpen(TRUE); / 打开串口 else AfxMessageBox(serial port open error); m_MSComm.SetSettings(“9600,n,8,1”); / 设置波特率9600,无 校验,8位数据位,1位停止位 m_MSComm.SetRThreshold(1); / 串口接收缓冲区中有多于或等于1 个字符时将产生接收数据的OnComm事件 m_MSComm.Set

38、InputLen(0); / 设置当前接收区数据长度为0 m_MSComm.GetInput(); / 预读缓冲区以清除残留数据 2021/6/741 接收数据接收数据 当MSComm的接收缓冲区有字符时,程序会发送事件消息, OnComm()函数响应该消息并进行处理。由于MSComm类的GetInput() 函数返回的数据变量类型为Variant型,而编辑框对应的显示字符串是 Cstring型,因此接收数据时,需要先进行类型转换。在VC中,转换过 程如下: OnComm()函数的完整代码 将Variant类型转换为ColeSafeArray类型; 将ColeSafeArray类型转换为BYT

39、E型数组; 将BYTE型数组转换为Cstring变量。 2021/6/742 发送数据发送数据 发送数据功能使用发送数据按钮对应函数Onsend() 来实现。发送数据时,程序仅需要读出发送编辑框的内容, 将其转化为发送程序需要的数据格式后,再使用C语言中 的强制类型转换功能,将其转换为ColeVariant数据类型, 由MSComm类的SetOutput()函数送入发送缓冲区即可。 发送函数OnSend()的源代码 2021/6/743 其他工作其他工作 void CRS232_VCDlg:OnClr() / TODO: Add your control notification handle

40、r code here m_str_send = ; / 清空发送文本框 m_str_recv = ; / 清空接收文本框 UpdateData(FALSE); / 更新文本框内容 清空按钮用于清除发送编辑框和接收编辑框中的已有内 容,其相应函数OnClr的代码如下: 2021/6/744 其他工作其他工作 运行测试程序运行测试程序 连接串口线,启动软件后,首先勾选十六进制发送/接收单选框, 在发送文本框中添入数据“02 35 08 4A”的字符串,单击发送按钮。 然后删除发送文本框中的内容,去掉十六进制发送/接收的勾选,再填 入数据“Goodbye”,软件的测试效果如图所示。 2021/6/

41、745 USB接口技术接口技术 USB的全称为Universal Searial Bus,即通用串行总线。与RS-232类 似,USB总线也是一种串行外围设备连接的总线形式,它是1995年由 Microsoft、Compaq、IBM等公司联合制定的一种新的PC串行通信协议, 从推出之日起就得到了各大厂商的广泛支持,得以不断完善和发展,目前 USB协议的最新版本已经达到了2.0。USB总线作为一种新的串行总线,不 仅在传输速度上得到了极大的提高,同时还具有接口简单、真正的即插即 用、传输线供电、多设备级联等特性。USB总线的成功推出,对外设的接 口产生了广泛的影响,目前使用USB总线接口的如键盘

42、、鼠标、闪存、摄 像头等外围设备在市场上已广泛存在。本节将系统地介绍USB总线开发的 相关知识,帮助读者尽快熟悉USB开发流程。 2021/6/746 USB接口技术接口技术 USB总线介绍 EZ-USB系列接口控制芯片 EZ-USB固件程序开发 USB通信设计要点 2021/6/747 USB总线介绍总线介绍 USB设备主要具有以下优点: (1)可以热插拔)可以热插拔 (2)携带方便)携带方便 (3)标准统一)标准统一 (4)可以连接多个设备)可以连接多个设备 USB的互联 USB的设备 USB的主机 1. 总线的拓扑结构:总线的拓扑结构:USB设备与主机之间的各种设备与主机之间的各种 连接

43、方式。连接方式。 2. 内部层次关系:根据性能叠置,内部层次关系:根据性能叠置,USB的任务被的任务被 分配到系统的每一个层次。分配到系统的每一个层次。 3. 数据流模式:描述了数据在系统中通过数据流模式:描述了数据在系统中通过USB从从 产生方到使用方的流动方式。产生方到使用方的流动方式。 4. USB的调度:的调度:USB提供一个共享的连接。对可提供一个共享的连接。对可 以使用的连接进行调度以支持同步数据传输,并以使用的连接进行调度以支持同步数据传输,并 且避免优先级判别的开销。且避免优先级判别的开销。 USB的互联主要包括以下几方面的互联主要包括以下几方面 : USB的总线结构的总线结构

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

45、主机系统整合的,用以提供更多的连 接点。 2021/6/749 USB的总线结构的总线结构 USB的设备如下所示: 网络集线器,向网络集线器,向USB提供了更多的连接点。提供了更多的连接点。 功能器件:为系统提供具体功能,如功能器件:为系统提供具体功能,如ISDN的连接,数字的游戏杆或扬声的连接,数字的游戏杆或扬声 器。器。 USB设备提供的USB标准接口的主要依据: 对对USB协议的运用。协议的运用。 对标准对标准USB操作的反馈,如设置和复位。操作的反馈,如设置和复位。 1. 标准性能的描述性信息。标准性能的描述性信息。 2021/6/750 USB的电气特性与电源管理的电气特性与电源管理

46、 1电气特性电气特性 USB的高速信号的比特率定为的高速信号的比特率定为12Mbps。 低速信号传送的模式定为低速信号传送的模式定为1.5Mbps。 USB的电缆 低速模式需要更少的EMI保护。两种模式可在用同一USB总线传输的 情况下自动地动态切换。 USB传送信号和电源是通过一种4线的电缆,图中的两根线用于发送 信号。存在两种数据传输率: 2021/6/751 USB的电气特性与电源管理的电气特性与电源管理 2机械特性机械特性 所有设备都有一个上行的连接。上行连接器和下行连接器不可简单 地互换,这样就避免了集线器间非法的循环往复的连接。电缆中有4根 导线:一对互相缠绕的标准规格线,一对符合

47、标准的电源线。连接器有 4个方向,具有屏蔽层,以避免外界干扰,并有易拆装的特性。 3. 电源电源 电源分配:电源分配:即USB的设备如何通过USB分配得到由主计算机提供 的能源。 电源管理:电源管理:即通过电源管理系统,USB的系统软件和设备如何与 主机协调工作。 电源主要包括以下两个方面: 2021/6/752 USB总线协议总线协议 USB总线属一种轮询方式的总线,主机控制端口初始 化所有的数据传输。 存在两种类型的通道:流和消息。 事务预处理允许对一些数据流的通道进行控制,从而 在硬件级上防止了对缓冲区的高估或低估,通过发送不 确认握手信号从而阻塞了数据的传输速度。 2021/6/753

48、 系统设置系统设置 1USB设备的安装设备的安装 主机对每个设备指定唯一的USB地址,并检测这种新装的USB设 备是集线器还是功能部件。 2. USB设备的拆卸设备的拆卸 当USB设备从集线器的端口拆除后,集线器关闭该端口,并且向 主机报告该设备已不存在。 3. 总线标号总线标号 总线标号就是对连接在总线上的设备指定唯一地址的一种动作 。 2021/6/754 数据流种类数据流种类 控制数据传送:在设备连接时用来对设备进行设置,还可对指定控制数据传送:在设备连接时用来对设备进行设置,还可对指定 设备进行控制,如通道控制。设备进行控制,如通道控制。 批量数据传送:大批量产生并使用的数据,在传输约

49、束下,具有批量数据传送:大批量产生并使用的数据,在传输约束下,具有 很广的动态范围。很广的动态范围。 中断数据的传送:用来描述或匹配人的感觉或对特征反应的回馈。中断数据的传送:用来描述或匹配人的感觉或对特征反应的回馈。 同步数据的传送:由预先确定的传送延迟来填满预定的同步数据的传送:由预先确定的传送延迟来填满预定的USB带宽。带宽。 对于任何指定的设备进行设置时一种通道只能支持上述一种方 式的数据传输。 USB的结构包含4种基本的数据传输类型: 2021/6/755 USB设备设备 USB设备分为诸如集线器、分配器或文本设备等种类。集线器类指 的是一种提供USB连接点的设备,USB设备需要提供

50、自检和属性设置的 信息,USB设备必须在任何时刻执行与所定义的USB设备状态相一致的 动态 。 1. 设备特性设备特性 当设备被连接、编号后,该设备就拥有一个唯一的USB地址。设备 就是通过该USB地址被操作的,每一个USB设备通过一个或多个通道与 主机通信。所有USB设备必须在零号端口上有一指定的通道,每个USB 设备的USB控制通道将与之相连。通过此控制通道,所有的USB设备都 列入一个共同的准入机制,以获得控制操作的信息。此类信息主要有以此类信息主要有以 下几类下几类 : 2021/6/756 USB设备设备 标准信息:这类信息是对所有USB设备的共同性的定义,包括一些 如厂商识别、设备

51、种类、电源管理等的项目。设备设置、接口及终 端的描述在此给出。 类别信息:此类信息给出了不同USB的设备类的定义,主要反映其 不同点。 USB厂商信息:USB设备的厂商可自由地提供各种有关信息,其格 式不受该规范制约。此外,每个USB设备均提供USB的控制和状态 信息。 2021/6/757 USB设备设备 (2)功能部件 功能部件是一种通过总线进行发送接收数据和控制信息的USB设备, 通过一根电缆连接在集线器的某个端口上,功能设备一般是一种相互无关 的外部设备。 定位设备:如鼠标或光笔。 输入设备:如键盘。 电信适配器:如ISDN。 一个集线器包括两部分:集线控 制器(Controller)

52、和集线放大器 (Repeater)。集线放大器是一种在 上游端口和下游端口之间的协议控制 开关,而且硬件上支持复位、挂起、 唤醒的信号。 (1)集线器 2. 设备描述设备描述 2021/6/758 USB设备设备 台式机环境下的集线器 2021/6/759 USB主机:硬件和软件主机:硬件和软件 USB的主机通过主机控制器与USB设备进行交互。主机功 能如下: 检测检测USB设备的安装和拆卸。设备的安装和拆卸。 管理在主机和管理在主机和USB设备之间的控制流。设备之间的控制流。 管理在主机和管理在主机和USB设备之间的数据流。设备之间的数据流。 收集状态和动作信息。收集状态和动作信息。 提供能

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

54、/M16C的USB芯片;基于MOTORORA HC05系 列的USB芯片等。本节中介绍EZ-USB 2100系列单片机。 2021/6/761 EZ-USB系列接口控制芯片系列接口控制芯片 EZ-USB组成结构及特性 EZ-USB微处理器 AN2131Q的封装和引脚描述 EZ-USB的枚举和再枚举 EZ-USB端点 EZ-USB的存储空间 2021/6/762 EZ-USB组成结构及特性组成结构及特性 1EZ-USB芯片组成结构芯片组成结构 No Image EZ-USB的组成框图 2021/6/763 EZ-USB组成结构及特性组成结构及特性 2EZ-USB特性特性 (1)改进的)改进的80

55、51内核。内核。性能可达到标准8051的510倍,与标准 8051的指令完全兼容。 (2)高度集成)高度集成。EZ-USB将上述多个模块集成在一个芯片中,从而 减少了各芯片接口部分时序配合时的麻烦。 (3)USB 内核。内核。EZ-USB系列芯片接收全部USB 的吞吐量。这种采 用EZ-USB的设计,不受端点数目、缓冲区大小及传输速度的限制。 2021/6/764 EZ-USB组成结构及特性组成结构及特性 (4)软配置。)软配置。这个特性给USB外设开发者带来许多方便。如开发过 程中,当固件需要修改时,可以在PC上修改好以后,下载到EZ- USB,从而省去了编程芯片的麻烦。这种基于RAM的软配

56、置方法, 可以允许无限的配置和升级。 (5)易用的软件开发工具)易用的软件开发工具。驱动程序和固件的开发与调试相互独立, 可加快开发的速度。 2021/6/765 EZ-USB微处理器微处理器 EZ-USB微处理器是一个改进的8051内核,使用标准8051指令系统, 其指令执行速度比标准8051快 。 空闲(空闲(Wasted)的总线周期被消去。)的总线周期被消去。 8051的运行速度为的运行速度为24 MHz。 改进的改进的8051内核还有以下几处内核还有以下几处 结构上的改进:结构上的改进: (1)第2个数据指针,可用于存储器块之间的 传输。 (2)第2个UART。 (3)第3个16位计数

57、器/定时器(TIMER2)。 (4)与非多路复用16位地址总线的高速存储器 直接接口。 (5)增加了7个中断源(INT2INT5、PFI、 T2和UART1)。 (6)可变的MOVX执行时间可适应高/低速的 RAM外设。 (7)256字节的内部寄存器RAM,8K字节的程 序/数据复合SRAM。 (8)3.3 V工作电压。 EZ-USB 集成芯片在集成芯片在8051的基础的基础 上又有其他的改进:上又有其他的改进:快速外部数据块 传输(指针自动增量,快速传输模 式)、USB中断向量、CONTROL传 输的SETUP和DATA部分有各自的缓 冲器。 2021/6/766 AN2131Q的封装和引脚

58、描述的封装和引脚描述 EZ-USB 2100系列中系列中80引脚封装的引脚封装的AN2131Q的引脚排列图的引脚排列图 2021/6/767 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,3437输出。8051地址总线。 D0D7:引脚4851,5760,I/

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

60、9 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。 2021/6/770 AN2131Q的封装和引脚描述的封装和引脚描述

温馨提示

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

最新文档

评论

0/150

提交评论