第 21卷第 11期
2004年 11月
计算机应用与软件
Computer Applications and Software
Vo1.21,No.11
Nov.2O04
基于 USB接口的步进电机驱动卡设计
杨伟宏 张 伟 王 斧
(军械q-程学院光学教研室 石家庄 050003)
摘 要 本文提出一种基于USB接 口的步进电机驱动控制设计,利用 CYPR_FSS公司的USB微处理器 CW7C68013的 GPW和固件
下载等特性,在 CY3681开发系统调试和研制。介绍系统的USB设备驱动程序、客户程序和固件的设计。
关键词 通用串行总线(USB) GPIF 步进电机 固件
DESIGN FOR O0M PIJrIER O0NIROL STEP】PID G M.oT0RS B ED ON USB
Yang Weihong Zhang Wei Wang Fu
( 蜥 and Research Sea/on of ,Ordnance西 崛 ,Sh/./~ 050003)
Allaa'm't q]ais article introduces the design of stepping motot~control based on USB.CW 7C68013 and CY3681 8l℃used.which 8l℃made by the
Cypress for the development,and GPⅡ’and download firmware are mainly used.Software,device driver and firmware眦 introduced.
Keywords USB GPIF Stepping motor Firmware
1 引 言 制方便等优点。
近年来,随着步进电机及其驱动性能的逐步提高,它在自动
化领域的应用也愈来愈广泛。步进电机区别于其它控制用途电
机的特点是它接受数字控制信号,适合计算机驱动控制。USB
总线安装方便、高带宽、易扩展、低干扰,有效解决了传统设计中
的受计算机插槽数量、地址空间和中断资源的限制,安装麻烦、
易受机箱内环境的干扰等缺陷。本设计利用 Cypress公司的
USB微处理器的 CW7C68013的GPIF和固件下载,设计了步进电
机的驱动卡。
2 系统概述
Cypress公司 的 CW7C68013 Ll J,也叫 I~-USBFX2,它支持
USB2.0同时向下兼容 USB1.1,既负责 USB事务处理也兼具微处
i 理器的控制功能,可用作 USB外部设备
L 口_J1_竺 L竺__j的主控芯片。该芯片把 USB收发器
、串行
图1控制功能原理 接1:3引擎 SIE、增强的 8051内核、 C总
示意图 线接口以及通用可编程接 口GPIF集成
于一体。其时钟频率可为 12 MHZ、24 MHZ或48 MHZ,同时该芯
片还带有两个通用异步收发器(uART)、三个定时/计数器和两
个数据指针,并可支持外部中断;可通过 USB下载程序,也可从
外部扩展的 EEPROM中下载程序;具有 8bit或 16bit外部数据接
口;带有集成 FIFO,能运行于 MASTER或 SLAVE模式,并易与
ASIC、DSP接口。可以不带任何固件作为 I~-USB列举,再实现
应用固件第二次列举。
CW7C68013负责USB事务处理同时作微处理器的单片机使
用。控制功能原理示意图如图 1,本文的步进电机驱动电路由
I297和 1298组成(图2)。其中各模块按 USB
协议
离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载
L3 传送数据
或控制信号。驱动电路实现信号的隔离、功率放大和步进电机
的过电流保护等功能。软件和硬件结合控制,具有电路简单、控
图2 控制驱动电路原理图
开发系统 CY3681是 Cypress公司专门为 I~-USB开发设计
的。应用的主要软件包括:USB控制面板,Keil公司t~Vision2 C51
编译器 及范例程序等。
USB控制面板的主要功能为:1)取得描述符;2)下载软件;
3)对屏幕或文件实现批量传输或 同步传输;4)重复测试。
t~Vision软件对 C51语言编制的固件程序调试、仿真运行等。
3 系统软件设计
系统软件框图如图 3所示,具备以下功能t1)实现数据的对
话及处理转换;2)数据传输;3)运行进程等显示。
USB通信使用分层驱动模型,至上而下为t(步进电机控制)
应用程序、USB设备驱动程序、USB驱动程序、固件;每层处理一
部分通信过程,这样可以使不同的设备在一些任务上使用相同
的驱动,每个程序和驱动使用自己的语言与操作系统通信。
1)应用程序调用WIN32 API函数利用 CreateF ()取得驱动
卡指针,DevieelOControl()与设备驱动传输通信。利用VC++,开
发 Windows环境下的控制应用程序。
收稿 日期 :2003—08—29。杨伟宏,硕士生 ,主研领域 :军用光学装备
技术保障研究。
维普资讯 http://www.cqvip.com
124 计算机应用与软件 2004血
步进电机的运行参数(转动方向、转
动速度和转动量等),通过VC++控制界
面对话框输入并转化为控制参数;应用程
序下载相应的运行固体、控制各固件运行
时间,实现控制外围设备
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
。
其中应用程序部分对话框函数代码
如下:
voidCStepMotorView;:OnStepMotor()
{∥。|chan data thr0u CcDCtr~or
CStepMotor dig;
dig.m
—
nBw:m
—
nBw;
dlg.Ill
—
nFw=In
—
nFw;
int nRet=dlg.DoModal();
if(nRet==IDOK)
j
In
—
nBw:dlg.In
—
nBw;
Yn
—
nFw=dlg.Yn
—
nFw;
}
ControlStepMotor();ff Control Steping Motor
ComrolTime(m—nBw,m—nFw);
ffexchangeto Control runningtime
}
void C.StepMotorView::ContmlStepMotor(){
if(m—nBw>0){
m
—
s~Ffle=“..\\Control\、CtStepMotor 1.hex”;
LoadFim~'are(m—strFile1);//Load aim firmware
Run Time(m—nBw);⋯
if(m—nFw>0){
m
—
strFile=“..\\Control\\CtStepMotor2.hex”;
Lo.dFirmwam(m—strFile1);//Load aimfirmware
RunTime(m—nFw);⋯}
⋯ }..·
应用程序主线程初始化部分如下:
麓 兰
图3 系统软件
框架图
BOOL CALLBACK bMalnDIgPwc(LPVOID
p3hread,HWND hDlg,UINT message,WPARAM
wParam,LPARAM 1 ∞m)
{
#ifiadefUSING
—
MFC
HWND feedbackbox :NULL;
Char pcDriverName[MAX—DRIVER—NAME]= ;
feedimkbox= GetDlghem(hDlg,
IDC
一
0uIPⅥ ’
一 BOX);//Get a h~rld]e
GetDlgltemText(hDlg,IDC—DRIVER—NAME,
pcDriverName,MAX
—
DRIVER
— NAME);
#else
arhreadInf0 pTh=(CnIreadInfo*)pIhread;
char pcDfivexName=(Le~TR)(I PI印SrR)
pTh一 >stTpo DriverName;
TRACE("TPM:SMMain::ExecIOCTL:OpType
=%d\ntt,wP㈣ );//SM=Stepping Motor
岱 feedbackbox pYn -)strloctlOut;⋯
2)USB设备驱动程序、USB驱动程序是保证应用程序访问
硬件设备的软件组件,使得应用程序不必知道物理连接、信号与
一 个设备通信需要的协议等的细节。
驱动程序控制一个给定的 USB功能设备。连接到 USB设
备的每一种类型的功能单元都必须有客户驱动程序。驱动程序
把 USB设备看作是一个可以被访问端点的集合。USB驱动程序
(USBD)知道设备的需求(通过设备描述符获知),也知道 USB的
能力。USBD把 IRP划分成USB和设备需要大小的块。USBD确
保每一个设备能分配到它所要求的资源应持 USB设备配置。
在配置的过程中,它为检测到的端点建立通信管道。Windows定
义了一套驱动可以使用的 IRP。在一系列的通信中,最终直接
驱动硬件。
基于 USB的步进电机的驱动控制设计要求:主机传送设置
与控制信号给步进电机控制驱动电路,并返回所需参数给主机;
EZ-USB通用驱动程序(EZ-USB GPD)已满足本设计 GPIF编程要
求,本设计并未采用常规的HID类设计。
利用 EZ-USB GPD,可以取得 ezusb-n设备(n=0、1、⋯)的句
柄:
DeviceHandle:CreateFile(
//“emsb-n”
GENERIC
—
WR1TE,FILE
—
SHARE
—
WRITE。
NULL,OPEN
一 ~~ISTLNG。0。mn~L);
EZ-USB GPD I/O控制代码及相关传输结构由 Anchor Chips
提供,已包括在 EZUSBSYS.H和 WDM DDK的 USB100.H内。De.
viceloControl结构如下:
BOOL DeviceloControl(
HANDLE hDevice,//h/t/idle to device of interest
DWORD dwloControlCode,//control code of
qoerafionLPVOID lplnBuffer,ffinput bl~erpointer
DWORD rdnBufferSize,//sizeofinput buffer
LPVOID lpOutBuffer,//output data pointer DWORD
nOutBufferSize.//sizeof outputhl
LPDWORD lpBytesRetumed,//receive output
pointer
LPOVERLAPPEDlpO~ //overlapped
pointer);
3)固体(Firmware)存储在微处理器内,包含设备各种描述
信息和相应的芯片应用程序;负责(1)配置端点;(2)响应主机控
制传输;(3)监控 GPIF;(4)执行应用程序,如:UARTS、定时/计数
器、外部中断、I/O传输等。
本文设计基于 USB接口的步进电机的驱动控制,由主机根
据功能要求下载相应的固件。固件通过 USB微处理器可编程
接口GPIF输出相应的控制信号,控制驱动步进电机,并反馈信
息给主机。
固件采用 E51语言编制,C51语言特别适合编写 51系列微
处理器的应用程序,其简洁、效率高、易调试。在进行 Vision2
中调试、仿真运行时,可以从主机 COM2下载到 EZ-USB FX2的
RAM内执行单步、断点等调试运行。调试通过后,运行可从主
机下载到 EZ-USB FX2的8K RAM内;也可以经过开发系统刻录
在 EEPROM内,设置由EEPROM实现第二次列举。
其中源程序“fx2.h”,“fx2re.gs.h”,“fx2sdly.h~eaJsh.1ib”以及
GPWrOOL由CYPRt~ 公司提供,应用于 CY7~ 13的 GPIF等
固件开发。固件描述表 Dsca.aS1满足 EZ-USB Fx2的
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
要求
即可 。
根据步进电机所需的驱动信号,设计产生相应控制信号的
固件。在固件 Peripheral—SingleByteWrite运行的指令周期基础
上,设计可调的步进脉冲;不同的功能选择由 Peripheral—SetAd.
维普资讯 http://www.cqvip.com
第 11期 杨伟宏等:基于USB接口的步进电机驱动卡设计 l25
dress()函数中的不同参数实现。
应用固件的主体部分如下:
#include"fx2.h
#include' fx2regs.h”
接include'Ifx2sdly h ff SYNCDELAYm
void m~in(void)
{int i=0;
:
Oth~lmt();
Gcf~t();∥imfi~izafion
:
Peripheral
— SetA (Oxox);//~lect motor
ff and~lect Fun way forward OT backward
:
while(1){∥for pulse
for(i=0;i<=Lti,i++){
Peripheral
— SingleByteWrite(OxOF);}
for(i=0;i<=Lti,i++){
Peripheral
— SingleByteWrite(Ox08);}
}..、};
//usingtimerinterrupt};⋯⋯}
4 结束语
该方法已对 42BYG型步进电机实现基于USB接口的驱动
控制:电机转动方向、转动速度和转动量等在额定范围内可调,
在应用程序对话框内设置所需的运行参数,主机 自动转化为相
应的控制信号,并经过 USB接口的驱动卡实现驱动控制。驱动
控制由软件和硬件联合控制,电路结构简单、控制方便;扩展性
好,稍作修改,即可实现对多台不同类型的电机控制或应用于其
它类设备的智能控制。
参 考 文 献
[1]San Joe,EZ-USB FX2 Technical Reference Manua1.http://www.cypress.
C0rn .
[2]EZ-USB General Pl Driver Specification.http://www.cypress.㈣ .
[3]USB lmplementers Forum.http:/www.USB.org.
[4]Getting Started with/~Vision2 and the C51 Mierecontroller Developm~t
Tools。http://www.cypress.c0rn.
[5]谭建成,电机控制专用集成电路,北京:机械工业出版社,1997.8.
(上接第53页)
ConnectionⅢ =DfiverManag~.getConnection( jdbc:oracle:oci8:
abc/xyz@ );
∥将指定文件的XML数据插入到指定的数据表中
OracleXMLSave save=n OracleXML Save(corm,",abName);
URL url=Bare.createURL(fileName);
int rowe r=88.re.imeaX~ (ur1);
∥关闭JDBC连接
corm.close();
}
}
4 Java Servlet实现基于 XML的异构数据交
换
在 ]nternet环境下实现异构数据的交换,必须提供一个独立
于特定数据库管理系统,并提供统一编程界面的中间件。无论
是内部的还是外界的数据交互请求均以XML形式递交给中间
件,由中间件实现与具体数据库的交互,对数据库操作的结果仍
然通过 XML的形式反馈给请求者。
我们用Java Servlet来实现基于 XML的异构数据库通信的
中间件,其结构如图1所示。
图1 Servlet实现基于 X^ⅡJ的异构数据库通信
此方案中的 Servl~程序主要实现以下基本功能:
(1)与内部系统的接 口:一方面,从数据源(包括 RDBMS、
XML文档等)和请求参数中抽取所需数据,以供进一步处理;另
一 方面,根据处理结果更新数据源,或者将已经转换成内部专有
格式的数据传给内部应用程序做进一步处理。
(2)数据的加工处理和转换:依据业务规则,对所得数据进
行加工处理和转换,将与外部系统或内部系统交换的数据封装
成 XML数据。
(3)与外部系统的接口:将含有等待交换的XML格式数据
通过 Intemet发送到外部系统,并接收外部系统返回的XML数
据响应或请求。
当需要在一个以上的数据库之间进行通信时,利用 Servlet
与源数据库进行通信,把查询结果按一定规则写到 XML文件
中,再由 Servl~与目的数据库进行通信,把 XML文件中的内容
按预定的数据表的格式存人到目的数据库中。这样,就实现了
异构数据库之间的数据交换。
5 结束语
基于Ⅺ 的异构数据交换技术与传统方法相比,具有通用
性、扩展性、经济性等优点,同时,用 Java Servl~实现的异构数据
交换有效地降低异构数据交换的难度,提高信息集成的效率,与
协议和平台无关。本文所述异构数据交换技术已应用于某集团
企业网络分销系统,运行效果良好。
当前,许多行业正在制定标准,规范本行业数据交换 中
XML数据的文档类型定义或模式,以加强 XML与异构数据系统
的互操作性,这必将促进 XML在异构数据交换应用中的进一步
发展。
参 考 文 献
[1]宋善德、何栋、梅雪莲,“在J2既 体系结构上构建基于 X^ⅡJ的数据交
换系统[J]”,<小型微型计算机系统>,2003,24(4):778—780.
[2]邵敏、李力鸿、郑震坤等,XML编程实践[M],北京:清华大学出版社。
20()2.119—149.
[3]Brett McLaughlin.B~dlns a business-to-business application with XML.ht·
tp://www--4.ibm.eom/sfftware/developer/library/xrnl—b2b/index.html,
2OO2,5.
[4]孙君明、郭红,“基于XML的异构信息交换研究[J]”,<计算机应用研
究>,2003,20(1):70—72.
[5]叶华、张森,“一种异构数据库问的XML接IZl方案[J]”,<计算机应
用>,2OO2,21(6):15—17.
维普资讯 http://www.cqvip.com