使用VB开发串口USB通信软件

上传人:pu****.1 文档编号:570649008 上传时间:2024-08-05 格式:PPT 页数:92 大小:2.77MB
返回 下载 相关 举报
使用VB开发串口USB通信软件_第1页
第1页 / 共92页
使用VB开发串口USB通信软件_第2页
第2页 / 共92页
使用VB开发串口USB通信软件_第3页
第3页 / 共92页
使用VB开发串口USB通信软件_第4页
第4页 / 共92页
使用VB开发串口USB通信软件_第5页
第5页 / 共92页
点击查看更多>>
资源描述

《使用VB开发串口USB通信软件》由会员分享,可在线阅读,更多相关《使用VB开发串口USB通信软件(92页珍藏版)》请在金锄头文库上搜索。

1、 实际应用中,通常要遇到实际应用中,通常要遇到PC与单片机系统的通信问题。与单片机系统的通信问题。由于由于PC和单片机(如和单片机(如MCS-51)都具有串口,因此经常使)都具有串口,因此经常使用串口完成两者之间的数据交换。本章主要介绍用串口完成两者之间的数据交换。本章主要介绍RS-232C串行通信技术以及在串行通信技术以及在Windows环境下编写串口通信程序的环境下编写串口通信程序的方法、方法、USB接口技术以及相应的开发实例。接口技术以及相应的开发实例。第7章 PC端接口技术磺屏堤涧痢方钾糜轩蓬顺子灯找给集世峭巡轴怎谓据执流绢咕憨馈峰烹倚使用VB开发串口USB通信软件使用VB开发串口US

2、B通信软件1.RS-232串行通信技术串行通信技术2.USB接口技术接口技术3.实践与思考实践与思考本章主要内容:第7章 PC端接口技术摔升阿塑烛臻菱感龄醇俏月参诧锥氮焙壤包非镐夷肯输锈活酥猿垂杂竹慑使用VB开发串口USB通信软件使用VB开发串口USB通信软件RS-232串行通信技术串行通信技术 目前已经有几种。目前已经有几种。RS-232标准是目前常用的串行通信接口标准是目前常用的串行通信接口标准,它是美国标准,它是美国EIA(电子工业联合会)与(电子工业联合会)与BELL等公司一起开等公司一起开发的发的1969年公布的通信协议。它适合于数据传输速率在年公布的通信协议。它适合于数据传输速率在

3、020Kbps范围内的通信。这个标准对串行通信接口的有关问题,范围内的通信。这个标准对串行通信接口的有关问题,如信号线功能、电器特性都做了明确规定。由于通信设备厂商如信号线功能、电器特性都做了明确规定。由于通信设备厂商都生产与都生产与RS-232C制式兼容的通信设备,因此,它作为一种标制式兼容的通信设备,因此,它作为一种标准,目前已在计算机通信接口中广泛采用。准,目前已在计算机通信接口中广泛采用。 填桶豺锰赔柴捎自辛奔湛劳饺歌厕履铂收涡渗割箕莽谱焕腾新吓拦修叔框使用VB开发串口USB通信软件使用VB开发串口USB通信软件RS-232串行通信技术串行通信技术RS-232C标准介绍标准介绍 简单的

4、串行通信协议的设计简单的串行通信协议的设计 MSComm控件介绍控件介绍 使用使用VB开发串行口通信软件开发串行口通信软件 使用使用VC+开发串行口通信软件开发串行口通信软件 光闲尤呀霜超鼻坠衍洛震其胶迪塔合辽戊户蓑那糟晦峻挥校哼掌掸囤豪肉使用VB开发串口USB通信软件使用VB开发串口USB通信软件RS-232C标准介绍标准介绍 1. RS-232C中的引脚定义中的引脚定义 9针RS-232串口(DB9)25针RS-232串口(DB25)引脚简写功 能 说 明 引脚简写功 能 说 明1CD载波侦测(Carrier Detect)8CD载波侦测(Carrier Detect)2RXD接收数据(R

5、eceive)3RXD接收数据(Receive)3TXD发送数据(Transmit)2TXD发送数据(Transmit)4DTR数据终端准备(Data Terminal Ready)20DTR数据终端准备(Data Terminal Ready)5GND地线(Ground)7GND地线(Ground)6DSR数据准备好(Data Set Ready)6DSR数据准备好(Data Set Ready)7RTS请求发送(Request To Send)4RTS请求发送(Request To Send)8CTS清除发送(Clear To Send)5CTS清除发送(Clear To Send)9RI

6、振铃指示(Ring Indicator)22RI振铃指示(Ring Indicator)沿速时瓣召挂择玲辕府贩硅拿食渊缺系裔珠将牛尺疗没商太赐呢绝臣撵因使用VB开发串口USB通信软件使用VB开发串口USB通信软件RS-232C标准介绍标准介绍2. RS-232C的电气特性的电气特性 RS-232C标准对逻辑电平的定义:标准对逻辑电平的定义: 在TXD和RXD上:逻辑1(MARK)=315V,逻辑0(SPACE)=+3+15V。在RTS、CTS、DSR、DTR和DCD等控制线上:信号有效(接通,ON状态,正电压)=+3+15V,信号无效(断开,OFF状态,负电压)=315V。 RS-232C与与

7、TTL转换:转换: EIA-RS-232C是用正负电压来表示逻辑状态的,为了能够同计算机接口或终端的TTL器件连接,必须在EIA-RS-232C与TTL电路之间进行电平和逻辑关系的变换。实现这种变换的方法可用分立元件,也可用集成电路芯片。目前较为广泛地使用集成电路转换器件,如MC1488、SN75150芯片可完成TTL电平到EIA电平的转换,而MC1489、SN75154可实现EIA电平到TTL电平的转换。抓外足汰歇券吨姜幽剖鞠簿袒饯衰擎兜逝书剪妥饥颐陵叁拉股眯灼走泪妈使用VB开发串口USB通信软件使用VB开发串口USB通信软件RS-232C标准介绍标准介绍左图显示了1488和1489的内部结

8、构和引脚。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输出。具体连接方法如右图所示。尿佐赠莲侧屉筏吕颜玲赏腻桶糠乌忙从宁鞠舆萍仓豌贱诌茵洪搐竟告懦教使用VB开发串口USB通信软件使用VB开发串口USB通信软件RS-232C标准介绍标准介绍3. RS-232C接口的电平转换接口的电平转换 RS-232C电平采用负逻辑,即:电平采用负逻辑,即:逻辑逻辑“0”:+5+15V逻辑逻辑“1”: 5 15VRS-232C不能和TTL电平

9、直接相连,使用时必须进行电平转换,否则将使TTL电路烧坏,实际应用时必须注意!常用的电平转换集成电路除了上面所介绍的传输线驱动器MC1488和传输线接收器MC1489。另一种常用的电平转换电路是MAX232,MAX232芯片可完成TTLEIA双向电平转换。图为MAX232引脚图。份瘦潘致碎德砾阿沂猾诬辛牢色划绰重卡编裂讼段砷壬撼营远淘芽弗旭苍使用VB开发串口USB通信软件使用VB开发串口USB通信软件简单的串行通信协议的设计简单的串行通信协议的设计 PC和单片机最简单的连接是零调制三线经济型。下图给出了采用MAX232芯片的PC和单片机串行通信接口电路,与PC相连采用9芯标准插座。2. PC通

10、信软件通信软件1. 单片机通信软件单片机通信软件MCS-51通过中断方式接收PC发送的数据,并回送。单片机串行口工作在方式1,晶振为6MHz,波特率2400,定时器T1按方式2工作,经计算定时器预置值为0F3H,SMOD=1。参考程序参考程序PC方面的通信程序可以用汇编语言编写,也可以用其他高级语言例如VB、VC来编写。汇编语言编写的参考程序汇编语言编写的参考程序 砷李器妆拌拦每宿掖药孩铃语广聊孙磊羊倦依搞朝兴惨芍汾褒慧洁斟嘶蛙使用VB开发串口USB通信软件使用VB开发串口USB通信软件MSComm控件介绍控件介绍 在在Windows环境下,串口是系统资源的一部分。应用程序要环境下,串口是系统

11、资源的一部分。应用程序要使用串口进行通信,必须在使用前向操作系统提出资源申请要求使用串口进行通信,必须在使用前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。在(打开串口),通信完成后必须释放资源(关闭串口)。在Windows的系统函数中,均包含了支持通信中断的功能。对串口的系统函数中,均包含了支持通信中断的功能。对串口通信而言,通信而言,Windows为相应的串口设备开放了用户定义的输出缓为相应的串口设备开放了用户定义的输出缓冲区和输入缓冲区,应用程序只能对输入冲区和输入缓冲区,应用程序只能对输入/输出缓冲区进行操作,输出缓冲区进行操作,数据进出串口的操作均由系统

12、后台完成。以接收为例,系统每接收数据进出串口的操作均由系统后台完成。以接收为例,系统每接收一个字符就产生一个低级的硬件中断,系统的串口驱动程序将接收一个字符就产生一个低级的硬件中断,系统的串口驱动程序将接收到的字符送入输入缓冲区,此时应用程序就可以通过访问输入缓冲到的字符送入输入缓冲区,此时应用程序就可以通过访问输入缓冲区得到接收到的字符信息。区得到接收到的字符信息。藏疡妙户窖釉栈陨武丑珐惺嫉裴旬渗炙车鹊膘含何寸甩窝蛀佛咙纹殴毁赋使用VB开发串口USB通信软件使用VB开发串口USB通信软件MSComm控件介绍控件介绍Windows为用户提供了两种方式实现串口通信。使用串口通信控件使用串口通信控

13、件使用使用Windows的的API应用程序接口应用程序接口使用串口通信控件进行串口程序开发极为方便,如果不需要对串口进行高级控制一般多选择使用MSComm控件进行开发。本章介绍在VB下使用MSComm控件进行计算机实验室温控系统串口程序开发。患爱级踪液藕诧辣短砖媒寄期阀涕恐案摈系滓晒汇寂倍门察橡袋踪卿摈元使用VB开发串口USB通信软件使用VB开发串口USB通信软件使用串口通信控件使用串口通信控件 针对串口通信,微软公司专门提供了针对串口通信,微软公司专门提供了MSComm控件,控件,使用该控件进行串口通信设计是十分方便的,程序员不必使用该控件进行串口通信设计是十分方便的,程序员不必花时间去了解

14、较为复杂的花时间去了解较为复杂的API函数。通过简单修改控件的函数。通过简单修改控件的属性和使用控件提供的方法,就可以实现对串口的配置、属性和使用控件提供的方法,就可以实现对串口的配置、完成串口接收和发送数据。完成串口接收和发送数据。寅俏封性嘶颧欣阶奈湛夺同矮链岁泥渊券洞姚躺击鼓渡产晚属安杆搂嘿阴使用VB开发串口USB通信软件使用VB开发串口USB通信软件使用使用Windows的的API应用程序接口应用程序接口 在在Windows中,串口是以文件的形式被打开和访问的。中,串口是以文件的形式被打开和访问的。串口和串口通信驱动需要使用设备控制块(串口和串口通信驱动需要使用设备控制块(Device

15、Control Block,DCB)进行配置。应用程序使用)进行配置。应用程序使用API函数函数CreateFile打开串口,打开串口,ReadFile读串口,读串口,CreateEvent建立建立事件对象和事件对象和CloseHandle关闭串口。关闭串口。硒跺瘫谰润如宽盂闸靛贬阿踩珍碗歇婆到甘挑湃鸽汉掀起捣庐药债始光穷使用VB开发串口USB通信软件使用VB开发串口USB通信软件使用使用Windows的的API应用程序接口应用程序接口 Micronsoft Communications Control (MSComm)是是Micronsoft公司提供的简化公司提供的简化Windows下串口通

16、信编程下串口通信编程的的ActiveX控件,它为应用程序提供了通过串口收发数据控件,它为应用程序提供了通过串口收发数据的简便方法。在串口编程中,使用的简便方法。在串口编程中,使用MSComm控件非常方控件非常方便,仅需通过简单修改控件的属性和使用控件提供的方法,便,仅需通过简单修改控件的属性和使用控件提供的方法,就可以实现对串口的配置,完成串口接收和发送数据等任就可以实现对串口的配置,完成串口接收和发送数据等任务。务。 惨贰首佬脊汾么完捎掉手扇纽咖吻神涯嚏酬威鳞詹指蠕吏抒赔缎予觅咐汪使用VB开发串口USB通信软件使用VB开发串口USB通信软件使用使用Windows的的API应用程序接口应用程序

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

18、确定是否通过查询ClearToSend(CTS)线的状态发送数据。该属性在设计时无效,在运行时为只读。瓤为摸损袭隶伤禄罗鼠网集傅铱画汐婴栖孟骨奉云公胰淮翟蜀滇摆庸的胚使用VB开发串口USB通信软件使用VB开发串口USB通信软件使用使用Windows的的API应用程序接口应用程序接口SThreshold属性。设置并返回传输缓冲区中允许的最小字符数。若SThreshold属性被设置为0(默认值)时,数据传输不会产生OnComm事件。而当SThreshold属性被设为1,当传输缓冲区完全空时,MSComm控件产生OnComm事件。CDHolding属性。通过查询CarrierDetect(CD)线的

19、状态确定是否有传输。该属性在设计时无效,在运行时为只读。DSRHolding属性。确定DataSetRead(DSR)线的状态。该属性在设计时无效,在运行时为只读。Settings属性。设置返回波特率、奇偶校验、数据位、停止位参数。当端口打开时,如果属性值非法,则MSComm控件产生错误380(非法属性值)。纠顿宇宣篮锁滨垣臼暴追立芋锐赛豁焊宾崭磐辣雌兜诗涕葬剿湿盈獭根舅使用VB开发串口USB通信软件使用VB开发串口USB通信软件BBBBPDS各个属性值间用逗号隔开,其中BBBB为波特率,P为奇偶校验,D为数据位数,S为停止位数。其默认值为“9600,N,8,1”。Settings属性的设置由

20、4个设置组成,格式如下:InputLen属性。设置并返回Input属性从接收缓冲区中读取的字符数。InputLen属性的默认值是0。设置InputLen为0时,使用Input将使MSComm控件读取缓冲区中全部的内容。使用使用Windows的的API应用程序接口应用程序接口欲喉衔窥萌露摆脖弃强特席郸债珊匿讲蚜炊窿砖悸眶置魄订假考帆叔鸥嫉使用VB开发串口USB通信软件使用VB开发串口USB通信软件使用使用Windows的的API应用程序接口应用程序接口EOFEnable属性。确定在输入过程中MSComm控件是否寻找文件结尾(EOF)字符。如果找到EOF字符,将停止输入并激活OnComm事件,此时

21、CommEvent属性设置为comEvEOF。 语法:语法:object.EOFEnable = value EOFEnable 属性语法包括下列部分:属性语法包括下列部分:value布尔表达式,确定当找到EOF字符时,OnComm事件是否被激活,如“设置值”中所描述。value的设置值为True:当EOF字符找到时OnComm事件被激活。value的设置值为False(默认):当EOF字符找到时OnComm事件不被激活。当EOFEnable属性设置为False,OnComm控件将不在输入流中寻找EOF字符。说明:说明:罪书隐帆栽隧单亦感娥藏骂曲瓣乓禾朽阑启恒请坞务嘴激镶涎科里扶啄颇使用VB开

22、发串口USB通信软件使用VB开发串口USB通信软件使用使用Windows的的API应用程序接口应用程序接口Handshake常数。Handshake常数如表所示。OnComm常数。OnComm常数如表所示常 数值描 述comNone0无握手comXonXoff1XOn/Xoff握手comRTS2Request-to-send/clear-to-send握手comRTSXOnXOff3Request-to-send和clear-to-send握手皆可常 数值描 述comEvSend1发送事件comEvReceive2接收事件comEvCTS3clear-to-send线变化comEvDSR4da

23、ta-set ready线变化comEvCD5carrier detect线变化comEvRing6振铃检测comEvEOF7文件结束欢咨勺纯故夯朽插职滦椭示弧义寺滩概囊乙稿蕴铝邯晴翁枕乍摄凄盾膛婶使用VB开发串口USB通信软件使用VB开发串口USB通信软件使用使用Windows的的API应用程序接口应用程序接口Error常数。Error常数如表所示。常 数值描 述comEventBreak1001接收到中断信号comEventCTSTO1002Clear-to-send超时comEventDSRTO1003Data-set ready超时comEventFrame1004帧错误comEven

24、tOverrun1006端口超速comEventCDTO1007Carrier detect超时comEventRxOver1008接收缓冲区溢出comEventRxParity1009Parity错误comEventTxFull1010传输缓冲区满comEventDCB1011检索端口设备控制块(DCB) 时的意外错误苔采队宜宙枪纯辈莲侄丽函晚植局耙颜沙碑欠俏也门嵌升焚疗马絮肆凄称使用VB开发串口USB通信软件使用VB开发串口USB通信软件使用使用Windows的的API应用程序接口应用程序接口InputMode常数。InputMode常数如表所示。常 数值描 述comInputModeTe

25、xt0(默认)通过Input属性以文本方式取回数据comInputModeBinary1通过Input属性以二进制方式检取回数据庭琳甜导匿渗波寺告泼厩呈稠慨赂树克律郑年仰充斡五箍错典熬铸卖漫鸦使用VB开发串口USB通信软件使用VB开发串口USB通信软件使用使用Windows的的API应用程序接口应用程序接口(3)错误消息()错误消息(MS Comm控件)。控件)。表列出MSComm控件可以捕获的错误。值描 述常 数380无效属性值comInvalidPropertyValue383属性为只读comSetNotSupported394属性为只读comGetNotSupported8000端口打开

26、时操作不合法comPortOpen8001超时值必须大于8002无效端口号ComPortInvalid8003属性只在运行时有效8004属性在运行时为只读8005端口已经打开comPortAlreadyOpen8006设备标识符无效或不支持该标识符变刨雀啦搁奶侥嗽侧原瘩相廉曼栖今踌圣隘待狰锹氛自槛殃测恫则段紊韶使用VB开发串口USB通信软件使用VB开发串口USB通信软件使用使用Windows的的API应用程序接口应用程序接口值描 述常 数8007不支持设备的波特率comPortAlreadyOpen8008指定的字节大小无效8009默认参数错误8010硬件不可用(被其他设备锁定)8011函数不

27、能分配队列8012设备没有打开comNoOpen8013设备已经打开8014不能使用comm通知8015不能设置comm状态comSetCommStateFailed8016不能设置comm事件屏蔽8018仅当端口打开时操作才有效comPortNotOpen8019设备忙8020读comm设备错误comReadError8021为该端口检索设备控制块时的内部错误comDCBError吝坑疼捧迄覆菏麦鄂瘦性夏晌淡棕赶肌砸妒裔盔府命瘴炕俭锡硝印拥们赠使用VB开发串口USB通信软件使用VB开发串口USB通信软件使用使用VB开发串行口通信软件开发串行口通信软件 l用户界面设计用户界面设计l初始化程序初

28、始化程序 l发送数据发送数据 l接收数据接收数据 l其他工作其他工作 使用VB开发串行通信程序的详细步骤。豌痈霹啼秉候捷余戚豌祭涂浮砂妻伏被离赤账瀑央眺品档蜀什善滓币辉赌使用VB开发串口USB通信软件使用VB开发串口USB通信软件用户界面设计用户界面设计 添加控件最终完成界面添加用户界面新工程界面新建工程霞靴龚求嘶碘螟冉燎崩拙火散杏嗜叮撂叭骋哎砷杜铲豫皱臭娘刻座赖氦够使用VB开发串口USB通信软件使用VB开发串口USB通信软件用户界面设计用户界面设计修改界面上各控件的属性如下表所示。控件名称Name 属性Caption属性FormRS232_VBRS232_VBLable1Lable1发送数据

29、Lable2Lable2接收数据Text1Text_SENDText2Text_RECVCommand1Button_SEND发送数据Command2Button_SEND_C清空发送文本框Command3Button_RECV_C清空接收文本框MSComm1MSComm传海毡个魁说拂镶撮区己内吃联搓腺企葫唆撮牟糜蛋花搞次录竹容漳瞳馅使用VB开发串口USB通信软件使用VB开发串口USB通信软件初始化程序初始化程序 程序的初始化部分主要完成对串口的设置工作,包括串程序的初始化部分主要完成对串口的设置工作,包括串口的选择、波特率及帧结构设置、打开串口以及发送和接收口的选择、波特率及帧结构设置、打开

30、串口以及发送和接收触发器的时间控制等。此外,在程序运行前,还应进行清除触发器的时间控制等。此外,在程序运行前,还应进行清除发送和接收缓冲区的工作。这部分工作是在窗体载入的时候发送和接收缓冲区的工作。这部分工作是在窗体载入的时候完成的,因此应将初始化代码放在完成的,因此应将初始化代码放在Form_Load()函数中添加函数中添加如下代码,这样就完成了程序的初始化工作。如下代码,这样就完成了程序的初始化工作。珐式署按薯拉宵瞒毫悠式倒郧渐宙逼矿溅命缆迢演禹槽盯雌钙拄涨扛柠瑚使用VB开发串口USB通信软件使用VB开发串口USB通信软件初始化程序初始化程序初始化代码初始化代码PrivateSubForm

31、_Load()MSComm.CommPort=2设置串口2MSComm.Settings=9600,N,8,1波特率9600bps,无校验,8位数据,1位停止位MSComm.InputLen=0读取接收缓冲区的所有字符MSComm.InBufferSize=1024设置接收缓冲区为1024字节MSComm.OutBufferSize=512设置发送缓冲区为512字节MSComm.PortOpen=True打开串口MSComm.SThreshold=0不触发发送事件MSComm.RThreshold=1每一个字符到接收缓冲区都触发接收事件MSComm.InBufferCount=0清除发送缓冲区

32、数据MSComm.OutBufferCount=0清除接收缓冲区数据Text_SEND.Text=清空发送文本框Text_RECV.Text=清空接收文本框EndSub息亡扇兰赵嚏孟开戒银溶贰仗川潜彦肾因舶卒穷锣顺浪焙噪忱化焰装祭绥使用VB开发串口USB通信软件使用VB开发串口USB通信软件发送数据发送数据 本例中,发送数据的过程是通过单击发送数据按钮来完成的。程序应完成下面的工作:(1)单击)单击发送数据发送数据按钮,程序检查发送文本框中的内容是否为按钮,程序检查发送文本框中的内容是否为空,如果为空,则终止发送命令,警告后返回。空,如果为空,则终止发送命令,警告后返回。(2)检测串口是否处于

33、打开状态,如串口关闭,则打开串口。)检测串口是否处于打开状态,如串口关闭,则打开串口。(3)将发送文本框中的内容送入)将发送文本框中的内容送入MSComm的发送缓冲区,等待的发送缓冲区,等待数据发送。数据发送。他粗裳卑态届堆煎策本亥删蠕崩奉凉典皱筹幸圭颤跋捉粮摧荒妮诫睁免瞩使用VB开发串口USB通信软件使用VB开发串口USB通信软件发送数据发送数据双击发送数据部分,添加Button_Send_Click()函数,其代码如下:发送数据PrivateSubButton_SEND_Click()DimxAsStringIfText_SEND.Text=Then发送数据不能为空x=MsgBox(发送数

34、据不能为空,16)ExitSubEndIfIfNotMSComm.PortOpenThen保证串口打开MSComm.PortOpen=TrueEndIfMSComm.Output=Text_SEND.Text+Chr$(13)发送数据Fori=1To20000000延时NextEndSub失仕抛纱岩蚕总棘豌御天卒缚考遇痹媳圾延像撒需肌兽妙逢肖敷出沟妨践使用VB开发串口USB通信软件使用VB开发串口USB通信软件接收数据接收数据 接收数据部分使用了事件响应方式。当串口收到数据使得数据缓冲区的内容超过1字节时就会引发comEvReceive事件。OnComm()函数负责捕捉这一事件,并负责将发送缓

35、冲区的内容送入输出文本框显示。OnComm()函数还对错误信息进行捕捉,当程序发生缓冲区溢出之类的错误时,由程序员负责将缓冲区清空。靡天灸疾预诫暗麓舒效凸玩灼痒贾屎球洪或华宁诣唐殷拢剖鸥付宵漾排勇使用VB开发串口USB通信软件使用VB开发串口USB通信软件接收数据接收数据要实现上述功能,首先要双击MSComm控件创建OnComm(),并输入代码:接收数据PrivateSubMSComm_OnComm()SelectCaseMSComm.CommEvent检验串口事件错误处理CasecomEventOverrun数据丢失Text_SEND.Text=清空发送缓冲区Text_RECV.Text=清

36、空接收缓冲区Text_SEND.SetFocusExitSubCaseComEventRxOver接收缓冲区溢出Text_SEND.Text=清空发送缓冲区Text_RECV.Text=清空接收缓冲区Text_SEND.SetFocusExitSub睛腑蔗针裸棋例弊劈禄岸屠胜准崩黔葱哭锋臻宠组送央崭勒再江简闽僳维使用VB开发串口USB通信软件使用VB开发串口USB通信软件接收数据接收数据CaseComEventTxFull发送缓冲区已满Text_SEND.Text=清空发送缓冲区Text_RECV.Text=清空接收缓冲区Text_SEND.SetFocusExitSub事件处理CaseCom

37、EvReceive接收缓冲区内有数据DimstrAsStringstr=MSComm.Input从接收队列中读入字符串Text_RECV.Text=Text_RECV.Textstr读出字符串送显EndSelectEndSub登弱悄宽贬犯棍杀赋娟闸秆豆娇孩惩醉嘶银氛邑亩扩悠菇涛裹帆帆屠抱皮使用VB开发串口USB通信软件使用VB开发串口USB通信软件其他工作其他工作 完成通信的主要功能后,还需要输入程序完成其他两个按钮的功能,这两个按钮负责清除发送和接收两个文本框的内容。该部分代码内容十分简单,其代码实现如下:清空接收文本框PrivateSubButton_RECV_C_Click()Text_

38、RECV.Text=清空接收文本框Text_SEND.SetFocusEndSub清空发送文本框PrivateSubButton_SEND_C_Click()Text_SEND.Text=清空发送文本框Text_SEND.SetFocus茹号孤己绊樟凝川均锄假梗酥崇否碾蔽肉研厄浊檬憋却斑知仲汀枚踢蛔钞使用VB开发串口USB通信软件使用VB开发串口USB通信软件其他工作其他工作使用该软件实现通信效果的界面如图所示。运行测试程序辑迹厩跪隙烛措纂煮鸵忧焉污纲舷瞧纠调咆屹廓煎神逾候似颜呼惑烘份郴使用VB开发串口USB通信软件使用VB开发串口USB通信软件使用使用VC+开发串行口通信软件开发串行口通信软

39、件 l用户界面设计用户界面设计l初始化程序初始化程序 l发送数据发送数据 l接收数据接收数据 l其他工作其他工作 使用VisualC+6.0(VC+6.0)开发串口通信软件的方法。芍年师寄爱搓唱恤鸵谨胁齐掣绒极篱堡肠将背瓶库镣谐材斑集盟板饲赁谗使用VB开发串口USB通信软件使用VB开发串口USB通信软件用户界面设计用户界面设计 新建工程步骤1新建工程步骤2建立新工程后界面编辑程序界面添加控件最终完成界面土违扮欺卯疚序节寥蛆虫买跑壁儡析禾知嚏肪信矾小僧咯症铂玄郁哪贴葛使用VB开发串口USB通信软件使用VB开发串口USB通信软件用户界面设计用户界面设计修改程序界面用到的各个控件的属性后,要使用这些

40、控件,还需要为其添加对应的变量。该项工作是使用ClassWizard面板来完成的。在MemberVariables选项卡中相应控件的ControlID,MFC单击AddVariables按钮为相应控件添加对应变量。ClassWizard面板面板 添加控件对应变量添加控件对应变量 克噶苑俞购粹凭苍遵箍淑旬牲诡诡若妨下辖弓坊响艾林宣快腆盾颧贴皑燎使用VB开发串口USB通信软件使用VB开发串口USB通信软件用户界面设计用户界面设计各个控件添加变量的具体设置如表所示。控件ID对应变量变量类别变量类型IDC_EDIT_RECVm_str_recvValueCStringIDC_EDIT_SENDm_st

41、r_sendValueCStringIDC_HEXM_hexcontrolCButtonIDC_MSCOMMm_mscommcontrolCMSComm添加变量后的ClassWizard面板如图所示。识拇配吾霜灯证狄胚缀另肪樊弯羌传涯甸确鲍糕促烷手毡缆钞嘴背芭证衬使用VB开发串口USB通信软件使用VB开发串口USB通信软件初始化程序初始化程序 在VC中,需要将这部分代码添加到对话框类的OnInitDialog()函数中。if(m_MSComm.GetPortOpen()/如果串口已打开,则关闭串口m_MSComm.SetPortOpen(FALSE);m_MSComm.SetCommPort(

42、2);/选择COM2if(!m_MSComm.GetPortOpen()m_MSComm.SetPortOpen(TRUE);/打开串口elseAfxMessageBox(serialportopenerror);m_MSComm.SetSettings(“9600,n,8,1”);/设置波特率9600,无校验,8位数据位,1位停止位m_MSComm.SetRThreshold(1); /串口接收缓冲区中有多于或等于1个字符时将产生接收数据的OnComm事件m_MSComm.SetInputLen(0);/设置当前接收区数据长度为0m_MSComm.GetInput();/预读缓冲区以清除残留

43、数据症曝悦曰婶冲素魄帽先娱贬阑颓篙蛋孺射辅手含滩卜端熔噪哼某醉粉尚昌使用VB开发串口USB通信软件使用VB开发串口USB通信软件接收数据接收数据 当MSComm的接收缓冲区有字符时,程序会发送事件消息,OnComm()函数响应该消息并进行处理。由于MSComm类的GetInput()函数返回的数据变量类型为Variant型,而编辑框对应的显示字符串是Cstring型,因此接收数据时,需要先进行类型转换。在VC中,转换过程如下:OnComm()函数的完整代码将Variant类型转换为ColeSafeArray类型;将ColeSafeArray类型转换为BYTE型数组;将BYTE型数组转换为Cst

44、ring变量。枉殆竹菲牡惰别莎椿腺吐扎股吐鹰甄叉廉刀瞄裂氦逆董梗牧屯号鞍桃搭耐使用VB开发串口USB通信软件使用VB开发串口USB通信软件发送数据发送数据 发送数据功能使用发送数据按钮对应函数Onsend()来实现。发送数据时,程序仅需要读出发送编辑框的内容,将其转化为发送程序需要的数据格式后,再使用C语言中的强制类型转换功能,将其转换为ColeVariant数据类型,由MSComm类的SetOutput()函数送入发送缓冲区即可。发送函数OnSend()的源代码磺叹课濒息兜丑料嘿打咆白忙蝶柠少办为别顽棕其激棘痛貉梯蔗楷欣涧绢使用VB开发串口USB通信软件使用VB开发串口USB通信软件其他工作

45、其他工作 voidCRS232_VCDlg:OnClr()/TODO:Addyourcontrolnotificationhandlercodeherem_str_send=;/清空发送文本框m_str_recv=;/清空接收文本框UpdateData(FALSE);/更新文本框内容清空按钮用于清除发送编辑框和接收编辑框中的已有内容,其相应函数OnClr的代码如下:菊富盗律颐吟本核微箍汰用姚眺捌厉哄界校酌皖世微骚衙抢靴捶署困纫捞使用VB开发串口USB通信软件使用VB开发串口USB通信软件其他工作其他工作运行测试程序运行测试程序 连接串口线,启动软件后,首先勾选十六进制发送/接收单选框,在发送文

46、本框中添入数据“0235084A”的字符串,单击发送按钮。然后删除发送文本框中的内容,去掉十六进制发送/接收的勾选,再填入数据“Goodbye”,软件的测试效果如图所示。柱示忠涉梆企抡丘垒侈学炒全雏萨蔚莱撅纠纯惋件路潍褐数麻甚宜甜吝旦使用VB开发串口USB通信软件使用VB开发串口USB通信软件USB接口技术接口技术 USB的全称为UniversalSearialBus,即通用串行总线。与RS-232类似,USB总线也是一种串行外围设备连接的总线形式,它是1995年由Microsoft、Compaq、IBM等公司联合制定的一种新的PC串行通信协议,从推出之日起就得到了各大厂商的广泛支持,得以不断

47、完善和发展,目前USB协议的最新版本已经达到了2.0。USB总线作为一种新的串行总线,不仅在传输速度上得到了极大的提高,同时还具有接口简单、真正的即插即用、传输线供电、多设备级联等特性。USB总线的成功推出,对外设的接口产生了广泛的影响,目前使用USB总线接口的如键盘、鼠标、闪存、摄像头等外围设备在市场上已广泛存在。本节将系统地介绍USB总线开发的相关知识,帮助读者尽快熟悉USB开发流程。陈禄疯茅盆札唯吐烬踏魂屋仆瞩裙应潭袁挝孕舱骡艳店搪乃蜘薪秋蹄腺潞使用VB开发串口USB通信软件使用VB开发串口USB通信软件USB接口技术接口技术USB总线介绍EZ-USB系列接口控制芯片EZ-USB固件程序

48、开发USB通信设计要点荫灰钝邱泊咒涧霄讲饭问弛磊镍蔚掏潮瑶聚泉屋胯椽忠表口来纳芜丛侈仇使用VB开发串口USB通信软件使用VB开发串口USB通信软件USB总线介绍总线介绍 USB设备主要具有以下优点:(1)可以热插拔)可以热插拔(2)携带方便)携带方便(3)标准统一)标准统一(4)可以连接多个设备)可以连接多个设备USB的互联USB的设备USB的主机1. 总线的拓扑结构:总线的拓扑结构:USB设备与主机之间的各种设备与主机之间的各种连接方式。连接方式。2. 内部层次关系:根据性能叠置,内部层次关系:根据性能叠置,USB的任务被的任务被分配到系统的每一个层次。分配到系统的每一个层次。3. 数据流模

49、式:描述了数据在系统中通过数据流模式:描述了数据在系统中通过USB从从产生方到使用方的流动方式。产生方到使用方的流动方式。4. USB的调度:的调度:USB提供一个共享的连接。对可提供一个共享的连接。对可以使用的连接进行调度以支持同步数据传输,并且以使用的连接进行调度以支持同步数据传输,并且避免优先级判别的开销。避免优先级判别的开销。 USB的互联主要包括以下几方面的互联主要包括以下几方面 : USB的总线结构的总线结构 USB的电气特性与电源管理的电气特性与电源管理 USB总线协议总线协议 系统设置系统设置 数据流种类数据流种类 USB设备设备 USB主机:硬件和软件主机:硬件和软件 一个典

50、型的USB系统的描述如下。它主要被定义为3个部分:孟券轨陪屁墨崩媒绳御血掺势广莽蔼圃很妙环秽崩糖咳俄元萎芭铃蔑祁赶使用VB开发串口USB通信软件使用VB开发串口USB通信软件USB的总线结构的总线结构 USB连接了USB设备和USB主机,USB的物理连接是有层次性的星形结构。每个网络集线器是在星形的中心,每条线段是点点连接。从主机到集线器或其功能部件,或从集线器到集线器或其功能部件。在任何USB系统中,只有一个主机。USB和主机系统的接口称为主机控制器,主机控制器可由硬件、固件和软件综合实现。根集线器是由主机系统整合的,用以提供更多的连接点。称葡柴秧剔石蹭饭绊裴鄂狡朋风教侍抡航阴揪砖开民戒贫需

51、灰奖帛植狮梅使用VB开发串口USB通信软件使用VB开发串口USB通信软件USB的总线结构的总线结构USB的设备如下所示:1.网络集线器,向网络集线器,向USB提供了更多的连接点。提供了更多的连接点。2.功能器件:为系统提供具体功能,如功能器件:为系统提供具体功能,如ISDN的连接,数字的游戏杆或扬声的连接,数字的游戏杆或扬声器。器。USB设备提供的USB标准接口的主要依据:1.对对USB协议的运用。协议的运用。2.对标准对标准USB操作的反馈,如设置和复位。操作的反馈,如设置和复位。3.标准性能的描述性信息。标准性能的描述性信息。早语箱部馁桔荷瞎粗嵌慈垮杏丁沏伶溪淋撰丘撅其虹辩角赛湿次景备匹晤

52、使用VB开发串口USB通信软件使用VB开发串口USB通信软件USB的电气特性与电源管理的电气特性与电源管理 1电气特性电气特性USB的高速信号的比特率定为的高速信号的比特率定为12Mbps。低速信号传送的模式定为低速信号传送的模式定为1.5Mbps。USB的电缆低速模式需要更少的EMI保护。两种模式可在用同一USB总线传输的情况下自动地动态切换。USB传送信号和电源是通过一种4线的电缆,图中的两根线用于发送信号。存在两种数据传输率:撞讼麦阔碌苔姆葬磐帆慎儿辅衡毡肾券椿娥亨秀姬泻薯构蚀用千辩号茹痘使用VB开发串口USB通信软件使用VB开发串口USB通信软件USB的电气特性与电源管理的电气特性与电

53、源管理2机械特性机械特性所有设备都有一个上行的连接。上行连接器和下行连接器不可简单地互换,这样就避免了集线器间非法的循环往复的连接。电缆中有4根导线:一对互相缠绕的标准规格线,一对符合标准的电源线。连接器有4个方向,具有屏蔽层,以避免外界干扰,并有易拆装的特性。3. 电源电源电源分配:电源分配:即USB的设备如何通过USB分配得到由主计算机提供的能源。电源管理:电源管理:即通过电源管理系统,USB的系统软件和设备如何与主机协调工作。电源主要包括以下两个方面:请亮弟裴秆基泉碟朗箩氖案皮呵球搏牛芒锌速望琢侈瞒瓤装合萎铣烯楷戳使用VB开发串口USB通信软件使用VB开发串口USB通信软件 USB总线协

54、议总线协议 1.USB总线属一种轮询方式的总线,主机控制端口初始化所有的数据传输。2.存在两种类型的通道:流和消息。3.事务预处理允许对一些数据流的通道进行控制,从而在硬件级上防止了对缓冲区的高估或低估,通过发送不确认握手信号从而阻塞了数据的传输速度。卤雷泉胆务照赁饿抢瞎芋谣豪观咆冠肄增贵佳肤榔懦谁斌磨金林济蓟倚疟使用VB开发串口USB通信软件使用VB开发串口USB通信软件系统设置系统设置 1USB设备的安装设备的安装 主机对每个设备指定唯一的USB地址,并检测这种新装的USB设备是集线器还是功能部件。2. USB设备的拆卸设备的拆卸 当USB设备从集线器的端口拆除后,集线器关闭该端口,并且向

55、主机报告该设备已不存在。3. 总线标号总线标号总线标号就是对连接在总线上的设备指定唯一地址的一种动作。衫屉透殊惫猖绿魔色沁巢骸噶若脾梳椒未悯侩疙皑纤答曳社泽呈测瞧砷怠使用VB开发串口USB通信软件使用VB开发串口USB通信软件数据流种类数据流种类 1.控制数据传送:在设备连接时用来对设备进行设置,还可对指定设控制数据传送:在设备连接时用来对设备进行设置,还可对指定设备进行控制,如通道控制。备进行控制,如通道控制。2.批量数据传送:大批量产生并使用的数据,在传输约束下,具有很批量数据传送:大批量产生并使用的数据,在传输约束下,具有很广的动态范围。广的动态范围。3.中断数据的传送:用来描述或匹配人

56、的感觉或对特征反应的回馈。中断数据的传送:用来描述或匹配人的感觉或对特征反应的回馈。4.同步数据的传送:由预先确定的传送延迟来填满预定的同步数据的传送:由预先确定的传送延迟来填满预定的USB带宽。带宽。对于任何指定的设备进行设置时一种通道只能支持上述一种方式的数据传输。USB的结构包含4种基本的数据传输类型:饶识思晴屉鹿冻哥硅翱况瓮道惦肌瞪恕虑象抵属爆里候灭遏戊舍缺趁惦龄使用VB开发串口USB通信软件使用VB开发串口USB通信软件 USB设备设备 USB设备分为诸如集线器、分配器或文本设备等种类。集线器类指的是一种提供USB连接点的设备,USB设备需要提供自检和属性设置的信息,USB设备必须在

57、任何时刻执行与所定义的USB设备状态相一致的动态。1. 设备特性设备特性当设备被连接、编号后,该设备就拥有一个唯一的USB地址。设备就是通过该USB地址被操作的,每一个USB设备通过一个或多个通道与主机通信。所有USB设备必须在零号端口上有一指定的通道,每个USB设备的USB控制通道将与之相连。通过此控制通道,所有的USB设备都列入一个共同的准入机制,以获得控制操作的信息。此类信息主要有以此类信息主要有以下几类下几类 :桑前添至人氏虞本不继压梭筷雄嘘莉两闷邯颠禹航淡宣佃俭谬幽解哮袄棚使用VB开发串口USB通信软件使用VB开发串口USB通信软件USB设备设备标准信息:这类信息是对所有USB设备的

58、共同性的定义,包括一些如厂商识别、设备种类、电源管理等的项目。设备设置、接口及终端的描述在此给出。类别信息:此类信息给出了不同USB的设备类的定义,主要反映其不同点。USB厂商信息:USB设备的厂商可自由地提供各种有关信息,其格式不受该规范制约。此外,每个USB设备均提供USB的控制和状态信息。膘弊掇产递疲茁头嘴盲略刻联苍嫉试荷豪车衔肆惋礼葵衷瞻研疚乐鼎茄慎使用VB开发串口USB通信软件使用VB开发串口USB通信软件USB设备设备(2)功能部件功能部件是一种通过总线进行发送接收数据和控制信息的USB设备,通过一根电缆连接在集线器的某个端口上,功能设备一般是一种相互无关的外部设备。定位设备:如鼠

59、标或光笔。输入设备:如键盘。电信适配器:如ISDN。一个集线器包括两部分:集线控制器(Controller)和集线放大器(Repeater)。集线放大器是一种在上游端口和下游端口之间的协议控制开关,而且硬件上支持复位、挂起、唤醒的信号。(1)集线器2. 设备描述设备描述 注握慈佃薄浆性沧酞情何惕碴砸插硬填雅愁延啦达斗蓑淖较泽恃件美嫩司使用VB开发串口USB通信软件使用VB开发串口USB通信软件USB设备设备台式机环境下的集线器疮例锑敏功鲸掘蕊触跋科猴犊博窖标渺烃砚娥程柜闹邓枯顾却斟幼信绕佩使用VB开发串口USB通信软件使用VB开发串口USB通信软件USB主机:硬件和软件主机:硬件和软件 USB

60、的主机通过主机控制器与USB设备进行交互。主机功能如下:1.检测检测USB设备的安装和拆卸。设备的安装和拆卸。2.管理在主机和管理在主机和USB设备之间的控制流。设备之间的控制流。3.管理在主机和管理在主机和USB设备之间的数据流。设备之间的数据流。4.收集状态和动作信息。收集状态和动作信息。5.提供能量给连接的提供能量给连接的USB设备。设备。柏钦囤捌影盔肚劫粉题蛔痘引锤娱光匝痒渍魂深扑小峭勾庚损潦两税描默使用VB开发串口USB通信软件使用VB开发串口USB通信软件EZ-USB系列接口控制芯片系列接口控制芯片 使用嵌入MCU的USB控制器,CPU只需要访问一系列寄存器和存储器,便可实现USB

61、口的数据传输,从而简化了程序的设计,并且供应商还提供许多范例电路和测试代码,使设计者从复杂的协议解释中得到解脱。现在,许多芯片制造商开始生产一些基于通用MCU的USB控制器,采用研制人员所熟知的指令集,大大简化了编程的难度。如基于8051结构的USB控制器有:Intel公司的8X930A、8X931A;CYPRESS公司的EZ-USB等。此外,还有基于MITSUBISHI740/7600/M16C的USB芯片;基于MOTORORAHC05系列的USB芯片等。本节中介绍EZ-USB2100系列单片机。浙拜乔蓉槛蔡般抿儡搬聘哀才绵迎惑绞弄佐语勤赎淆龄杨悟雾凄贴瞥赠瞬使用VB开发串口USB通信软件使

62、用VB开发串口USB通信软件EZ-USB系列接口控制芯片系列接口控制芯片EZ-USB组成结构及特性EZ-USB微处理器AN2131Q的封装和引脚描述EZ-USB的枚举和再枚举EZ-USB端点EZ-USB的存储空间刹抵纺彝桶锄嵌哗珠薛壳葱玉捆俱赞酝蒂羊盘只地腾惩饰巩耻械槽丝猪矗使用VB开发串口USB通信软件使用VB开发串口USB通信软件EZ-USB组成结构及特性组成结构及特性 1EZ-USB芯片组成结构芯片组成结构EZ-USB的组成框图菏鲍翅供古椽谎匣西吏妈苹树哦反茂东交屈葵巩凿陪赵哑匹赖莆隅涟盯裕使用VB开发串口USB通信软件使用VB开发串口USB通信软件EZ-USB组成结构及特性组成结构及特

63、性2EZ-USB特性特性(1)改进的)改进的8051内核。内核。性能可达到标准8051的510倍,与标准8051的指令完全兼容。(2)高度集成)高度集成。EZ-USB将上述多个模块集成在一个芯片中,从而减少了各芯片接口部分时序配合时的麻烦。(3)USB 内核。内核。EZ-USB系列芯片接收全部USB的吞吐量。这种采用EZ-USB的设计,不受端点数目、缓冲区大小及传输速度的限制。愈园沸屉攀衫茵旺作侩墒旺岂款哦卸刽胸祥坷髓柠嵌嗓跋凡涩克耕瓤呆杭使用VB开发串口USB通信软件使用VB开发串口USB通信软件EZ-USB组成结构及特性组成结构及特性(4)软配置。)软配置。这个特性给USB外设开发者带来许

64、多方便。如开发过程中,当固件需要修改时,可以在PC上修改好以后,下载到EZ-USB,从而省去了编程芯片的麻烦。这种基于RAM的软配置方法,可以允许无限的配置和升级。(5)易用的软件开发工具)易用的软件开发工具。驱动程序和固件的开发与调试相互独立,可加快开发的速度。敦寻桩湖租液亦娄那睡惩侧做侯忱唤茬凄则伪弟左革舌帖彤口袜陌叮邮赞使用VB开发串口USB通信软件使用VB开发串口USB通信软件EZ-USB微处理器微处理器 EZ-USB微处理器是一个改进的8051内核,使用标准8051指令系统,其指令执行速度比标准8051快。 空闲(空闲(Wasted)的总线周期被消去。)的总线周期被消去。 8051的

65、运行速度为的运行速度为24 MHz。 改进的改进的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.3V工作电压。EZ-USB 集成芯片在集成芯片在8051的基础的基础上又有其他的改进:上又有其他的改进

66、:快速外部数据块传输(指针自动增量,快速传输模式)、USB中断向量、CONTROL传输的SETUP和DATA部分有各自的缓冲器。汕滁悲洞钎丑噪靠嘎肖槽全拿款鼎鬼玫及颠榜近亲毕徘羌崇扯耿旋逻瘟苍使用VB开发串口USB通信软件使用VB开发串口USB通信软件AN2131Q的封装和引脚描述的封装和引脚描述 EZ-USB 2100系列中系列中80引脚封装的引脚封装的AN2131Q的引脚排列图的引脚排列图 谢裤碌氛晋台雹场腰跪治凸谆井嘎除预捂搭彰秤垃虐祖运鸯床抢片桶姚君使用VB开发串口USB通信软件使用VB开发串口USB通信软件AN2131Q的封装和引脚描述的封装和引脚描述DISCON#:引脚1,输出。该

67、引脚由两个位DISCOE和DISCON控制。当DISCOE=0时,引脚悬空;当DISCOE=1时,驱动引脚,驱动的逻辑与DISCON位相反。USBD,USBD+:引脚77,79,高阻态。USBD+/D信号。将24振荡器与USBD+/D引脚相连。A0A15:引脚712,15,16,2629,3437输出。8051地址总线。D0D7:引脚4851,5760,I/O/高阻态。8051数据总线。该双向总线空闲时处于高阻状态,总线读时为输入,总线写时为输出。忆二毫印彬稳糙晚贾规幕渝律服抽膜啡红剥耪祁味腊葫亏一汹仑焉蓬鄂愿使用VB开发串口USB通信软件使用VB开发串口USB通信软件AN2131Q的封装和引

68、脚描述的封装和引脚描述PSEN:引脚80,输出。程序存储器使能端。引脚接低电平时有效,表示从外部存储器中读取程序。当EA为低电平时,程序存储器的地址从0X1B40开始;当EA为高电平时,程序存储器的地址从0X0000开始。PA0PA7:引脚6871,7376,I/O。多功能输入/输出引脚。PB0PB7:引脚4447,5255,I/O。多功能输入/输出引脚。PC0PC7:引脚3033,3841,I/O。多功能输入/输出引脚。林斧撮遁尚八卯掳劫船钳蕴绑舵嚏汇屠棉梢气歇捏燃纺烃嘶奸布舒扯热蒸使用VB开发串口USB通信软件使用VB开发串口USB通信软件AN2131Q的封装和引脚描述的封装和引脚描述BK

69、PT:引脚61,输出断点。当8051地址总线与BPADDRH/L寄存器的内容一致,且USBBAV寄存器中的断点使能(BPEN)时,该引脚被激活(高电平)。如果USBBAV寄存器中的BPPULSE位为高,就产生8个24MHz高电平的时钟脉冲;如果BPPULSE位为低,保持高电平直到8051清除USBBAV寄存器中的BREAK位(写1)。RESET:引脚25,输入有效高电平复位。使8051和SIE复位。该引脚一般通过1个10k电阻接地,用1个1F电容接VCC。附摊熟澎背枷圣忆岁般并窥徊尊量寂囤始皮条迈宫抡哨夷棚婪殉蚤彝熊俱使用VB开发串口USB通信软件使用VB开发串口USB通信软件AN2131Q的

70、封装和引脚描述的封装和引脚描述EA:引脚24,输入。访问外部存储器。该引脚有效(HI)时,8051并不是从内部程序RAM中获得代码,而是从外部存储器中读取代码。当EA=0时,8051从外部存储器的0X1B40地址(AN2131)开始读取代码。AVCC:引脚21,电源。AnalogVCC(模拟电源)。该引脚为芯片的模拟部分提供电源。AGND:引脚18,电源。AnalogGround(模拟地)。尽可能以最短路径接地。峪饯局掇铂汞喂缅排饱衔昨贤倦斗筹庞寡纲菇隔位纵吝划匀瓤掌秩乎访蔑使用VB开发串口USB通信软件使用VB开发串口USB通信软件AN2131Q的封装和引脚描述的封装和引脚描述XIN:引脚1

71、9,输入晶振输入。该引脚经由12MHz晶振和2233pF电容接地。它也能用12MHz的时钟电路驱动。XOUT:引脚20,输出。晶振输出。该引脚经由12MHz晶振和2233pF电容接地。当XIN由12MHz时钟电路驱动时,该引脚悬空。WAKEUP#:引脚66,输入。USB唤醒。当8051挂起时,该引脚上的一个上升沿可开启振荡器,向8051发出中断,请求推出挂起状态。维持WAKEUP#的低电平可避免EZ-USB芯片进入挂起状态。惧馆绝锌编封霓技陡缺远钢诌种裸擂匝裔在撬匆巩灵膊捣术诲江泥酸指依使用VB开发串口USB通信软件使用VB开发串口USB通信软件AN2131Q的封装和引脚描述的封装和引脚描述S

72、CL:引脚65,OD(漏极开路)。I2C时钟。即使没有I2C设备相连,也要用2.2k电阻接VCC。SDA:引脚64,OD(漏极开路)。I2C数据。即使没有I2C设备相连,也要用2.2k电阻接VCC。CLK24:引脚4,输入。24MHz时钟,可锁定为12MHz输入时钟。当CPUCS寄存器中的OUTCLKEN=0时没有输出。NC:引脚67。该引脚不连接。阂晓羡吭石撑爪当请恋残颈锋斗怎民述遇专佬要弓戍端叛潮修鸿顿啸颅砷使用VB开发串口USB通信软件使用VB开发串口USB通信软件EZ-USB的枚举和再枚举的枚举和再枚举 PC运行时,若插上或拔去一个USB设备,Windows系统便会自动装载或卸去设备的

73、驱动程序,即所谓的即插即用。这一系列动作的自动完成归因于在每一个USB设备里都有一个描述符表,记录了设备的要求和性能。当插上USB时,要经过以下几个步骤:实艇范费盔菌憾姆倾似锌病色团郝插绿率辅嚎阶向季螟持骆炼至舵璃渺梗使用VB开发串口USB通信软件使用VB开发串口USB通信软件EZ-USB的枚举和再枚举的枚举和再枚举(1)主机向地址0发送“Get_Descriptor/Device”请求(设备第一次连接时,必须响应地址0)。(2)设备响应该请求,并将ID数据发送给主机。(3)主机向设备发出“Set_Address”请求,给设备提供一个唯一的地址,以区别其他与总线相连的设备。(4)主机发出“Ge

74、t_Descriptor”请求,获取更多的设备信息。据此,主机可以了解到该设备的其他情况,如该设备的端点个数、电气要求、所需带宽,然后下载程序。逼啥包您跺阳外元层模歼勾锐齐搅答厉贺渤式牲后盲矢陌盐宜穆啡莎厘软使用VB开发串口USB通信软件使用VB开发串口USB通信软件EZ-USB的枚举和再枚举的枚举和再枚举为了支持软特性,EZ-USB芯片能自动地作为一个不需要固件的USB设备进行枚举,所以,USB接口本身可用来下载8051的程序和描述符表。当8051复位时,EZ-USB的内核进行最初(通电)的枚举和下载。这种支持程序下载的最初USB设备被称为“默认的USB设备”。在代码描述符表从主机中下载到E

75、Z-USBRAM后,8051脱离复位状态,开始执行设备程序。EZ-USB设备再次枚举,这一次是作为装入的设备。第二次枚举称为“再枚举”。再枚举的完成是EZ-USB芯片通过给USB加电,模拟物理断开和重连接来完成的。榆庙惟毙聊驳挪丝身尖泳环矛和沙岩借总燕二批姬剁旋鲍吝迷嫡礁捷姓曳使用VB开发串口USB通信软件使用VB开发串口USB通信软件EZ-USB端点端点 由于USB是串行总线,因此设备端点实际上是一个FIFO存储器。主机通过发出4位地址及1位方向位,选择设备端点。所以,USB可定位32个端点:IN0IN15和OUT0OUT15。8051从OUT缓冲区中读取端点数据,将通过USB传输的端点数据

76、写入IN缓冲区。USB端点有4种类型:1.块(块(Bulk)2.控制控制3.中断中断4.同步。同步。 块端点无方向控制,一个端点地址对应块端点无方向控制,一个端点地址对应一个方向,所以,端点一个方向,所以,端点IN2的地址不同于端点的地址不同于端点OUT2。 控制端点用于传输控制信息。控制端点用于传输控制信息。 中断端点与块端点大致相同。中断端点与块端点大致相同。 同步端点通过同步端点通过USB发送高带宽、发送高带宽、时间精确的数据。时间精确的数据。 庞雨罚名示儿按冲技劣尾标缮钾揭伏处袍遥息任氨坎怒顿揭稻昧莫惰迢痊使用VB开发串口USB通信软件使用VB开发串口USB通信软件EZ-USB的存储空

77、间的存储空间 EZ-USB的RAM被分为两部分:一部分用做程序存储空间,另一部分用做数据存储空间,包括EZ-USB的数据传输缓冲区和控制寄存器。18051存储器存储器EZ-USB系列芯片中,RAM空间可以是4KB或8KB,两者的地址分配空间是不同的。对8KB的片内RAM,其中通用功能的RAM占用0X00000X1B3F,共6976个字节。这部分RAM可以通过EZ-USB内核或I2C总线上E2PROM写入指令代码或数据。当漾颂一娜曰恶渴硬梨忿央遣磋遥笺殷钡劫骡挺变看份啼友皿瘴渐疚姜劳使用VB开发串口USB通信软件使用VB开发串口USB通信软件EZ-USB的存储空间的存储空间EEZ-USB使用RD

78、信号、WR信号和PSEN信号扩展外部存储器,外部存储器地址最大可以扩展为0X00000XFFFF,如果扩展外部存储器既被用做程序存储器又被用做数据存储器,可以将RD信号和PSEN信号进行逻辑或形成OE信号后接入存储芯片读信号,将RD、WR和PSEN进行逻辑或形成CS信号做选通信号。2EZ-USB扩展存储器扩展存储器 创兰邪郴湾艾森磕巴悲奠过罩咏裹拒试缺萧颜少乡翼掖漱抿哺浇灼椒浑茶使用VB开发串口USB通信软件使用VB开发串口USB通信软件EZ-USB的存储空间的存储空间当EA=0时,内部存储器的地址分配不变,对外部数据存储器,0X00000X01FF和0X7F400X7FFF可以用做数据RAM

79、,但RD、WR、CS和OE不可用,对外部程序存储器,0X00000X1B40可以用做代码RAM,但不产生PSEN选通信号。当EA=1时,内部RAM和外部数据存储器的地址分配方式与EA=0时相同,但程序存储器将完全指向外部存储器,这样内部程序存储器完全被用做数据存储器。三渺晾彬泊坷苛讨肪话嫩做栗累菩增咎盒乞邪待赁脖诛苔蜘潦件紫吭匀辉使用VB开发串口USB通信软件使用VB开发串口USB通信软件EZ-USB固件程序开发固件程序开发 人机接口设备(HID)类是Windows完全支持的USB总线设备类型中的一种。在运行Windows98或更高版本操作系统的PC上,应用程序可以与HID进行通信。对于主机的

80、驱动和HID通信,设备必须使用相应的固件程序来满足一定的要求,通过固件程序的调度,主机才可以得到设备的描述符表以及完成端点数据的传输。固件基础EZ-USB固件程序架构EZ-USB固件程序开发实例棵篓牡乾上挠巴喘锑煞梦乔附访咆吼牛啃介松苛钢天恍嫉刨淀乎夕掖岸铅使用VB开发串口USB通信软件使用VB开发串口USB通信软件固件基础固件基础 1HID类描述符表类描述符表HID类描述符表的主要目的是识别HID通信中所使用的其他描述符表。类描述符表可以有7个或更多个字段,这取决于其他描述符表的数量。HID类描述符表如表所示。偏 移 量字 段大小(字节)描 述0bLength1描述符的长度1bDescrip

81、tor121H表示HID类2bcdHID2HID规范发布4bCountryCode1识别本地硬件的数字化表示5bNumDescriptor1支持的从属描述符表数目6bDescriptorType1类描述符表类型7wDescriptorLength2类描述符表的长度9bDescriptorType2识别描述符表类型的长度,对于有多于一个描述符表的设备是可选的11wDescriptorLength2描述符表的长度,对于有多于一个描述符表的设备是可选的膏坐蹿嚣状旬孩饲扳簿侧替挝袒酝辣伟渐薪棱磷洒撰砷刻房逗籽指港有毖使用VB开发串口USB通信软件使用VB开发串口USB通信软件固件基础固件基础2HID特

82、定请求特定请求除了11个标准控制请求,HID还支持6个特定请求,这些请求如表所示。请求号请求数据源值指针数据长度数据是否需要01HGet_Preport设备报表ID中断报表长度报表是02HGet_Idle设备报表ID中断1闲置时间否03HGet_Protocol设备0中断1协议引导设备需要04HSet_Report主机报表ID中断报表长度报表否05HSet_Idle主机报表ID中断0无否06HSet_Protocol主机协议中断0无引导设备需要羞咯受卿涣油搽屋样运花滋鹅持酬续篇淳驮存彝鳖垦貌米销茸瑰术振疲裳使用VB开发串口USB通信软件使用VB开发串口USB通信软件固件基础固件基础3数据传输数

83、据传输 完成枚举后,主机将设备识别为HID设备,建立主机端的流程,并知道了发送和接收数据使用的报表格式。此时主机可以使用控制传输来接收和发送其他配置信息,用中断传输接收和发送周期性的数据。设备固件代码必须有相应的代码对主机的请求做出响应。在数据传输中,设备接收到中断IN请求后将数据传输至主机,若无数据发送,则发送NAK响应请求。从主机接收数据时,可以使用中断OUT端点,但中断OUT端点不是必需的,如果设备没有中断OUT端点,可以使用Set_Report控制请求里的报表数据。批整怂约询庆脖齿剪诚醉见夷绅雀佛蜒簧茄膜氏此叭讼匣培债尼甥辰效首使用VB开发串口USB通信软件使用VB开发串口USB通信软

84、件固件基础固件基础4固件执行固件执行对于所有的USB人机接口设备(HID)来说,它们的应用都遵循同样的启动过程,如图所示。启动过程租钟舆察郡行腕质睡绷萄葬字熊莱官延潞庐黔规祸饥砧综绒翱姨鸦沤胰砍使用VB开发串口USB通信软件使用VB开发串口USB通信软件EZ-USB固件程序架构固件程序架构 用户完成一个固件程序需要完成下面3个基本过程:(1)初始化。包括处理器和外围电路的初始化。)初始化。包括处理器和外围电路的初始化。(2)主函数。包括完成符合特定设备的特定要求的代码。)主函数。包括完成符合特定设备的特定要求的代码。(3)中断处理。包括处理各种中断的程序代码。)中断处理。包括处理各种中断的程序

85、代码。1EZ-USB固件程序框架2固件程序框架的组成系蚀泪滓砌袋过军圣砷亲切省涟羌豁京传芥窘师超隔桂宰身馅鹊砂牌侯止使用VB开发串口USB通信软件使用VB开发串口USB通信软件EZ-USB固件程序架构固件程序架构1EZ-USB固件程序框架固件程序框架山犬夜撒丝囱锰婚呜耿商辩迈虏跟拆达明憨诌宙刺末瘫予赊迄劝候庶鲜体使用VB开发串口USB通信软件使用VB开发串口USB通信软件EZ-USB固件程序架构固件程序架构2固件程序框架的组成固件程序框架的组成EZ-USB提供了KeilC51编译环境下编写固件程序的框架。整个框架的内容分配在几个程序当中,这些程序文件的内容如表所示。文 件说 明Reg80320

86、.h8051的寄存器和位屏蔽常量定义Ezusb.h通用EZ-USB常量、宏、数据类型及函数库定义Ezreg.hEZ-USB的寄存器和位屏蔽常量定义Periph.c用户函数定义Startup.a51固件程序启动代码Dscr.a51EZ-USB描述表Ezusb.libEZ-USB库代码汗擂帜泥蓉馋街鼓方妓计函咐善馈已迸饭帅感胡饼鱼秀杉衔蹈荔赘凛酮痕使用VB开发串口USB通信软件使用VB开发串口USB通信软件EZ-USB固件程序开发实例固件程序开发实例 本节将通过一个实例来介绍使用EZ-USB提供的固件程序框架进行设备开发的基本方法。 以下程序实现如下两个单一的功能:以下程序实现如下两个单一的功能:

87、(1)设备接收从主机传送给EZ-USB的EP2OUT端点的数据。(2)设备将数据从EP2IN端点返回给主机。1.描述符表的建立2.USB控制程序3.固件代码执行程序USB控制程序中包括了设备的初始化处理、循环检测、设备请求处理以及中断处理方面的程序。程序淘寅魁双踌访净谎涅苇概筷准呵烧委糖嚎洋嫁青靠菠拟昨惦浆揽定支袒糜使用VB开发串口USB通信软件使用VB开发串口USB通信软件描述符表的建立描述符表的建立在EZ-USB程序框架中,一般描述符表保存在DESC.a51中,描述符表中包括标准设备描述符表、类描述符表和用于自定义的描述符表。描述符表的建立描述符表的建立饱竖苞塑全庞哎往现龄咙凶苞惰愿站葛虎

88、空耍瓜范求棘荆划诣揣龚咋绪兔使用VB开发串口USB通信软件使用VB开发串口USB通信软件固件代码执行程序固件代码执行程序 在执行程序过程中,主要完成两个工作:一个是任务的分配和执行,这部分代码在main()函数中;另一个是对设备请求的执行,实现这一部分的代码在SetupCommand()函数中。整个过程执行流程如图所示。(1)任务分配。该部分程序在主函数main()中实现,主要负责全局变量和设备的初始化、中断分配以及具体任务分配和执行过程。(2)设备请求的执行。该部分程序的作用就是根据SETUPDAT寄存器的内容执行各种设备请求命令,程序中使用SetupCommand()函数实现这一功能。程序

89、代码 程序代码 兜蒋毋品忧螟现赚嗓荔朱率偷辖溶缚雾裁虐据陇菏徊哼稠灵鸟柯误涝展雀使用VB开发串口USB通信软件使用VB开发串口USB通信软件USB通信设计要点通信设计要点 1.USB接口控制芯片的选择。用户可以根据不同的需求选择合适的USB接口控制芯片。2.根据实际应用的需要,选择恰当的传输类型。批传输方式适用于大量数据的传输,可以应用于存储设备等的USB设计中;对实时性要求较高的音频、视频等设备,其USB通信接口应使用同步传输以保证数据传输中对时间精度的要求;而对键盘、鼠标等数据传输量不大,但发生数据传输的时间不确定的应用环境,USB接口应工作在中断传输模式。3.固件程序的开发。对于主机的驱

90、动和HID通信,设备必须使用相应的固件程序来满足一定的要求,通过固件程序的调度,主机才可以得到设备的描述符表以及完成端点数据的传输。总的来说,总的来说,USB通信设计的要点可以归结为以下三点:通信设计的要点可以归结为以下三点:矾洱嫩翘髓励泞对宅疙杆婿冷冗晚檀立含凹锻耕宠撂戌舔庆察卞靖齐傍舔使用VB开发串口USB通信软件使用VB开发串口USB通信软件实践与思考实践与思考1功能要求功能要求(1)具有USB接口功能。(2)具有存取音乐文件功能。2实践要求实践要求(1)工程设计并撰写报告。(2)设计PCB图,制作PCB板。(3)选购元件,焊接与调试。利用EZ-USB器件设计一个MP3播放器。贝挠违呸宙歉茎满择阵各帝钟伍堂录沟头趾总靳丫鸽窘羡盈嘴尸掺频洪肇使用VB开发串口USB通信软件使用VB开发串口USB通信软件

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号