USB单片机范文
USB单片机范文(精选7篇)
USB单片机 第1篇
伴随硬件技术的飞速发展,计算机的外围设备越来越多,如鼠标、键盘、扫描仪、数码相机、MP3播放器等相继出现,这么多的设备,如何实现与计算机的连接并进行信息交互,USB总线协议的诞生给出了一个简单、便捷、高效的解决方式。基于此,本文设计了一种基于CH375芯片的USB数据通信电路系统,可实现计算机与单片机的USB数据通信,适用于数据采集、工业数据监控等领域。
1 USB总线协议介绍
USB是通用串行总线(Universal Serial Bus)的英文缩写,1994年由英特尔、康柏、微软、IBM等多家公司联合提出。通过使用Hub扩展,可用于连接多达127个USB外设,成功地取代了串口和并口。USB协议规范经历了最初的1.1版本,2.0版本和最新的3.0版本,最高传输带宽由最初的12 Mbps提高至480Mbps,最终提升到了最新3.0版本的5.0Gbps。可以预见,在USB设备普遍采用3.0版本通信协议后,未来实现大容量的数据传输将是一件轻而易举的事。
1.1 USB电气特性
USB的电气特性很简单,物理接口包括4根线,分别为电源线(+5V供电)、数据线+(D+)、数据线-(D-)、地线(GND),其中D+和D-是一对差模数据信号线[1]。
1.2 端点、管道和枚举
端点、管道和枚举是USB协议中最重要的概念,对USB通信程序的设计具有重要的指导作用,下面分别加以阐述。
1.2.1 端点
所有的USB设备对于主机(如个人计算机或者单片机)来说都是端点的集合,主机只可以通过端点与USB设备进行数据通信,实现信息交互,比如将主机上的MP3歌曲拷贝至U盘。端点实际上就是具有一定大小的数据缓冲区,在设备出厂时已经被定义。每个端点具有唯一的地址,由设备地址和端点号共同决定。端点具有一定的特性和含义,包括传输方式(控制传输、同步传输、中断传输、批量传输)、传输带宽、端点号、最大数据包容量等。除端点0之外,其他端点都必须在设备配置好之后才能生效。端点0用于初始化设备,称为控制端点,可以双向传输数据,只要设备连接至USB接口并且上电,端点0就可以被访问。其他端点(如端点1、端点2等)作为主机与USB设备通信的数据缓冲区,只能单方向传输数据,称为数据端点。
1.2.2 管道
管道是USB设备端点和上位机软件之间的联系渠道,体现了主机缓存和端点间传输数据的能力。一旦设备被配置,管道也就随之产生。管道通信格式分为流管和消息两种。流管道中的数据不具有USB定义的格式,而消息管道中的数据必须符合USB协议所定义的结构规范。
1.2.3 枚举
USB设备通常可以实现即插即用,但在能正常使用之前,必须对设备进行配置。当设备连接至系统时,主机将对设备做一系列操作,完成对设备的配置,这一过程就是枚举。枚举过程具体如下所述:(1)主机设置USB设备地址;(2)主机读取设备描述符,包含设备的全部信息(如固件版本、制造厂商等);(3)获取配置描述符,决定设备的使用方式;(4)获取字符串描述符。
2 硬件设计
2.1 系统硬件框图
系统硬件框图如图1所示,主要包括一个AT89C52单片机和CH375芯片,计算机或USB设备(如优盘等)通过CH375芯片实现和单片机的USB数据通信。
AT89C52是ATMEL公司生产的基于CMOS工艺和8051内核的8位单片机,具有低成本、低功耗、高性能的特点,片内拥有8k字节可反复擦写只读程序存储器ROM和256字节的随机数据存储器RAM,兼容标准MCS-51指令系统。封装形式有PDIP、PQFP/TQFP及PLCC三种。
CH375是一种专用的USB通用串行总线接口芯片,支持USBHOST主机工作方式和USB DEVICE/SLAVE设备工作方式。CH375拥有8位数据总线[D7~D0]和读引脚[RW]、写引脚[WR]、片选[CS]控制线、中断输出[INT]及地址输入引脚A0,可方便地实现和单片机系统总线的无缝挂接。CH375工作在USB主机方式下时,支持常见的全速USB设备,单片机可通过CH375按照相应的USB协议与USB设备通讯[2]。
2.2 单片机与CH375的接口电路设计
本文设计的接口电路原理图如图2所示。由于本文侧重研究USB通信接口的设计,故该图主要给出了CH375管脚与单片机相应管脚的连接方式,单片机其余管脚的处理不在文中赘述。
CH375可以工作在并口传输和串口传输两种方式下,并口传输速率相比串口要高出许多,所以通常将CH375设计成并口传输模式,图2将CH375的TXD接地,即是为了实现并口传输。CH375的WR#和RD#分别连至单片机的写选通(/WR)和读选通(/RD)信号输出端。CS#是片选信号线,低电平有效,单片机有多个外围器件时,作设备选择信号输出用。本文使用3线-8线译码器74LS138来产生片选信号,图2给出了具体的线路接法,片选地址范围为0xB000H-0xBFFFH。INT#引脚输出中断请求信号,低电平有效,连至单片机的INT0端(外部中断输入端口0),这样单片机便可以采用中断或者查询方式得到CH375发送的中断请求信号,做中断程序处理。ACT#是设备状态输出端,在内置固件的USB设备方式下是设备配置完成状态输出引脚;在USB主机方式下是设备连接状态输出引脚。两种方式下ACT#均输出低电平,因此电路正常工作时,发光二极管L1将被点亮,作为电路工作正常的指示灯。A0是外部地址输入端口,接至单片机的P2.0。当A0为高电平时可以写命令,当A0为低电平时可以读写数据。
CH375内部集成了上电复位电路,将RSTI接正电源,系统上电时,即可实现CH375自行复位。CH375可以使用5V或者3.3V直流电压供电,图2使用了5V电源,当系统通过USB口与计算机连接时,计算机可将5V直流电通过USB连接线供给系统,如此可省去外部电源。根据CH375芯片手册规定,设计时,电路V3引脚与地之间串接0.01uF的高频陶瓷去耦电容C4。普通电容C5和电解电容C6用于外部电源端口VCC去耦。电阻R2的作用是系统断电后,释放储存在电容C6中的电能,以确保再次上电时CH375能可靠复位。12MHz的晶振Q1和高频陶瓷电容C1、C2构成了CH375的时钟振荡电路。
在绘制PCB印刷电路板图时,应注意以下方面:电容C4和C5应尽量靠近V3和电源端VCC,保证电源去耦的效果。晶振Q1及电容C1、C2应尽量靠近XI和XO端口,同时在元件周围敷铜,避免由于导线过长引入电磁干扰,从而获取较为精准的时钟振荡频率。USB数据信号线D+和D-应平行布线,并在信号线两侧敷铜,以减少外界干扰。
3 软件设计
USB通信接口的软件设计实际上就是USB接口固件程序设计,主要分为两大部分:下位机(即单片机系统)软件设计和上位机(通常指计算机)软件设计。
3.1 下位机软件设计
USB协议比较复杂,因此基于USB接口芯片的固件程序设计也较为复杂。CH375在出厂时已经内置了USB的底层通信协议,即内置了USB通信固件,这使得开发者可以抛开繁杂的USB协议,而专注于通信数据收发的程序实现工作。当然,开发者也可以通过程序自行实现USB的底层通信协议,方式灵活,但是开发难度会相应增大。本文重点阐述内置USB通信固件模式下的程序实现方法。
在内置固件模式下,CH375会自动处理端点0(默认端点)的所有事物,单片机只需要实现USB端口的数据收发工作。为了使得开发更加简便,CH375提供了一系列的接口命令和操作码,如“RE-SET_ALL”是指执行硬件复位,相应的操作码为05H,程序代码为#define CMD_RESET_ALL 05H;“UNLOCK_USB”是指释放当前的USB缓冲区,相应的操作码为23H,程序代码为#define CMD_UN-LOCK_USB 23H。
单片机可以对CH375写入命令码和数据,通过A0引脚所加电平的高低加以区别。由于本系统的单片机与CH375为8位并口连接,因此所有操作都由命令码、输入/输出数据构成[3]。CH375的命令操作过程如下所述:
(1)当A0为高电平时,单片机向USB命令端口写入命令码;
(2)当A0变为低电平并且该命令具有数据输入时,单片机以1个字节为单位向CH375数据缓冲区写入数据;
(3)当A0变为低电平并且该命令具有数据输出时,单片机以1个字节为单位从CH375数据缓冲区读出数据;
(4)当该命令完成以后,程序暂停或者跳转至第一步继续执行后一个命令操作。
CH375内置中断处理机制,当接收完数据或者发送完数据后,便以中断方式通知单片机进入中断,执行相应的程序。图3是单片机通过CH375读取数据的程序流程图,发送数据的过程与此类似,本文不再赘述。
以下给出了关于数据传输的部分典型Keil C51源程序:
3.2 上位机软件设计
上位机软件设计包括计算机端的CH375驱动程序和操作系统应用程序设计两部分。CH375以3个驱动程序文件的形式向开发者提供了计算机端的应用程序接口,这3个文件分别为:CH375WDM.INF,CH375DLL.DLL和CH375WDM.SYS。初次插入CH375设备时,计算机PnP(即插即用)管理器能自动侦测发现新硬件并分配相应的I/O资源,这时驱动程序还未安装到系统注册表中,所以系统会提示安装驱动程序CH375WDM.SYS。应用层接口由CH375动态链接库文件CH375DLL.DLL提供面向功能应用的API,API功能包括:数据传输、中断处理和设备管理,例如:
HANDLE WINAPI CH375OpenDevice(ULONGiIndex)//打开CH375设备;
BOOL WINAPI CH375GetConfigDescr{ULONGiIndex,PVOID oBuffer,PULONG ioLength}//获取USB设备描述符。
使用动态链接库提供的API子函数编写计算机端操作系统下的应用程序,程序编写可以选择面向对象的可视化语言Visual C++或者Visual Basic。CH375在单片机与计算机应用层之间提供了端对端连接,通信方式一般有两种:请求加应答方式和单向数据流方式。本文以请求加应答通信方式为例加以说明,这种方式使用主动请求和被动应答的查询方式进行通信,可实现数据的自动同步,可控性较好,且程序设计简单。以下给出其程序流程,如图4所示:
4 结束语
本文研究了利用单片机和CH375构建USB数据通信接口的软硬件设计问题,设计了应用CH375芯片实现计算机和单片机互相收发数据的硬件电路,并对USB协议及单片机端和计算机端程序设计做了阐述,为将来在数据通信领域的研究打下了基础。
摘要:论述了基于单片机(型号为AT89C52)的USB总线数据通信接口软硬件设计方法,给出了电路原理图、程序代码实例及单片机端收发数据的步骤和程序流程图,并介绍了USB总线通信协议的相关知识。
关键词:单片机,USB,通信接口,数据收发
参考文献
[1]张萌,和湘,姜斌.单片机应用系统开发综合实例[M].北京:清华大学出版社,2007.
[2]南京沁恒电子有限公司.CH375中文手册(一)[EB/OL].[2003]http://wch.cn/.
USB单片机 第2篇
【摘要】键盘鼠标是计算机必不可少的输入设备,目前USB接口的键盘鼠标已普遍应用,但是仍有一部分PS2接口的设备仍在使用,尤其是在军用加固设备领域,可长距离传输的优势使得PS2设备广泛应用于加固计算机、服务器等设备。本设计基于F340单片机,开发出一款集键盘鼠标于一体的一款USB/PS2自适应键鼠。
【关键词】键鼠;USB/PS2;自适应;F340
Based on F340 microcontroller Design of USB/PS2 self-adapted Keyboard&Mouse
Qimeng Yuan Jiuming Zhang Le Zhai
Abstract:Its absolutely necessary devices of keyboard and mouse for computers. Keyboard and mouse with PS2 interface still in use, while devices with USB interface are universally used at present, especially in military reinforce devices. The superiority of far transmission of PS2 devices signal compared with USB devices, resulting in the wide use of the PS2 devices in reinforce computer and servers equipment. This design developing a device integrated of keyboard and mouse, witch based on F340 microcontroller can be self-adaptedof USB/PS2 signal.
Key words:mouse;USB/PS2;self-adapteF340
1.引言
当前,键盘鼠标的设计已很成熟,目前市面上有USB键盘、USB鼠标,PS2键盘、PS2鼠标,种类繁多,样式各异,有设计廉价的普通键盘鼠标,有人体力学的工程键盘鼠标。
在众多的键鼠产品中,虽然形式各异,但最终实现的都是单一的键盘功能或者鼠标功能。目前市面上缺乏功能更加完善的键鼠产品。除此之外,键鼠的接口形式因主机而异,有的是USB接口,有的是PS2接口,虽然目前带有PS2接口的主机日趋减少,但在加固装备领域,应用仍比较普遍。
因此我们需要一款既能支持USB,又能支持PS2接口的一体化键鼠设备。
2.硬件设计方案
图1为设计方案框图。F340 MCU作为主控单片机,PS2鼠标连
图1 系统框图
接到键鼠输出接口,作为PS2鼠标输出,同时PS2鼠标连接到MCU单片机,在USB模式下,单片机会读取PS2鼠标数据并转化为USB鼠标数据。矩阵键盘通过GPIO连接到F340单片机上,单片机通过GPIO扫描矩阵键盘获取键值,并输出PS2或USB键盘数据至输出接口。MCU程序通过JTAG接口烧写进入系统,键盘指示灯即capslock、numlock、scrollock按键指示灯通过F340单片机的GPIO来控制其亮灭。PS2电压与USB电压分开引到键盘控制器上,再通过MOS管连接到F340单片机的GPIO引脚。系统供电由PS2电压与USB电压经过一片集成负载开关生成系统5V供电电压,给系统供电。键鼠外部连线采用双接口模式,使用PS2或USB主机时,连接上相应的键鼠接口即可。
2.1USB/PS2自检测电路
USB/PS2自适应检测方式如图2所示,将USB与PS2电源引接至键盘控制板,通过图3电路将USB电压与PS2电压隔离开,两组电压经过FPF2147后生成电路板5V供电电压,而前端USB 5V电压与PS2 5V电压分别连接到2N7002栅极,当USB电压有电时,或则PS2电压有电时,将相应的MOS管打开,并将检测点电压拉低,单片机通过GPIO检测电平值,来判断连接的是USB信号,还是PS2信号,从而实现USB/PS2信号自检测。
图2 主机接入电压检测电路
图3 供电隔离电路
3.软件设计方案
本设计需要编写单片机控制程序,通过JTAG口刷录进人F340 MCU,系统上电后,单片机首先判断USB电压与PS2电压的状态,根据其检测到的电压状态,来确定主机端连接的信号形式,如果连接的为PS2接口,单片机通过GPIO扫描矩阵键盘,通过解析键盘矩阵,进行数据编码,输出PS2键盘信号,PS2鼠标信号由PS2鼠标直接输出到键鼠接口。如果单片机判断的为USB接口,单片机则进行GPIO扫描矩阵键盘,并进行USB编码,同时单片机接收PS2鼠标的数据,并进行USB编码,之后将键鼠数据通过USB接口输出。从而实现USB/PS2自适应一体化键鼠的设计。
4.软件关键技术
(1)单片机接收处理PS2鼠标数据
当键鼠设备连接USB设备时,鼠标数据通过单片机处理后发送给主机,单片机接收的鼠标数据为PS2格式,因此设计的重点为单片机对PS2数据的解析,将PS2数据准确无误的读入,并将PS2数据正确打包为USB格,发送给主机。
单片机接收PS2数据采用中断方式,根据PS2协,PS2鼠标CLK时钟线产生负跳变时,进入单片机中断,如果此时上一个PS2数据包刚好接收完整,则判断此刻DATA数据线是否为低电平,如果为低电平,则认为是PS2数据的起始位,之后每一个时钟负跳变记录一次DATA数据电平状态,通过移位操作存储在一个char型变量中,直到接收完PS2数据stop位,一个PS2数据包就被单片机读取完整。之后单片机将PS2数据转化为USB格式,发送至主机端。
(2)USB 驱动设计
USB固件主要包括通用的枚举配置部分和类协议部分。图4为描述符树状图,枚举配置实现USB主机对设备的枚举和配,使主机确认设备的功能并提供资源;类协议部分主要实现USB设备各自数据传输的功能,包括鼠标的HID报告描述符合键盘HID报告描述符,规定了主机和USB设备数据的传输格式。USB枚举过程结束后,F340将PS2鼠标数据和扫描的键值组合成HID描述符要求的格式,通过相应的USB端点传送给主机,并接受主机的命令。
图4 描述符树状图
5.结束语
此设计将键鼠融为一体,并且可自适应USB/PS2接口,作为键鼠一体化设备节省了占用空间,增加了键鼠设备的适用性,可广泛应用于各类计算机。
参考文献
[1]薛圆圆,赵建领.USB应用开发宝典.北京:人民邮电出版社,2011.
[2]张弘.USB接口设计.西安:西安电子科技大学出版社,2002.
USB单片机 第3篇
该信号源产生信号灵活、功能扩展方便,且信号参数可调,实现了硬件电路的软件化设计,具有特殊的现实意义和广泛的应用前景。
1 系统总体设计
该系统以FPGA XC2S100-208为核心,采用模块化设计,主要由数据输出(上位机软件)、数据传输接口(USB单片机)、数据缓冲与存储(FIFO和SRAM)、控制部分(FPGA)和数据转换及调理(DAC、跟随器)五大模块组成,其原理框图如图1所示。
具体工作过程为:以FPGA和高速的D/A转换器AD768为核心, PC机发送数据至USB单片机端点FIFO,当数据达到512K时,数据自动打包后送入外部缓冲FIFO。FIFO是一种先进先出的数据缓存器,与普通存储器相比它没有外部读写地址线,是靠空/满标志的产生来控制数据的写入与读出[2]。在FPGA控制模块中,当FPGA接收到FIFO的非空信号后,就会发出控制命令将波形数据存储到存储器(SRAM)中,然后由FPGA控制将波形数据从SRAM中取出后送D/A进行转换,经数模转换和信号调理后即得所需波形。
通过上述以FPGA为控制核心,凭借FPGA高密度、高速度和现场可编程的优势,再配合相应的外围电路,最终完成波形发生系统,以用于产生各种频率的正弦波、方波和三角波。其生成的波形同一般的信号源生成的波形相比,具有波形平滑、无毛刺、稳定度高及分辨率高等众多优点;同时其硬件电路简单,易于扩展,改变存储器波形数据即可改变输出波形,具有极大的灵活性。
2 硬件模块实现
2.1 数据缓冲电路设计
FIFO是单片机与FPGA之间数据传输的咽喉,因此FPGA与FIFO连接电路的设计显得尤为重要。该系统采用FIFO IDT7206作为数据缓冲器,该芯片具有163849的存储结构(9位输入数据位D0~D8和9位输出数据位Q0~Q8),并具有控制端、标志端、扩展端和内部RAM阵列,内部读、写指针在先进先出的基础上可进行数据的自动写入和读出,+5V电源供电[3]。FIFO存储器就像数据管道一样,数据从管道的一头流入、从另一头流出,先进入的数据先流出。FIFO具有两套数据线而无地址线,可在其一端进行写操作而在另一端进行读操作,数据在其中顺序移动,从而达到很高的传输速度和效率,且由于省去了地址线,有利于PCB板布线。上位机发出控制信号后,原始波形数据由上位机经USB单片机的GPIF接口送入IDT7206,等待FPGA检查FIFO的状态信号。当FPGA检测到FIFO的空信号为高时,开始读取数据,按照先入先出原则,从FIFO的输出端口将波形数据读出。
2.2 数据存储电路设计
该系统采用HITACHI公司生产的628512存储器芯片,用来存储波形数据。该芯片结构简单,便于操作,+5V电源供电,有8条数据输入/输出线,19条地址端和3条控制线(片选和读写),存储容量为512K。
2.3 D/A转换电路设计
数模转换器的功能就是把数字量转换成模拟量,通常这种转换是线性的。设数模转换器输入的数字量为n位二进制码D=D1D2Dn,D1为最高位(Most Significant Bit,简称MSB),Dn为最低位(Least Significant Bit,简称LSB),则输出模拟量A与输入数字量D之间的函数关系可以用下式来表示[4,5]:
undefined
式中K为模拟参考量,当模拟参考量为电压时,K=UR/2n;当模拟参考量是电流时,K=IR/2n。其中UR为参考电压,IR为参考电流。Di为数字量D的第i位代码,其值为0或者1,由数字对应位的逻辑电平来决定。2n-i为第i位的权。输出模拟量是由一系列二进制分量叠加而成的,每一个二进制分量为该位的权与模拟参考量K的积。因此,数模转换器的基本工作原理是基于权的控制,即权电压或权电流相加。
系统采用高精度数模转换器AD768,它具有16位的分辨率,理论精度为1/216=0.002%,转化速率高达30MS/s。它有16位数据总线DB0~DB15,与FPGA相连,有两个互补的电流输出端IOUTA和IOUTB,它们具有相同的动态性能,可以配置成单端或差分两种工作模式。图2为AD768应用电路图,IOUTA和IOUTB为两端电流输出,通过负载电阻R5转换成两端电压输出,同时通过第1个差分放大器AD824将差分信号转换成单端电压,这时候输出电压幅值为-2.5~+2.5V,然后经过第2个运算差分放大器AD811缓冲放大两倍以后,输出电压范围在-5~+5V。
2.4 多路输出电路设计
模拟电子开关ADG508,具有8路输出通道,通过选择EN使能端的高低以及控制端A0~A2的二进制编码来确定所选择输出的通道。多路输出电路如图3所示。
3 系统软件设计
系统软件部分主要有上位机程序和FPGA控制程序。
3.1 上位机程序设计
该设计采用VB6.0进行上位机软件设计。VB6.0全称为Visual Basic 6.0,是微软公司推出的可视化编程工具MSDN之一,是目前世界上使用最广泛的程序开发工具[6]。
上位机的功能是提供人机交互的界面、产生控制信号和波形数据,并将这些数据通过USB单片机发送给FPGA。如图4为上位机软件界面,当点击复位命令时,命令字“F2”通过USB单片机cy7c68013的PE口发送给FPGA,FPGA接收到“F2”命令后进行相应的各个模块的复位操作;当点击确认设置命令后,命令字“F5”通过USB单片机PE口发送给FPGA,FPGA接收到“F5”命令后,控制波形数据从外部FIFO中读出并存储到SRAM中;当点击启动信号源命令时,命令字“F1”通过USB单片机PE口发送给FPGA,FPGA接收到“F1”命令后,控制从SRAM中读取数据送到AD768进行D/A转换。
3.2 FPGA程序设计
FPGA程序用VHDL硬件描述语言编写,开发环境为ISE7.1,FPGA程序有以下几个模块:
a. 工作模式选择。当上位机通过PE口发送命令字“F2”时为全局复位命令,发送“F1”时为将波形数据写入SRAM,发送“F0”时为从SRAM取出数据送D/A进行数模转换。
b. 复位模块。系统在上电后或者接收到上位机软件发送的复位命令后,会执行复位操作(低电平有效),复位的时间为1.638 4ms。
c. fifohandle控制模块。当FPGA检测到IDT7206非空信号“EF”为高时,控制IDT7206读出数据放到数据总线上。
d. MEM模块。控制将总线上数据写入SRAM,并从SRAM读出数据送到D/A转换器AD768进行数模转换。
4 实验结果
图5为上位机软件设定界面,通过在上位机中设定各参数,可实现相应技术指标的波形信号的产生。
第1路设定:三角波、频率1Hz、幅值3V、偏置0.5V;第2路设定:矩形波、2Hz、2V、1V;第3路设定:正弦波、1Hz、4V、0.5V;第4路设定:矩形波、8Hz、1V、1.5V。4路波形如图6所示。
从图6中可以看出,得到的波形与上位机设定波形基本相符,符合该设计要求。
5 结束语
笔者对基于USB单片机和FPGA设计的信号源进行了详细的阐述,完成了4路信号源的软硬件设计,输出的信号具有精度高、可靠性高和抗干扰能力强的优点。该系统已成功应用于航天某飞行器地面设备中,并取得了很好的效果。
摘要:提出了基于USB单片机和FPGA的信号源设计方案,完成了该信号源在FPGA内部的逻辑设计,并通过USB单片机,实现了计算机和FPGA之间的通信。实验结果表明:该信号源具有精度高、稳定性好的优点,有较高的推广使用价值。
关键词:信号源,FPGA,AD768,USB单片机
参考文献
[1]易春莉,张彦军,王瑾琪等.USB2.0接口传输的FP-GA控制与实现[J].化工自动化及仪表,2011,38(6):733~735.
[2]李林,王心刚.FPGA与单片机在RLC测量系统设计中的应用[J].化工自动化及仪表,2011,38(3):301~303.
[3]王庆.存储器IC的应用技巧[M].北京:科学出版社,2006:1~56.
[4]陈军.高精度实用数模转换电路设计[J].科技咨询导报,2007,(11):1~2.
[5]王艳茹,蒋鹏,岳文彤等.基于Hilbert-Huang变换的玻璃纤维自增强塑料声发射信号分析[J].化工机械,2009,36(5):498~501,506.
USB单片机 第4篇
关键词:ECP,模式,ECR,寄存器,前向传输,后向传输
1 引言
并行数据传输接口 (简称为并行口或并口) 主要是指八位数据并行传输的接口类型, 配合必要的握手信号以实现数据的快速、可靠传输的目的。早期的P C机并口多采用SPP模式, 现在的PC机并口可以选择SPP、EPP和ECP模式进行数据传输。S P P是半双工单向数据传输, 传输速率较低;E P P增强型模式采用半双工双向数据传输, 传输速度高达2MB/S, 大大提高了并行口的实用性;E C P扩充型模式采用全双工双向数据传输, 传输速率比EPP高, 因此ECP模式为并行口提供了另一种高效的数据传输途径, 实现了真正意义上的双向传输。另外, E C P传输可以在一个I S A总线周期内完成、可以使用R L E数据压缩方法、可以使用DMA方式等优点, 因此对于更高速的传输来说, 可以更快速地传输更大的数据块, 且具有较好的灵活性。
2 ECP模式的协议
2.1 ECP信号定义
E C P协议是一种可以真正实现双向数据传输的协议, 并且与标准并行口协议兼容。E C P传输可以通过标准并行端口IEEE 1284-A接口实现。设计人员通过灵活地使用这些信号, 可以满足各种不同的要求。表1给出了ECP协议中各引脚的信号定义与描述。
Host Clk为低电平表示主机有有效数据, 该信号的上升沿用于将数据移入设备;D a t a 0-D a t a 7是双向数据总线;Periph Clk为低电平表示在设备端有有效数据, 该信号的上升沿用于将数据移入主机;设备设置Periph Req为低电平表示可以使用后向传输模式;n Reverse Req为低电平表示数据处于后向传输;后向传输时, Periph Ack为高电平表示数据周期而低电平表示命令周期;前向传输时, Host Ack为高电平表示数据周期而低电平表示命令周期;IEEE 1284Active为高电平表示主机处于1284传输模式, 低电平则终止该模式。
2.2 EC P模式下的主要寄存器
根据ECP的引脚信号定义, 就可以通过这些引脚来传输相关的握手信号, 利用这些信号信息来配置ECP模式下的重要寄存器。在ECP模式下, CPU主要使用5个寄存器。并口的基地址BASE通常是378H或278H。这5个寄存器的定义及功能参见表2。
在ECP接口的寄存器中, 有一个重要的寄存器E C R---扩展控制寄存器。E C R负责保存ECP的各种重要的配置信息。这个寄存器需要在软件设计中重点配置。 (表3) 给出了ECR各个位的功能及描述。
另外, 还有一个需要指出的是控制寄存器PCON, 它包括了上位机的Host Clk、H o s t A c k、n R e v e r s e R e q u e s t、I E E E1284Active信号和中断及传输方向的控制。
2.3 EC P模式的传输控制时序
E C P模式的传输时序是软件设计的重要依据。E C P模式提供了两种传输周期时序:数据周期 (data cycle) 和命令周期 (command cycle) 。这两种周期可用于两个传输方向:前向数据/命令传输和后向数据/命令传输。
E C P模式定义前向传输为主机到外设, 当Host Ack为高, 表示进行data周期;当Host Ack为低, 表示进行command周期。下图1描述了一个前向传输过程中的data周期和command周期的时序。
一个完整的ECP模式的前向数据/命令传输的过程如下: (1) 模式协商阶段。主机首先把ECP的一个扩展请求值放到数据总线上, 然后将IEEE 1284 Active置高、Host Ack置低, 对ECP模式进行查询。1284兼容的外设接着将Periph Clk置低作为应答, 并将n P e r i p h R e q u e s t、X f l a g、n Ack Reverse置为高。如果外设支持模式建立, 主机置H o s t C l k为低, 然后置Host Clk和Host Ack为高, 表示已经确认了一个兼容于ECP模式的外设。接着, 外设为了作为回应, 置n A c k R e v e r s e、Periph Ack为低, 置Xflag、Periph Clk为高, 结束模式建立, 接口进入ECP配置阶段。 (2) E C P模式配置阶段。主机置Host Ack为低, 外设置n Ack Reverse为高, 以响应主机。然后进入前向等待阶段, 准备进行数据传输。 (3) 前向等待阶段。外设置Periph Ack为低, 主机检测到此信号后可开始传输数据。 (4) 前向数据/命令传输阶段。主机向ECP数据FIFO或ECP地址FIFO中写入一个字节。在进行数据传输时, 主机将Host Ack置高, 置Host Clk为低, 表示数据有效。外设通过置P e r i p h A c k为高来应答主机。主机置H o s t C l k为高, 外设接收数据并置Periph Ack为低, 完成这次传输。Host Ack为低, 所以下一个周期为command cycle。不断重复上述步骤可以完成多字节数据的前向传输。
E C P模式定义后向传输为从外设传输到主机, 当Periph Ack为高, 表示进行data周期;当P e r i p h A c k为低, 表示进行command周期。下图2描述了后向传输过程中的command周期和data周期的时序。
因为在ECP模式协商和ECP模式配置成功后, 接口默认是在前向传输下, 所以外设要使用后向传输时, 必须要经过ECP前向传输到后向传输的转换步骤。过程如下:主机置八位数据总线为高阻状态, 并设置Host Ack为低, 在等待最小建立时间后, 置n Reverse Request为低。外设置n Ack Reverse为低, 应答主机, 进入后向等待阶段。接下来的ECP后向等待阶段和后向数据/命令传输阶段与前向传输中的这两个阶段相似。
3 USB转ECP模式并口电路
单片机STC11F32XE具有1280字节的R A M, 可以作为传输过程中的数据缓存, 可以很好地解决上位机速度较快而下位机 (单片机) 速度较慢的而带来的问题, 也可以将其作为E C P模式下常用的一些寄存器来使用, 另外, 此单片机的速度快且抗干扰性强, 端口驱动能力强, 完全可以满足该系统的要求。
并行口采用的是IEEE 1284-A接口, USB接口驱动芯片采用Philips半导体公司的PDIUSBD12, 该芯片的数据端口D0-D7接单片机的P0口, 引脚WR_N、RD_N、及A0分别接单片机的P3.6、P3.7、P3.5引脚。整个硬件电路图如图3所示。
4 软件设计
E C P模式下的软件设计主要是通过引脚信号相关的握手线来控制传输信息, 通过这些握手信号信息来配置E C R、P C O N和P S T A T寄存器, 并利用八位数据线来传输数据与地址。E C P的数据传输中需要使用F I F O寄存器, 这里的FIFO是单片机内部R A M存储空间, 把这这部分空间划分为两个FIFO, 一个用于前向ECP写入数据空间, 另一个用于后向ECP读取数据空间。当进行前向E C P写数据时, 首先将写FIFO空间复位, 随后将数据成批写入写FIFO中, 然后给目标ECP设备一个中断信号, 通知它读数据;当进行后向ECP读数据时, 首先将读FIFO空间复位, 随之将数据成批写入读FIFO中, 然后给PC或其他U S B设备一个中断信号, 通知它读数据, 这样就完成了数据的双向通信。对于前向传输, 该系统必须要清楚知道F I F O寄存器中是否有足够的空间容纳待发送的字节;对于后向传输来说, 系统要检测是否有等待读取的字节。这就要求系统必须利用某种方式检测FIFO的状态。一般可以通过轮询、中断或DMA方式来检测FIFO的状态。图4和图5分别给出了上位机前向数据传输和后向数据传输的流程图。
5 结语
本文对U S B到E C P接口的转换电路进行了研究与实现, 电路实现上并不复杂, 但从实现E C P模式的通信角度来看, 对协议的充分认识与把握上有一定难度。由于并口E C P通信协议的复杂性也导致了许多设备并没有充分利用并口的这一功能。当然随着USB不断广泛地应用, 并口的使用将越来越少, 但对并口的研究仍具有一定意义, 本文研究并口的意义不但在于为系统提供对已有设备的支持, 更在于对并行接口及协议的理解上。
参考文献
[1]Jan Axelson著, 精英科技译, 并行端口大全.北京:中国电力出版社, 2001.
[2]圣怡, 戴一帆, 王宪平等著.Win-dows环境下软硬件接口技术.长沙:国防科技大学出版社, 2001.
[3]彭昕昀.ECP模式下并口在数据采集中的应用[J].韶关学院学报 (自然科学版) .2004, 24 (3) :52-56.
[4]宋大雷, 张东来.[EEEl284标准简介[J].电子计算机与外部设备, 2000, 24 (1) :21-24.
USB单片机 第5篇
1. 串行通信的概念
串行通信分为异步和同步两种方式。在单片机中使用的串行通信都是异步方式。而异步通信采用的是异步传送格式,其字符格式如图1所示。数据发送和接收均将起始位和停止位作为开始和结束的标志。在异步通信中,起始位占用l位 (低电平) ,用来表示字符开始。其后为7或8位的数据编码,第8位通常作为奇偶校验位。共有3种可能,即奇校验、偶校验和无校验,可根据需要选定。最后为停止位 (高电平) 用来表示字符传送结束。上述字符格式通常作为一个串行帧,若无奇偶校验位,即为常见的10位帧格式。
2. 串行通信的优点
与并行通信相比,串行通信有着明显的优势。
(1)串行通信只需要一条通信信道,电路简单,成本低廉,容易实现。而并行通信信道较多,电路复杂。
(2)虽然串行通信的信道只有一条,但是传输速率很快。由于并行通信的信道之间干扰较强,而且在产生数据错误后需要全部重发,而串行通信在数据出错的情况下只需重发出错位,因此串行通信的速度要快于并行通信。
(3)串行通信支持数据的异步传输。并行通信对数据传输设备和接受设备的同步性要求很高,不利于计算机同外围设备的通信,因此计算机同外围设备的通信基本采用串行传输。
因此,当今的计算机系统在与外围设备连接时,几乎全部采用串行通信协议。
现在的计算机提供了各种各样的串口,他们支持不同的通信协议,有着不同的功能。目前计算机提供的串口有RS-232, RJ45, USB2.0等。
3. PC机同单片机通信存在的问题
目前,51单片机同PC机的通信在大多数情况下仍然是使用RS-232 (DB-9) 串口作为通信接口实现的。而随着USB接口技术的成熟和使用的普及,由于USB接口大有着一系列RS-232 (DB-9) 串口无法比拟的优点,RS-232 (DB-9) 串口正在逐步的为USB接口所替代。而在现在的大多数笔记本电脑中,出于节省物理空间和用处不大等原因,RS-232 (DB-9) 串口已不再设置,这就约束了基于RS-232 (DB-9) 串口与PC机联络的单片机设备的使用范围。
4. USB接口同RS-232 (DB-9) 串口的比较
通过USB接口和RS-232 (DB-9) 的比较,不难发现:
(1) USB接口支持即插即用和热插拔,而RS-232 (DB-9) 串口不支持即插即用和热插拔,设备安装后需重启计算机方可使用。
(2) USB接口的传输速率较快,可达480Mbps (V2.0) ,而RS-232 (DB-9) 串口的最高速率仅为19200波特。
(3) USB接口占用体积较小,插拔方便;而RS-232 (DB-9) 串口的的插拔需要使用改锥,且在机箱后操作,比较麻烦。
综上可知,USB接口取代RS-232 (DB-9) 串口的趋势不可逆转。
(二)基于USB接口的51单片机和PC机通信模块的设计
1. 设计思路
使用USB-RS232转接芯片实现PC机同单片机物理层的连接,通过编写单片机指令实现数据帧格式的匹配。
2. USB转接芯片的选择
目前常用的USB转接芯片包括PL2303, CH341, CP2101, FT232等。在综合考虑了各方面因素后,CH341成为了本次电路设计的首选芯片。
CH341是南京沁恒电子公司生产的USB总线的转接芯片,通过USB总线提供异步串口,打印口,并口及常用的2线和4线等同步串行端口。其特点有:
(1)提供全速USB设备借口,兼容USB2.0,外围设备只需要晶体和电容;
(2)可通过外部的低成本串行EPROM定义厂商ID,产品ID,序列号等;
(3)成本低廉,可直接转换原串口外围设备;
(4)采用SOP-28封装,串口应用还提供小型的SSOP-20封装。
正是由于在PC机同单片机通信电路中,USB转接芯片CH341具有以上其他芯片无法比拟的优点,同时价格低廉并且提供中文技术支持,因此它成为了本电路USB转接芯片的最优选择。本电路采用的是SSOP-20封装的CH341T,其引脚图如图2所示。其中,芯片的驱动程序由南京沁恒电子公司提供。
3. 硬件电路设计
CH341T提供全速USB设备接口,兼容USB2.0,外围器件只需要电容和晶体,电路如图3所示。
其中,电源电压为5V, USB接口的差分数据线对与CH341T的UD-和UD+直接相连。CH341T提供TTL电平,同AT89C51可直接采用简单的3线连接(RXDTXD;TXDRXD;GNDGND)。在5V电源的情况下,V3口需要外接0.01uF的退耦电容。TEN#为串口发送数据使能端,低电平有效。CH341T必须使用12Mhz的晶振,否则无法正常工作。为保证单片机能够产生与计算机匹配的波特率,单片机采用11.0592Mhz的晶振。
4. 硬件驱动程序安装
通过登录南京沁恒电子公司网站http://www.winchiphead.com/download/index.htm可下载CH341T驱动程序CH341SER.EXE,在确认驱动程序和硬件电路无误后,打开驱动程序。弹出安装对话框后选择INSTALL,设备将自动安装驱动程序。安装完成后计算机将提示安装成功。
将硬件电路通过USB接口连接至计算机,计算机自动识别并弹出新硬件安装对话框,选择自动安装,驱动程序即可成功安装至计算机。在计算机设备管理器中,可显示刚刚安装成功的USB串口。如图4所示。
5. 单片机指令的编写
为实现单片机同PC机的简单通信功能,需要通过汇编指令使单片机完成一定的工作来验证USB接口通信的畅通。若要使单片机串口能够同PC机正常通信,单片机和USB接口需要使用相同的通信协议,在设备管理器中,可设置串口破特率为9600。而在单片机中,通过软件设置串口波特率为9600,工作方式为方式一,每接收一个8位数据,将数据保存并回送至计算机,以此来实现对USB通信畅通与否的测试。程序流程图如图5所示。
根据程序流程图,单片机的指令代码如下:
6. USB通信模块的调试
调试方法
串口调试工具(ComTools)是一款功能强大的串口调试免费软件。其主要功能如下:
(1)支持COM1COM8串口的数据发送和接收,可重复发送和接收数据;
(2)支持HEX格式数据和ASC格式数据的串口发送和接收;
(3)可自定义数据格式,校验位,可自定义数据传输速率;
(4)可自动记录发送和接收的数据并保存。
使用串口调试工具可以方便的通过计算机向USB串口通信模块发送数据并记录所接收的数据。因此,本次USB通信模块的调试使用该串口调试工具完成PC机同单片机的通信。
打开串口调试工具。首先选择串口设置,设置串口为设备管理器中对应的串口(COM4),设置波特率为9600,数据长度为8位,停止位为1位。在发送文本框中输入2字节16进制数据,点击发送向串口发送16进制8位数据。观察接收文本框,可以发现,计算机成功接收到单片机回送的8位数据。
在清空发送文本框后,经过多次的重复操作观察确认,每一次都能正确接收数据。为了进一步测验系统的稳定性,在拔掉USB通信模块后重新插入,计算机能够自动识别串口,重新打开串口调试工具后仍然能够正确的发送和接收。因此,该USB通信模块的数据准确性和系统的稳定性都得到了验证。
该USB通信模块具有以下特点:
(1)通过USB接口实现串口通信,能够在USB接口上完成以往需要使用RS-232 (DB9) 进行通信的计算机设备的通信;
(2)支持热插拔,驱动程序一次安装即可永久使用,不必在每次插拔后重启计算机;
(3)硬件电路简单,外围器件少,制作方便,成本低廉;
(4)可移植性强,支持绝大多数型号的单片机;可扩充性好,用户可根据需要扩充各种功能,可自定义厂商ID和产品序列号。
由此可见,我们的设计初步达到了目的。
(三)结束语
USB接口逐步取代RS-232 (DB-9) 串口已是大势所趋,单片机同计算机的USB通信在实际工作中的应用范围也将越来越广。本文所介绍的单片机和PC机的USB通信方法,电路简单,兼容性好,可移植性强,故可作为单片机同计算机的USB通信模块广泛应用于工业和电子产品的开发中。
摘要:针对基于RS-232 (DB-9) 串口的单片机同PC机通信中的一些问题, 文章介绍了一种简单可行的实现基于USB接口的单片机与PC机通信的方法, 提供了基于USB接口的单片机同PC机的通信模块, 编写了简单的串口测试程序, 验证了电路的可行性。
关键词:USB接口,单片机,PC机
参考文献
[1]卢超.单片机与PC机的通信设计[J].工矿自动化, 2007-5.
[2]南京沁恒电子公司.CH341芯片中文版说明书[EB/OL].http://www.Winchip head.com/download/index.htm.
[3]董建国, 戚云军, 何运兰.基于USB总线的PC机与单片机的通信[J].信息技术, 2003-11.
USB单片机 第6篇
关键词:鼠标USB,STC89C52 USB,接口芯片,主机,HID
引言
USB, 是英文Universal Serial BUS (通用串行总线) 的缩写, 而其中文简称为"通串线, 是一个外部总线标准, 用于规范电脑与外部设备的连接和通讯。是应用在PC领域的接口技术。USB接口支持设备的即插即用和热插拔功能。USB是在1994年底由英特尔、康柏、IBM、Microsoft等多家公司联合提出的。传统的PS/2接口的鼠标不支持热拔插, 实现更方便的USB接口的鼠标有必要性。本文介绍了一种基于USB接口的鼠标的设计方案。
1. 系统结构
系统由按键模块, 微控制器模块, USB接口芯片模块, 三大部分组成。从下位机到上位机, 依次经过按键扫描, 微控制器分析发送, USB接口芯片发送等几个处理过程, 实现USB接口的鼠标功能。系统硬件结构如图1所示。
2. 系统的硬件设计
2.1 微控制器芯片和USB接口芯片的选择
在USB鼠标的实现中, 采用STC公司的STC89C52芯片作为微控制器, USB接口芯片采用Philips半导体公司的一颗通用USB接口芯片PDIUS-BD12。STC89C52单片机包括8K字节程序存储空间, 512字节数据存储空间, 内带2K字节EEPROM存储空间。之所以选用该单片机是因为它功能强大, 有着易用的开发环境Keil C51并且国内有丰富的51资料。
PDIUSBD12芯片支持USB2.0的全速模式 (12Mb/s) , 具有软连接功能和数据流指示灯;它使用8位并行的数据口与MCU连接, 数字引脚兼容5V逻辑电平;内置3.3V稳压器, 可直接使用5V电源供电, 也可以使用3.3V电源供电。除了端点0, 它还有两个额外的端点, 每个端点都具有输出端点和输入端点, 可以完美的作为USB鼠标的接口芯片。
2.2 系统硬件电路的连接
按键模块通过导线连接至微控制器的P1口, 用来查询按键情况。微控制器的P0口连接USB接口芯片的数据引脚口D0至D7, 实现数据的在微控制器和USB接口芯片间的交换。微控制器的P3.3脚接USB接口芯片的A0脚, 实现对数据或地址写入。USB接口芯片的INT_N脚, 与微控制器的P3.2脚相接, 实现对中断事件的捕捉。USB接口芯片的差分数据线D+, D-通过标准的USB A型插头与主机即PC机相连, 实现数据在主机和USB接口芯片间的传递。硬件原理图 (部分) 如图2所示
3. 系统的软件设计
3.1 USB底层数据包收发的实现
根据PDIUSBD12的读写时序, 编写PDIUSBD12的写命令函数D12WriteCommand () , 读数据函数D12ReadByte () , 写数据函数D12WriteByte () 。再由这些函数底层函数构造功能更加具体的函数, 例如读端点缓冲函数D12ReadEndpointBuffer () , 写端点缓冲函数D12WriteEndpointBuffer () , 上位机即PC与下位机即微控制器间的数据通讯就是通过这些具体的函数实现的。
3.2 USB鼠标设备枚举过程的实现
设备枚举传递的数据是通过端点0传递的, 因此需要在端点0输出中断处理函数中, 完成设备枚举。微处理器通过读端点缓冲函数D12ReadEndpointBuffer () 读取主机发过来的数据, 然后对数据进行多层散转处理, 针对主机发来的不同类型的数据, 做出相应的回应处理, 完成USB鼠标设备的枚举过程。
3.3 报告的发送
USB HID (人机接口设备) 设备是通过报告 (report) 来传送数据的, 报告有输入报告和输出报告。输入报告是USB设备发送给主机的, 输出报告是主机发送给USB设备的。在设备枚举完成之后, USB设备便可以和主机进行通信, 鼠标的操作引发相应的报告发送给主机, 主机分析不同的报告, 实现相应的鼠标操作。报告的发送通过Sendreport () 函数完成。Sendreport函数通过对不同的按键信息的判断, 发送不同的报告。
这样就从软件层面上实现了USB鼠标设备, 软件流程图如图3所示。
结语
本文介绍了以STC89C52微控制器为核心, PDIUSBD12为USB接口芯片的USB鼠标的设计, 使鼠标操作准确高效, 同时和其他的USB设备一样, 支持热拔插, 非常方便用户使用。
参考文献
[1]Compaq, Intel, Microsoft, NEC.Universal Serial Bus Specification[M].[S.L.].1998.
[2]PHILIPS.PDIUSBD12 USB interface device with parallel bus[M].[S.L.].1999
USB单片机 第7篇
关键词:C8051F340单片机,通用串行总线规范2.0版,USB总线,固件,设备驱动程序,客户应用程序
1 背景介绍
传统的数据采集设备与主机的通讯口一般采用RS232、RS422或RS485等标准,当今的设备通讯口大多采用USB标准[1]。作为一种新型的串口通信标准,基于USB接口的产品具有较高的传输速率,可扩展性好,采用总线供电,支持热插拔和即插即用等。特别是近几年来,USB大有完全取代上述标准的趋势。
其共有4种传输模式:控制传输、同步传输、中断传输、批量传输,以适应不同设备的需要。本系统采用中断传输模式。中断传输(interrupt transfer)用于必须在指定时间内传输完的数据上,支持高速/中速/低速的设备,能应用在一般数据的传输上。Windows包含启动设备中断传输的驱动程序,只要设备符合HID(human interface device,人机接口设备)规范,应用程序就可以执行设备的中断传输。需要特别注意的是,中断传输与其他USB传输一样,只发生在主机轮询设备的时候,并不是由设备触发的硬件中断。
随着USB技术的快速发展以及USB外设广泛的应用,支持USB接口技术的芯片也越来越多,而在外部设备设计选型时选用带有USB控制器的MCU,当然是设计开发人员的首选,因为这样不仅可以大大简化硬件电路、减小外设体积,而且还可以提高产品的可靠性[2]。
C8051F340就是顺应这种需求而推出的一种新型USB控制器芯片,其主要特点及优点为:
(1)高速、流水线结构的8051兼容的微控制器内核(可达48 Mb/s)。
(2)全速、非侵入式的在系统调试接口(片内)。
(3)真正10 bit 200 kb/s的单端/差分ADC,带模拟多路器。
(4)片内电压基准和温度传感器。
(5)片内电压比较器(2个)。
(6)精确校准的12 MHz内部振荡器和4倍时钟乘法器。
(7)多达64 KB的片内FLASH存储器。
(8)多达4 352 B片内RAM(256+4 KB)。
(9)USB功能控制器,符合USB规范2.0版,集成时钟恢复电路,无需外部晶体;支持8个端点;1 KB USB缓存;集成收发器,无需外部电阻。
C8051F340的这些特点,使其在设备设计开发中具有极强的竞争力,特别是在USB通讯设计中。本文采用C8051F340设备作为数据采集系统的下位机,上位机使用Delphi7.0编写客户应用程序,使用Silicon公司配套提供的USBXpress[3]设备驱动文件,达到了很好的设计效果。整体上讲,USBXpress是一个库函数,上下位机的程序都是用库的形式来实现[4]。
2 硬件设计
因为C8051F340在USB接口上特有的优势和特点,硬件接口设计变得非常简单,不需要再添加额外的电子元器件,就能实现USB的数据传输与控制。图1是C8051F340的USB硬件接口连接图。通过标准的Mini B型5pin USB接口,实现下位机和上位机硬件连接,完成系统通讯中硬件通路。
3 软件设计
设计中采用USB中断模式。
系统软件设计使用Cygnal/Silicon Laboratories公司的USBXpress软件开发包。该开发包针对C8051F340等器件的USB接口编程设计,提供了完整的上位机与下位机软件解决方案。不需要过多熟悉USB协议和设备驱动的知识,只需掌握客户端和设备端的应用程序接口(Application Program Interface,API),编程就能实现USB通讯控制功能。图2是USBXpress数据流程。USBXpress软件开发包中,固件库文件选则USBX_F34X.LIB,头文件选择USB_API.h;上位机中动态链接库文件(dll)调用Si USBXp.dll;驱动程序使用Si US-BXp.sys,INF驱动安装文件Si USBXp.inf。
设计可分成两大部分:固件设计(下位机软件设计);客户应用程序(上位机软件设计)。下面依次进行设计说明。
3.1 下位机软件设计
选择Keil u Vision3(版本V3.30a)来开发固件,因为C8051F340支持系统调试(ISP),极大地简化了调试与开发流程。
在程序中调用头文件USB_API.h和库文件USBX_F34X.LIB,设备接口函数可满足API应用要求。所用到设备接口函数主要有:
USB_Clock_Start()/*初始化USB时钟*/
USB_Init()/*使能USB接口*/
Block_Write()/*通过USB向主机写入数据*/
Block_Read()/*通过USB从主机读取数据*/
Get_Interrupt_Source()/*得到引发API中断的类型*/
USB_Int_Enable()/*API中断使能*/
USB_Int_Disable()/*API中断禁止*/
USB_Disable()/*USB中断禁止*/
USB_Suspend()/*USB中断暂停*/
USB_Get_Library_Version()/*返回USBXpress固件库版本*/
API工作在中断驱动模式下,所以在下位机中一定要指明所用USB API中断的向量入口地址0x008B(中断17),需要注意的是:在F340中,USB的硬件中断的向量入口地址是0x0043(中断8),USB API中断17是一个虚拟中断,由US-BXpress固件库产生,特定的事件引发。事件的类型由Get_Interrupt_Source()函数得到。
USB API中断函数调用形式如下:
主程序工作流程如下:
3.2 上位机软件设计
上位机软件在Delphi7.0环境下开发,通过主机(上位机)的API函数调用动态链接库文件Si USBXp.dll,启用应用程序与设备驱动程序之间的通信,从而实现上位机与下位机之间的数据通讯[5,6]。
用到的主机API函数主要有:
SI_Get Num Devices()/*返回主机所连接USB设备的个数*/
SI_Get Product String()/*返回所连接USB设备的描述符*/
SI_Open()/*打开USB设备*/
SI_Close()/*关闭USB设备*/
SI_Read()/*读设备*/
SI_Write()/*写设备*/
动态链接库有两种加载方式:静态加载和动态加载。它们有所不同:静态速度快些,动态资源占用更少,甚至有时当动态链接库不在的时候也可以运行程序。建议更多地使用动态加载,程序的可执行性更好。
应用程序工作流程示意图见图3。
具体的API调用过程这里不再赘述。
最终的应用程序界面见图4。
4 结束语
随着USB技术的快速发展以及USB外设在越来越多的场合广泛应用,很多设备和计算机已经不再把RS232等串行接口作为基本配置,有的甚至只有USB接口,所以,熟悉和掌握USB通讯方法已成为单片机工程师必备的一项技能,希望本文能为学习者提供一些借鉴和参考。
参考文献
[1]萧世文,宋延清.USB2.0硬件设计[M].2版.北京:清华大学出版社,2007.
[2]陈连坤.嵌入式系统的设计与开发[M].北京:清华大学出版社,北京交通大学出版社,2005.
[3]Silicon Lab oratories.USBXpress Programmer's Guide[EB/OL].(2007-10-19)[2008-11-4].http://www.xhl.com.cn/AN169_USB-Xpress_Programmers_Guide.pdf
[4]靳超伟,陈连坤.基于USB总线的多路电话录音系统[J].单片机与嵌入式系统应用,2006(11):59-61.
[5]董良,高磊.深入浅出Delphi6[M].北京:清华大学出版社,2002.
USB单片机范文
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。