rs-232转接usb接口转换器的全面设计论文(3)

2018-12-05 13:16

广西工学院鹿山学院本科生毕业设计(说明书)

② 采用51单片机+PDUSBD12组成的USB系统

PDIUSBD12芯片是荷兰菲利普(Philips)半导体公司生产的通用USB接口芯片,它支持通用串行总线(USB)1.1规范,具有软连接(soft connect)功能和数据流指示灯(good link);它使用8位并行的数据口与MCU连接,数字引脚兼容5V逻辑电平,内置3.3V稳压器,可使用3.3V、5V供电,外部使用6MHz的晶振作为时钟源。D12除了端点0,还有两个额外的端点,每个端点都具有输入和输出端点,端点0和端点1支持的最大包长为16字节;端点2普通模式下支持最大包长64字节,端点2还支持等传输模式;单向时支持最大包长128字节,双向时支持最大包长为64字节。

STC89C52是一款高性价比的单片机,其功能强大,易于的开发环境Keil C51 且该单片机内部自带有一个串口,因此用STC89C52和PDIUSBD12两芯片相结合,在硬件上是完全有可能实现USB转串口的。

本课题的研究重点在于驱动程序的开发,因此在硬件电路的设计上,作者最终选定一种基于51单片机+PDIUSBD12的硬件电路系统,AVRCDC的方案虽然具有成本低廉,硬件电路简单等优势,但是由于USB协议规定的操作时序要求非常高,核心的代码须用汇编语言来编写,开发难度相对较大,因此不采用该方案。

而PDIUSBD12是一款专业的USB控制芯片、STC89C52单片机可以很灵活地实现对其的读写控制,开板难度相对较低。由于本题的重点应放在驱动程序的开发,设备端的硬件部分就选用此相对简单的方案。

4.3 USB转串口设备硬件电路的设计

选定USB通信芯片与单片机后,接下来就是把芯片连接成电路,参照PDIUSBD12的使用手册,可能很方便地将其与89C52连接起来,数据口D0—D7接到单片机的P0口,中断请求引脚接到单片机的INT0,WR和RD相应地接到单片机的WR和RD引脚,数据命令区分引脚A0接到单片机的P3.2上,另外,ALE、CS_N、SUSPEND接地,RESET、EOT_N、DMACK接到高电平,X1、X2连接6M的晶体,D+、D-分别接到USB接口的3,2脚(连到电脑);

89C52单片机自带一串口,不过是TTL电平的,而计算机上的串口为CMOS电平,因此需要接上MAX232,将其转化为CMOS电平。串口传输需要速率较快,整个系统要求工作地时钟频率较高,因而采用22.1184MHz的晶振,另外为了加快数据传输的速度,避

11

广西工学院鹿山学院本科生毕业设计(说明书)

免数据丢失,本课题应使用D12的端点2作为批量传输,使其缓冲区有64字节,并且有双缓冲机制。

系统的电路图如下:

图4.2 USB转串口原理图

RS-485转换接口模块采用MAXIM公司生产的一种差分平衡型收发器芯片MAX487,MAX487的RO接RS232的TXD引脚,DI接RS232的RXD引脚;/RE和DE管脚同时接到TNOW引脚,用来控制接收器和驱动器的输出使能。A,B管脚分别接上上拉电阻和下拉电阻。如下图所示:

图4.3 MAX485电平转换电路

12

广西工学院鹿山学院本科生毕业设计(说明书)

第五章 系统的软件设计

5.1 USB转串口设备端的程序设计

硬件电路设计好了,接下来要想使电路运行起来,在此电路中,首先要通过单片机实现对PDIUSBD12芯片的控制,即是该芯片的驱动程序,还有就是单片机串的的驱动,在此基础上才能构造出USB通信的框架来。

一般来说,要实现USB转串口,有两种可行的方法:一种是使用USB协议规定的CDC类中的抽象模型(abstract control model)子类中的通用AT命令(common AT commands)协议,此方式不需要用户开发驱动程序;另一种是使用用户自定义的USB设备,然后开发其驱动程序,由驱动程序生成串口,开发驱动程序比较复杂,但是应用灵活。对于设备端来说,两种方式的通信流程是类似的,两者最主要的区别在为描述符的不同。这可以通过STC89C52单片机程序控制来实现,其程序流程图如下:

图5.1 设备端程序流程图

设备初始化部分,程序要完成以下的工作:串口初始化、读D12的ID号并进行检验,然后用软件的方式分别断开、连上USB连接,并将配置值初始化为0。

D12中断的处理方法:读中断寄存器和第一个字节,然后判断相应的位状态,执行相应的中断处理函数,它们分别是:总线挂起中断处理、总线复位中断处理、端点0输出中断处理、端点0输入中断处理、端点2输出中断处理、端点2输入中断处理。

D12与PC的通信,是通过D12的端点0来实现,主机将请求信息发送到端点0,D12

13

广西工学院鹿山学院本科生毕业设计(说明书)

把设备描述符、配置描述符、接口描述符、功能描述符、端点描述符字符串描述符等信息通过端点0发送到主机。

(1)USB-CDC类设备的描述符如下:

设备描述符(18字节)

0x12,0x01,0x10,0x01,0x02,0x00,0x00,0x10,0x99, 0x99,0x99,0x99,0x00,0x01,0x01,0x02 0x03,0x01 以下是配置描述符集合() 配置描述符(9字节)

0x09,0x02,0x43,0x00,0x02,0x01,0x00,0x80,0x32 CDC类接口描述符(9字节)

0x09,0x04,0x00,0x00,0x01,0x02,0x02,0x01,0x00, 功能描述符(19字节) Header Functional Descriptor 0x05,0x24,0x00,0x10,0x01

Call Management Functional Descriptor 0x05,0x24,0x01,0x00,0x00

Abstract Control Management Functional Descriptor 0x04,0x24,0x02,0x02

Union Functional Descriptor 0x05,0x24,0x06,0x00,0x01 接口0的端点描述符(7字节) 0x07,0x05,0x81,0x03,0x10,0x00,0x0A 接口1(数据接口)的接口描述符(9字节) 0x09,0x04,0x01,0x00,0x02,0x0A,0x00,0x00,0x00 批量输入端点2描述符(7字节) 0x07,0x05,0x82,0x02,0x40,0x00,0x00 批量输出端点2描述符(7字节) 0x07,0x05,0x02,0x02,0x40,0x00,0x00

另外,语言描述符是可选的,对程序运行无重大影响,此处略去。

配置好设备的描述符后,主机应该可以成功地识别该设备了,但USB转串口设备还不能算完成。还需要实现对端点的数据处理:首选要实再对SET_CONTROL_LINE_STATE

14

广西工学院鹿山学院本科生毕业设计(说明书)

SET_LINE_CONING 和 GET_LINE_CONING 请求的处理,另外,要实现对串口数据的处理,即将串口接收到的数据发送到端点2,将端点2接收到的数据发送到串口,数据代码如下:

if(ConfigValue!=0) {

if(Ep2InIsBusy==0) //判断端点2是否空闲

SendUartDataToEp2(); //调用函数将缓冲区数据发送到端点2 if(UsbEp2ByteCount!=0)

//端点2接收缓冲区中还有数据未发送,则发送到串口 {

//发送一字节到串口

UartPutChar(UsbEp2Buffer[UsbEp2BufferOutputPoint]); UsbEp2BufferOutputPoint++; //发送位置后移1 UsbEp2ByteCount--; //计数值减1 } }

至此,USB转串口设备算是基本完成了,将程序烧到单片机中运行,并在主机端装上驱动程序后(Windows操作系统自带有USB-CDC类驱动,用户无需开发,只需提供一个安装驱动用的INF文件),即可产生一个虚拟串口了,应用程序(如串口调试助手SSCOM)就可像使用普通串口一样使用此USB转串口设备了。 (2)自定义USB类设备的描述符如下:

设备描述符(18字节)

0x12,0x01,0x10,0x01,0xFF,0x00,0x00,0x10,0x99, 0x99,0x99,0x99,0x00,0x01,0x01,0x02,0x03,0x01 配置描述符集合(32字节) 配置描述符(9字节)

0x09,0x02,sizeof(ConfigurationDescriptor)&0xFF, (sizeof(ConfigurationDescriptor)>>8)&0xFF, 0x01,0x01,0x00,0x80,0x32, 接口描述符(9字节)

0x09,0x04,0x00,0x00,0x02,0x00,0x00,0x00,0x00

15


rs-232转接usb接口转换器的全面设计论文(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:专业技能型职业农民培训考试试卷

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: