设计题目:实现与PC机的USB通讯(需Windows驱动) 学 院: 电子工程学院
专 业: 电子信息工程
班 级:
学 号:
姓 名:
:
日 期: 2011年 12月 30 日
成 绩:
指导教师:
…………………………装………………………………订………………………………线………………………………………………………………
西 安 电 子 科 技 大 学
电 子 工 程 学 院
工 程 设 计 任 务 书
学生姓名 指导教师 宁贝佳 职称 烷基叔丁基醚讲师
学生学号 专业 电子信息工程
题目 实现与PC机的USB通讯(需Windows驱动)
任务与要求
任务:用MCU控制USB驱动芯片,实现目标板与PC通讯
要求:
∙ 掌握MCU的原理
∙ 设计电路,绘制原理图及PCB版图
∙ 在面包板上实现电路
开始日期 2011年 10月31日 完成日期2011年 12月30日
工程设计所在单位 电子工程系
一、 应用背景简述
USB(universal serial bus)全名为通用串行总线,它作为一种通用新标准在许多场合都崭露头角。以往单片机下载程序一般都是通过串口实现的,麻烦不易操作。而且很多的计算机数据处理都要经过传感器将数据传回,并做AD转换,这个时候就要通过单片机做数据的初步处理并将数据发回计算机。这个设计就是为解决这些问题简易性而设计的。通过这个设计,单片机与PC机的通讯会变得更加轻松简便,由于USB有热插拔、传输速率快、支持多个外设同时工作的特点,使得它的应用十分灵活。USB共有4种传输模式:控制传输、同步传输、中断传输、批量传输,以适应不同设备的需要,因而非常适合市场上的各种需求。 二、 微处理器简介
设计用到的微处理器是PIC16F877A,PIC16F877A单片机是8 位单片机,具有Flash progr
am程序内存功能,可以重复烧写,适合开发设计。并且它具有数据总线和指令总线分离的哈佛结构,该结构具有执行效率高和速度快等优点。另外片内带有很多有特殊功能的模块如:I/O,CCP,Timer ,USART,MSSP等。PIC16F877外部引脚图如下:
三、 设计方案描述
本设计是用单片机PIC16F877A控制USB驱动芯片PDIUSBD12根据USB1.1协议通过USB接口实现与电脑的通信。设计的难点是实现与电脑通信的建立以及通信的随机性的要求。
现在的电脑外设接口具有统一的通信协议,因此要与电脑建立通信必须首先控制PSIUSBD12芯片接受电脑的要求,按电脑的配置地址设置接口地址,并且发送设备信息,配置信息。要实现随机的通信,则用中断的方式使微处理器在前台工作的时候随时接受中断申请,会大大提高处理器的利用率。下图为系统总原理图:
本次设计选用的电子器件是飞利浦公司的PDIUSBD12,PDIUSBD12是一个性能优化的USB器件,通常用于基于微控制器的系统,并通过高速通用并行接口与微控制器进行通信,而且支持本地DMA传输。该器件采用模块化的方法实现一个USB接口,允许在众多可用的微控制器中选择最合适的作为系统微控制器,允许使用现存的体系结构使固件投资减到最小。这种灵活性减少了开发时间、风险和成本。该器件使开发成本低且高效的USB外围设备的一种有效途径。PDIUSDB12完全符合USB1.1规范,也能适应大多数设备类规范的设计,如成像类、大容量存储类、通信类、打印类和人工输入设备等。因此,PDIUSBD12非常适合做很多外围设备。现在很多用SCSI实现的很多设备如果用USB来实
缠绕膜复卷机
现可以直接降低成本。PDIUSBD12还集成了SoftConnect、GoodLink、可编程时钟输出、低频晶振和终端电阻等特性。所有这些特性都能在系统实现时节省成本,同时在外围设备上很容易实现更高级的USB功能。
PDIUSBD12管脚图如下:
四、 硬件设计
用于硬件设计的软件是众所周知的Altium Designer,这款软件的功能十分强大,原理图设计、PCB设计、FPGA设计等等电子设计功能应有尽有,并且操作简单。它集成了现代设计数据管理功能,使得Altium Designer成为电子产品开发的完整解决方案——一个既满足当前,也满足未来开发需求的解决方案。
模块功能图如下:
五、 软件设计
我负责这个设计中的中断程序的编写,中断服务程序代码处理由PDIUSBD12产生的中断。他将数据从PDIUSBD12的内部FIFO中取回到CPU存储器并建立正确的事件标志,以通知主程序进行处理。在中断程序中固件先读取中断源,然后进入相应的程序进行处理,其流程图如下图:
收腰羽绒服
中断程序中包括挂起改变、控制端点(0端点)、端点1、端点2的各个相应中断服务程序。其中挂起改变只需在EPPFLAGS标志中设置”suspends”标志位即可。而控制端点的处理则是最重要和最难的部分。控制端点的处理程序装换图如下:
中药煎药器控制传输总是在SETUP阶段开始,之后为可选的DATA阶段。然后再STATUS阶段结束,上图为控制端点不同状态的转变。固件用这三种状态来处理控制传输。控制传输主要是处理建立包,使MCU接受到主机所给的控制信息,进而与主机建立联系。由于此过程比较繁琐,且报告篇幅有限在此不再赘述。然后是普通端点的服务程序,普通端点主要负责在与主机建立连接后的数据通信处理,其过程也比较简单其流程图如下:
六、交通灯程序
交通灯主要实现在一定时间使 红黄绿灯有规律地转换,进而管理交通。以下为交通灯用C语言实现的编程:
交通灯的C语言代码:
#include<pic.h>
void delay(uchar x)
{ unsigned char j;
while(x--)
for(j=0;j<100;j++);
}
void main()
{
TRISC=0;
while(1)
{
PORTC=0x18;
delay(5000);
垃圾焚烧 PORTC=0x14;
delay(100);
PORTC=0x42;
delay(5000);
PORTC=0x22;
delay(1000);
}
}
七、总结与展望
这次设计任务我主要负责硬件设计部分。由于没有硬件设计经验,设计过程中遇到了许多困难。但是通过网络我们最终还是完成了任务。通过学习网上的经验帖我学到了很多课本中学不到的知识,实践得真知,真正的知识都是从实践中得来的。我还学习了如何用Altium designer完整设计出一个电路的PCB版图,了解了PCB的制作工艺,从中受益良多。但是这次设计存在许多不足,比如很多问题没能到最佳解决方案,我觉得这需要我们以后多动手多实践多总结才能有更大的进步
六、 主要参考资料
【1】 周立功等.PDIUSBD12 USB 固件编程与驱动开发.北京航空航天大学出版社.2003
【2】 李学海.PIC单片机实用教程——提高篇(第二版)[M].北京航空航天大学
出版社,2007
>水库监控