资料介绍
USB(Universal Serial Bus)即通用串行总线,是现在非常流行的一种快速、双向、廉价、可以进行热插拨的接口,在现在的每一台 PC 机上都可以找到一对 USB 接口。在遵循 USB1.1 规范的基础上,USB接口最高传输速度可达 12Mb/s:而在最新的 USB2.0 规范下,更可以达到 480Mb/s.同时它可以连接127个USB设备,而且连接的方式也十分灵活,既可以使用串行连接,也可以使用集线器(Hub)把多个设备连接在一起,再同 PC 机的 USB 接口相连.此外,它还可以从系统中直接汲取电流,无需单独的供电系统.USB 的这些特点使它获得了广泛的应用.但是使用上的方便则意味着开发上的复杂,主要是编程的复杂性大大的增加了.在设计开发一个USB外设的时候,开发者主要需要编写三部分的程序: ①固件程序;②USB驱动程序;③客户应用程序.本文主要阐述固件程序的编写.1 固件要完成的主要工作固件是 FIREWARE 的对应中文词,它实际上是单片机的程序文件,其编写语言可以采用 C 语言或是汇编语言.它的操作方式与硬件联系紧密,包括 USB 设备的连接 USB协议、中断处理等,它不是单纯的软件,而是软件和硬件的结合,开发者需要对端口、中断和硬件结构非常熟悉。固件程序一般放入 MCU 中,当把设备连接到主机上(USB 连接线插入插孔)时,上位机可以发现新设备,然后建立连接。因此。编写固件程序的一个最主要的目的就时让 Windows 可以检测和识别设备。2 PDIUSBD12芯片特点PDIUSBD12 是一个性能优化的 USB 器件,通常用于基于微控制器的系统,并通过高速通用并行接口与微控制器进行通信,而且支持本地 DMA 传输。该器件采用模块化的方法实现一个 USB 接口,允许在众多可用的微控制器中选择最合适的作为系统微控制器,允许使用现存的体系结构使固件投资减到最小。这种灵活性减少了开发时间、风险和成本。该器件使开发成本低且高效的 USB 外围设备的一种有效途径。PDIUSDB12 完全符合 USB1.1 规范,也能适应大多数设备类规范的设计,如成像类、大容量存储类、通信类、打印类和人工输入设备等。因此,PDIUSBD12非常适合做很多外围设备,如打印机、扫描仪、外部大容量存储器(Zip 驱动器)和数码相机等。现在很多用 SCSI 实现的很多设备如果用 USB 来实现可以直接降低成本。PDIUSBD12还集成了 SoftConnect、GoodLink、可编程时钟输出、低频晶振和终端电阻等特性。所有这些特性都能在系统实现时节省成本,同时在外围设备上很容易实现更高级的 USB 功能。3 PDIUSBD12固件程序的编写USB 设备启动流程如下:(1) USB设备接入 USB 口,发出连接 USB 命令;(2) 主机发出读设备描述符两次;(3) 主机根据设备描述符——厂商 ID、产品ID,启动相应设备驱动程序;(4) 设备驱动程序初始化 USB 设备;①读设备描述符;②读配置描述符;③选择接口、端点(管道),确定传输方式。图 1 PDIUSBD12测试电路连接图图 1是PDIUSBD12的电路连接图。USB 固件程序程序由三部分组成:①初始化单片机和所有的外围电路(包括 PDIUSBD12);②主循环部分,其任务是可以中断的;③中断服务程序,其任务是对时间敏感的,必须马上执行。根据 USB 协议,任何传输都是由主机(Host)开始的。单片机作它的前台工作,等待中断。主机首先要发令牌包给 USB设备(这里是 PDIUSBD12),PDIUSBD12 接收到令牌包后就给单片机发中断。单片机进入中断服务程序,首先读 PDIUSBD12 的中断寄存器,判断 USB 令牌包的类型,然后执行相应的操作。在 USB 单片机程序中,要完成对各种令牌包的响应,其中比较难处理的是 SETUP包,主要是端口 0的编程。单片机与 PDIUSBD12的通信主要是靠单片机给 PDIUSBD12发命令和数据来实现的。PDIUSBD12的命令字分为三种:初始化命令字、数据流命令字和通用命令字。PDIUSBD12数据手册给出了各种命令的代码和地址。单片机先给 PDIUSBD12 的命令地址发命令,根据不同命令的要求再发送或读出不同的数据。因此,可以将每种命令做成函数,用函数实现各个命令,以后直接调用函数即可。下面的程序是处理主机的标准控制请求的一个模板:unsigned char ENDPOINT_A0_FIFO[8];//判断输入的是 SETUP请求,并将其读入缓冲区 ENDPOINT_A0_FIFO…if((ENDPOINT_A0_FIFO[0] & 0b011000000)==0x00){if(ENDPOINT_A0_FIFO[1]<=0C){(*StandardFunctionTable[ENDPOINT_A0_FIFO[1]])();return;}}…const void (*StandardFunctionTable[])(void)={GetSatus,ClearFeature,USB_Reserved,SetFeature,USB_Reserved,SetAddress,GetDescriptor,SetDescriptor,GetConfiguration,SetConfiguration,GetInterface,SetInterface,SynchFrame};USB 设备在正常使用以前,必须由主机配置设备。主机一般会从 USB设备获取配置信息后再确定此设备有哪些功能。作为配置操作的一部分,主机会设备设备的配置值,如果必要的话会选择合适的接口备选设备。其初始化函数为:void D12_int(){ XmtBuff.pNum=16;D12_COMMAND=0xf4;//读中断寄存器ist=D12_DATA;ist=D12_DATA;if(ist & 0x01) //ENDP0_OUT{XmtBuff.out=0;XmtBuff.in=1;D12_COMMAND=0x40; //读 OUT 最后状态ist=D12_DATA;if(ist & 0x20)//收到 SETUP 包{ Setup_read();Setup_control();}else{ Setup_read();}}else if(ist & 0x02)//ENDP0_IN{ XmtBuff.in=1;D12_COMMAND=0x41;//读 in 最后状态ist=D12_DATA;USB_submit();}else if(ist & 0x04)//ENDP1_OUT{ XmtBuff.out=2;XmtBuff.in=3;D12_COMMAND=0x42;//读 out 最后状态ist=D12_DATA;read_out();}else if(ist & 0x08)//ENDP1_IN{ XmtBuff.in=3;D12_COMMAND=0x43;//读 in 最后状态ist=D12_DATA;XmtBuff.b[0]=5;XmtBuff.wrLength=1;XmtBuff.p=XmtBuff.b;USB_submit();}……在发出连接 USB 命令后,主机先读取设备描述符,然后发出设置 USB 地址 SETUP 包,设置 USB 地址后,进行主机客户驱动与设备初始化。其余端点(ENDPOINT)依此类推。在其头文件里需定义 USB 规范中的各种描述符格式,包括设备描述表、配置描述表、接口描述表、端点描述表、字符串描述表以及描述表类型。这样,在发送配置[,接口(1),端点(1),接口(2),端点(2),…,类,厂商等]联合描述表时,主机 USBD可以根据描述类型标识区分各种分描述表。下面是固件程序的主循环部分:#include//指向外部 D12访问地址#define D12_COMMAND(*(unsigned char xdata *)0xff01)#define D12_DATA (*(unsigned char xdata *)0x7f02)extern void D12_int();sbit D12_suspend=P1^0;sbit D12_int_n=P1^1;sbit D12_eot_n=P1^2;sbit D12_DMAck_n=P1^3;sbit D12_DMAreq=P1^4;
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- PDIUSBD12常见问题解答资料下载 11次下载
- USB接口器件PDIUSBD12芯片的应用设计 13次下载
- USB接口的特点和PDIUSBD12芯片的的接口应用设计 5次下载
- PDIUSBD12芯片的USB通信模块原理设计 13次下载
- PDIUSBD12在DMA模式下的应用 20次下载
- PDIUSBD12固件编程指南 0次下载
- 基于PDIUSBD12芯片的USB通信模块原理设计 25次下载
- 基于PDIUSBD12的USB接口固件程序设计 39次下载
- PDIUSBD12在USB接口设计中的应用 0次下载
- PDIUSBD12英文数据手册 10次下载
- PDIUSBD12 USB interface device 54次下载
- PDIUSBD12,pdf datasheet (USB i 166次下载
- 基于DSP的PDIUSBD12芯片的应用开发 46次下载
- 基于PDIUSBD12的USB数据采集系统的设计 48次下载
- PDIUSBD12中文资料/数据手册 794次下载
- 浅谈项目中的程序设计思路与步骤 523次阅读
- 解析PLC梯形图程序设计 948次阅读
- PDIUSBD12芯片的性能特点及实现应用设计 3816次阅读
- 如何利用逻辑设计法进行PLC的程序设计 3399次阅读
- 采用PDIUSBD12芯片和ADuC812芯片实现串行总线接口设计 1384次阅读
- 16条PLC程序设计相关规范和12点编程建议的资料概述 3712次阅读
- USB接口为i.MX6处理器下载固件无法启动的解决方法 1276次阅读
- 浅谈基于引言DSP平台的USB接口设计 1192次阅读
- 介绍MATLAB程序设计中M程序及使用方法 6499次阅读
- usb保护电路图大全(USB控制器/转换器AD558/比较器) 2w次阅读
- usb接口电路图大全(DS2490S/PDIUSBD12) 3.8w次阅读
- USB固件程序开发的实现 8050次阅读
- USB初始化程序 3706次阅读
- 单片机与程序设计(下) 2723次阅读
- USB读数装置及上位机的设计 2192次阅读
下载排行
本周
- 1电子电路原理第七版PDF电子教材免费下载
- 0.00 MB | 1491次下载 | 免费
- 2单片机典型实例介绍
- 18.19 MB | 95次下载 | 1 积分
- 3S7-200PLC编程实例详细资料
- 1.17 MB | 27次下载 | 1 积分
- 4笔记本电脑主板的元件识别和讲解说明
- 4.28 MB | 18次下载 | 4 积分
- 5开关电源原理及各功能电路详解
- 0.38 MB | 11次下载 | 免费
- 6100W短波放大电路图
- 0.05 MB | 4次下载 | 3 积分
- 7基于单片机和 SG3525的程控开关电源设计
- 0.23 MB | 4次下载 | 免费
- 8基于AT89C2051/4051单片机编程器的实验
- 0.11 MB | 4次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 2PADS 9.0 2009最新版 -下载
- 0.00 MB | 66304次下载 | 免费
- 3protel99下载protel99软件下载(中文版)
- 0.00 MB | 51209次下载 | 免费
- 4LabView 8.0 专业版下载 (3CD完整版)
- 0.00 MB | 51043次下载 | 免费
- 5555集成电路应用800例(新编版)
- 0.00 MB | 33562次下载 | 免费
- 6接口电路图大全
- 未知 | 30320次下载 | 免费
- 7Multisim 10下载Multisim 10 中文版
- 0.00 MB | 28588次下载 | 免费
- 8开关电源设计实例指南
- 未知 | 21539次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935053次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537793次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191183次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183277次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138039次下载 | 免费
评论
查看更多