工程设计报告设计题目:实现与PC机的USB通讯(需Windows驱动)学院:电子工程学院专业:电子信息工程班级:学号:姓名:电子邮件:日期:2015年1月5日成绩:指导教师:宁贝佳西安电子科技大学电子工程学院工程设计任务书学生姓名指导教师宁贝佳职称副教授学生学号专业电子信息工程题目实现与PC机的USB通讯(需Windows驱动)任务与要求任务:用MCU控制USB驱动芯片,实现目标板与PC通讯要求:掌握MCU的原理设计电路,绘制原理图及PCB版图在面包板上实现电路开始日期2014年10月27日完成日期2015年1月5日工程设计所在单位电子工程系…………………………装………………………………订………………………………线………………………………………………………………一.应用背景简述单片机是单片微型计算机(MCU)的简称,主要用于工业控制领域,用来实现对信号的检测,数据的采集以及对应用对象的控制。但单片机有其先天的不足:存储空间太小,运算速度较低。若有大量数据要处理、储存或输出时,PC机的存在不可少。所以单片机和PC机之间的通信至关重要,如何有效、方便、快速、准确的进行数据传递作为一个重要问题产生了,“即插即用”的USB技术为我们提供了一种解决方法,USB总线是一种通用串行总线,以其方便易用、快速、价格低廉的特性,已经被广泛应用于各种数据传输设备。USB(universalserialbus)全名为通用串行总线,USB技术出现以前,PC机上的接口技术还是沿用二十世纪八十年代早期的IBMPC设计。人们迫切需要一种同时支持电源管理、即插即用、高带宽以及良好的可扩展性的接口技术的出现。USB技术恰好满足了PC技术人员和用户在接口技术上的这些新的需求,成为目前流行的计算机接口技术。它作为一种通用新标准在许多场合都崭露头角。以往单片机下载程序一般都是通过串口实现的,麻烦不易操作。而且很多的计算机数据处理都要经过传感器将数据传回,并做AD转换,这个时候就要通过单片机做数据的初步处理并将数据发回计算机。这个设计就是为解决这些问题简易性而设计的。通过这个设计,单片机与PC机的通讯会变得更加轻松简便,由于USB有热插拔、传输速率快、支持多个外设同时工作的特点,使得它的应用十分灵活。USB共有4种传输模式:控制传输、同步传输、中断传输、批量传输,以适应不同设备的需要,因而非常适合市场上的各种需求。二.微处理器简介AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。AT89C52为8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz晶振。RST/Vpd(9脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。P0~P3为可编程通用I/O脚,其功能用途由软件定义,在本设计中,P0端口(32~39脚)被定义为N1功能控制端口,分别与N1的相应功能管脚相连接,13脚定义为IR输入端,10脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12脚、27脚及28脚定义为握手信号功能端口,连接主板CPU的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。AT89C52有以下特点1、兼容MCS51指令系统2、8kB可反复擦写(大于1000次)FlashROM;3、32个双向I/O口;4、256x8bit内部RAM;5、3个16位可编程定时/计数器中断;6、时钟频率0-24MHz;7、2个串行中断,可编程UART串行通道;8、2个外部中断源,共8个中断源;9、2个读写中断口线,3级加密位;10、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;11、有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。AT89C52管脚图AT89C52封装图三.设计方案描述本次设计是基于CH375来实现USB接口与PC机通信。方案由我主要提出,小组成员加以完善。CH375是一个USB总线的通用接口芯片,支持USB-HOST主机方式和USB-DEVICE/SLAVE设备方式,本实验是采用外部固件模式。CH375具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机输入、串行输出和中断输出与单片机/DSP/MCU/PU等相连接。USB模块CH375是一个USB总线的通讯设备接口芯片,用户无需编写驱动程序,内置有USB通讯中的底层协议,完全满足USB1.1标准。具有8位数据总线(D0~D7)、地址输入(A0)、读(RD#)、写(WR#)、片选控制线(CS#)以及中断输出(INT#),可以方便地挂接到单片机的数据总线上。当A0为低电平时选择数据端口,单片机通过8位并口对CH375进行读写数据;为高电平时选择命令端口,可以向其写入命令。在本地端,单片机对CH375的操作是采用命令加数据的I/O操作方式,任何操作都是先发命令(其命令格式参考文献3)给CH375,然后执行数据输入输出。CH375接收到上位机发送的数据或者发送完给上位机的数据后,以中断方式通知单片机。将CH375芯片的驱动程序、动态链接库拷贝到上位机中,利用CH375动态链接库DLL提供的API函数对其进行操作,对USB设备的通信就几乎和访问本地硬盘中的文件差不多了。本实验采用数据加应答方式进行通信,由计算机应用层发起,然后以接收到单片机的应答结束。单一通道完整的通信过程包括:①计算机应用层按事先约定的格式将数据请求发送给CH375②CH375以中断方式通知单片机③单片机进入中断服务程序,获取CH375的中断状态并分析④如果是上传(上传缓冲区的数据被计算机成功读取),则释放当前USB缓冲区,然后退出中断程序⑤如果是下传(下传缓冲区成功接收到计算机发送的数据),则从数据下传缓冲区读取数据块⑥分析接收到的数据块,如果是数据请求上传命令,准备应答数据(采集数据)⑦单片机将采集数据写入数据上传缓冲区中,然后退出中断程序⑧CH375将采集数据返回给计算机⑨计算机应用层接收到应答数据,传输结束;该通讯方式具有数据自动同步、程序设计简单、较好的交互性和可控性等优点。计算机定时以此方式顺次访问各通道,获取各通道采集到的数据。CH375封装图四.硬件设计本次任务我主要负责硬件设计,通过网络查找资料学习电路设计软件的使用,对AltiumDesigner有了大致的了解及简单的运用。用到的电路设计软件是AltiumDesigner14,AltiumDesigner是原Protel软件开发商Altium公司推出的一体化的电子产品开发系统,主要运行在Windows操作系统。这套软件通过把原理图设计、电路仿真、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合,为设计者提供了全新的设计解决方案,使设计者可以轻松进行设计,熟练使用这一软件必将使电路设计的质量和效率大大提高。设备连接框图本地端控制器单片机MCUDSP等CH375接口芯片计算机端USB设备等D+D-INT#CS#D[7-0]A0RD#WR#原理图PCB图五.软件设计软件设计流程图如图USB传输中断入口INT1分析CH375的中断状态释放当前USB缓冲区读取下传缓冲区数据块中断退出数据请求上传接收数据块采集数据写入上传缓冲区中断退出中断退出CH375外部固件方式/*基于51单片机和CH375的C语言程序*/#pragmaNOAREGS#includereg52.h#includeCH375INC.H;此头文件在本程序末将有介绍typedefunion_REQUEST_PACK{unsignedcharbuffer[8];struct{unsignedcharbmReuestType;//标准请求字unsignedcharbRequest;//请求代码unsignedintwValue;//特性选择高unsignedintwIndx;//索引unsignedintwLength;//数据长度}r;}mREQUEST_PACKET,*mpREQUEST_PACKET;/*设备描述符*/unsignedcharcodeDevDes[]={.../*配置描述符*/unsignedcharcodeConDes[]={............/*主程序*/main(){P1|=10;Delay50ms();P1&=~(10);Delay50ms();/*延时等待CH375初始化完成,如果单片机由CH375提供复位信号则不必延时*/CH375_Init();/*初始化CH375*/EA=1;while(1);}六.总结与展望在我们小组的共同努力下,我们本次的设计任务基本完成。由于缺乏软件硬件设计经验,这次任务遇到了许多困难,不过通过我们的努力最终还是完成了任务。在本次设计过程中,我们主要通过网络搜集相关资料,学习相关内容,比如使用AltiumDesigner设计原理图、PCB图,单片机的程序编写等,这些东西都是之前没有接触到的,通过学习网上的经验帖我们学到了很多课本中学不到的知识,实践得真知,真正的知识都是从实践中得来的。但是这次设计存在许多不足,比如很多问题没能找到最佳解决方案,我们还需要深入学习一些软件的使用和程序编写,多动手实践,才能做的更好。七.硬件实验心得本次实验之前,我对硬件设计几乎不了解,通过本次任务,我学会AltiumDesigner的基本使用,能够根据元件的基本数据对元件进行封装,会进行原理图的连接,也能够调试出PCB图,收获很多。在学会封装之前我对封装一点不了解,管脚的距离,规格一点不认识,通过网上大量的学习才逐渐掌握软件的使用。同时,小组内其他成员的贡献也很多,查阅资料,收集相关文献,对我们遇到的难题加以分析,在小组的共同努力下,此次任务才能完成的不错。同时我也认识到,在之后的学习中,要不断实践,不断探索才能掌握更多的知识。八.主要参考资料[1]李学海.PIC单片机实用教程——提高篇(第二版)[M].北京航空航天大学出版社,2007[2]谷树忠、刘文洲、姜航.AltiumDesigner教程电子工业出版社2012年5月[3]兰文武;付桂翠;高泽溪;高成基于USB接口的数据采集系统设计[期刊论文]电子技术应用2004(02)