接口和驱动器

2024-09-03

接口和驱动器(共7篇)

接口和驱动器 篇1

一、8051族单片机C语言编译器Keil-C51

1. 简介

德国keil-sofeware公司的Keil-C51是专为8051族单片机设计的高效率C语言编译器,它生成的程序代码运行速度极高,所需存储器空间极小。Keil-C51完全支持C8051F32X单片机的C语言编译。

Keil-C51完全集成在一个功能强大的集成开发环境uVsion3中,简称uV3。其中包括:项目(project)管理器、C51编译器、A51宏汇编器、BL51/LX51连接定位器、simulator软件模拟调试器,以及8051族单片机硬件目标在线仿真、下载调试器。上述功能都可在uv3的集成开发环境中极为简捷地进行操作。其硬件调试器可在线实现对单片机的(包括对C语言源程序)调试、修改和观察的命令。

在uv3中,可以进行两种类型的代码调试。一种是带调试信息的源程序代码调试,此调试允许在调试中显示高级语言源程序语句,并可对源程序语句进行单步、断点等方式的调试,而且高级语言源程序的每个语句都可显示出对应的汇编语句段。另一种是十六进制(hex)代码调试,此时只能显示汇编语言指令。

用户在完成项目编译、连接之后,通过debug菜单进入程序调试状态。若用户使用硬件在线仿真调试器,则需安装C8051F单片机的uv3驱动软件(连接编程仿真调试器,要注意驱动软件的版本)。安装好驱动软件,硬件连接上USB口的编程仿真调试器并在debug窗口上激活后,才能实现硬件在线仿真、调试和将代码下载到单片机等各种功能。在调试状态下,还可以通过调试主窗口进行源程序的编辑和修改,但修改后源程序不能在debug窗口内进行编译、连接,要退出debug状态重新编译、连接,形成新的目标代码后再次装入,才能进行调试。

硬件在线下载、仿真调试器,具有以下功能:对高级语言源程序和汇编程序,能进行全速运行,单步执行和断点运行;有3种不同的断点调试方式;有下载代码到单片机flash程序区的命令;有上存代码到PC机,并存成文件的命令;有显示和修改各种存储器单元的命令;显示和修改各种寄存器的命令;在汇编语言状态下,可在线修改汇编语句;高级语言源程序的每个语句,都可显示出对应的汇编语句段。

2. 编程编译过程

在使用keil-C51对8051族单片机应用程序进行编程、编译时要注意,如果用的是C8051F32X单片机,需要使用V8.08以上的版本,因为低版本中找不到C8051F单片机的新芯片。

(1)使用keil-C51编译C8051F32X单片机应用程序的步骤如下:

(1) 在uv3集成开发环境软件中,创建一个新项目,并为该项目选定对应的单片机CPU器件(先选生产该单片机的公司名,后选单片机型号)。

(2) 用文件编辑器编写C语言的源程序文件(或汇编源文件),并将文件添加到项目中去。一个项目可包括多个文件,除源文件外,还可有库文件等。

(3) 通过uv3各种选项配置C51编译器、A51宏汇编器、BL51/LX51连接定位器,并选择debug的调试方式。

(4) 使用uv3的构造功能(build)对项目中的源程序文件进行编译、连接,生成绝对目标代码和可选择(要或不要)的hex代码。

(5) 将编译、连接好的绝对目标代码(也可是hex代码),装入uv3进行硬件(或模拟软件调试)在线调试。

调试成功后,用硬件下载仿真器将hex代码文件写到单片机的flash中去。

(2)图解一个实例的编译过程

C源文件名:usbad1.c, usb_api函数库文件:usbx_f320_1.lib,项目工程取名:usbad。

(1) 点击uv3图标:出现图1所示软件界面。

(2) 点击project框,选new;uvsion project,取项目文件名为Usbad,如图2所示。

(3) 进入target1--- (select device) 选单片机公司,选silicon laboraries,如图3所示。

(4) 选单片机型号:点单片机公司名称左边的小框的+,找到C8051F320,点击C8051f320并点击确认,如图4所示。

(5) 在target1大图内,点击output按钮,设置是否要hex代码文件。在图5左侧的两个框中画钩并点确认。

(6) 在target1大图中设置定位flash起始地址,点击bl51 locate框,设flash起始地址,如0100h,如图6所示。

(7) 点击target1长条框右边的按钮,进入选源程序、库文件界面。点击add file框,加入usbad1.c, usbx_f320_1.lib文件到软件中,然后点击确认,如图7所示。

(8) 此时,集成软件大图左下边3个按钮(即trget1长条框左面)中有2个按钮(即第2、第3个按钮)变亮,依次点击这两个按钮,且每次按对应的确认,编译完成并提示,生成usbad1.hex代码文件,在源文件所在处,生成绝对代码文件及配套各种文件。

需要说明的是,由于USB通信软件主要采用调用各种专用的USB——API函数来实现其功能,而这些API函数不被keil——uv3调试软件所定义,所以在keil——uv3的调试器上无法进行C语言源程序的调试。因此,这里不介绍使用keil——uv3调试器调试单片机程序的各项功能(有需求的用户可参考,keil——uv3调试器的中文手册)。

二、使用C8051F单片机程序下载器将代码写到单片机内

在生成usbad1.hex代码文件后,需要使用C8051F单片机程序下载器方能将代码写到C8051F单片机内。下面介绍具体操作。

(1) 选择、进入下载器软件:用鼠标左键点击flashutil.exe的图标,就可进入flash程序下载器的主界面(见图8)。

(2) 点击USB调试器选择左边的小圆框,激活后字体变亮。

(3) 选择C8051F单片机接口方式,点击选中右边(C2)的小圆框。

(4) 连接好PC和USB下载器连线,并将下载器的10芯扁平线插头插入C8051F32X单片机开发板的对应10芯插座内,然后接通开发板电源。

(5) 点击连接后,将显示单片机器件名称(C8051F32X),这时,下载器已进入下载工作状态。点击下载hex文件框,进入二级软件界面,如图9所示。

点击浏览框,可选到需要下载的hex代码文件,并在浏览条框下面的头2个功能小框(擦flash等)画钩。再点击(下载)框,即开始下载程序。几秒后,当下载框的字体被激活时,即表示下载完成了。

三、单片机USB通信驱动软件的安装和使用

1. 作用

(1) 提供PC与C8051F32X单片机USB通信所需要使用的PC端USB接口驱动软件。不安装此驱动软件,上位机的应用软件无法控制并实现PC端USB接口的通信工作。

(2) 提供C8051F32X单片机端的USB通信软件程序进行编译时所需的USB-API函数库文件。

(3) 提供PC端用于USB通信的应用软件程序及在进行编译时所需的siusbxp.lib的函数库文件。

2. 软件组成及安装

(1) 所有软件文件都存在于美国silicon公司的usbxpress (3.11) 压缩包内。

(2) 将压缩包解压缩后,生成usbxpress install软件图标、examples、usbxpress_api等3个软件文件子目录和图标。

(3) 在Driver子目录中,点击usb xpress install软件安装图标,安装PC端用于与单片机端USB通信的驱动软件。

安装完成后,在PC列表上可显示:Silicon laboratories usbxpressdevelop kit。

3. 使用

USB通信驱动软件安装完成后,如要实现和单片机端USB接口通信,还需连接下位带USB接口的单片机设备端(单片机端需已写入USB通信程序)进行USB硬件确认、握手……。如果驱动程序装好,下位机USB设备正常工作,会在PC上显示:usbxpress_driver寻找api新硬件……发现新硬件,并在随后显示:新硬件已安装,可以使用了。此时,驱动软件就安装好了。

在usbxpress_api子目录中,进入device,其中usbx_f320_1.lib文件就是用于C8051F32X单片机USB通信软件编译时所要调用的API函数库文件,Usb_api.h是它的头文件。

进入host, siusbxp.lib是上位机应用软件 (修改时) 编译所需调用的库文件,Siusbxp.h是它的头文件。

在example子目录中,打开filetransfer,

再进入host,出现图标flie transfer.exe,点击该图标后,出现PC端单片机USB通信应用软件界面,如图10所示。

当PC和下位机的C8051F32X单片机设备的USB连接好正常工作并握手时,select框内出现1234数字,即表示USB接口握手好,可以进行USB数据从单片机端 (从单片机片内的flash2000地址起) 上传到PC端通信的操作。点击brawse框,在长条框中输入所要存储的hex数据文件名,点击receive date,即可将存成hex码的数据文件上传到PC机。

如何通过驱动接口调节显示器 篇2

nvidia显卡驱动里, 有一个动态库-nvcpl.dll, 里面封装了大量API函数, 和操作命令。本例主要使用dtcfgex函数。因为没有头文件, 所以采用动态方法获取, 如下所示, 由于是简单演示, 因此忽略了排错代码:

现在开始步入正题。调节的项目包括亮度, 对比度, 数字振动这3项, 它们分别对应不同的命令格式, 为了调节后将来还能恢复原样, 首先必须获得它们现在的参数, 因为RGB 3个分量的数值相同, 所以取其中之一即可, 以对比度为例:

char cmd[80];

strcpy (cmd, “getcontrastvalue 0 red”) ;

_dtcfgex (cmd) ;

返回结果是字符串形式, 可根据需要转换成相应数值。这些数值和想象的有些区别, 并不都是大于0的。亮度值从-125到+125, 对比度值从-82到+82, 数字振动值在最新的275.33版里是从0到100, 而以前是0到63。

大家可以根据实际情况自行调整。

在设定了期望调节的数值后, 就可以用Windows中的rundll32.exe程序调用命令。大部分命令的形式相同, 以亮度为例, 设置值为100:

rundll32.exe nvcpl.dll dtcfg setbrightness 0 all 100

其实这些命令都可以通过WIN+R键运行, 在自己程序中调用时会有延迟, 若命令发射得过于频繁, 会造成系统假死现象, 解决的方法就是在单独的线程中处理它们, 等待每条命令执行完毕后, 再执行下一条。主要代码如下所示:

其中的关键部分就是MsgWaitForMultipleObjectsEx函数, 它在等待事件发生的同时, 还能转发系统消息, 因此不会占用过多CPU时间, 提高了程序的响应速度。现在程序的主要功能都已具备, 为了方便操作, 可以设定几个快捷键。这面临一个问题:如何在失去焦点时, 还能响应键盘消息。普通的做法是使用键盘钩子, 把键盘消息截获在自己的程序里, 但那样略显繁琐。这里使用简单的方法, 在线程里使用GetKeyState函数查询键盘状态, 作出相应处理, 示例如下:

最后说一下程序的发行问题。在没有开发环境的电脑上运行VS.NET的应用程序时, 需要安装相应的发行包。以VS.NET2010, 32位Windows为例, 首先安装VCRedist_x86.exe, 激活Microsoft.VC100.CRT.mainfest文件, 并在以下两个目录生成认证规则:%WINDOWS%WinSxS, %WINDOWS%WinSxSPolicies, 再复制MFC100.DLL, MSVCP100.DLL, MSVCR100.DLL等动态库到系统目录即可。发行包地址如下:

http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=A7B7A05E-6DE6-4D3A-A423-37BF0912DB84

接口和驱动器 篇3

随着工业自动化制造装备数字化和网络化的发展, 现场总线技术以其高度的开放互联性、简化的分布控制性和可靠的环境兼容性等技术优点, 得到了装备制造商的广泛接受。目前很多旧数控机床经常因为数控系统老化故障或者与新的控制系统的总线接口不兼容导致性能下降、生产效率降低。因此必须对机床进行数字化改造。然而机床的模拟伺服驱动装置、伺服电机和主轴电机以及机床的机械结构均性能良好。为了充分利用现有的设备资源, 节约改造的成本, 就必须设计一个现场总线信号与传统模拟信号的转换接口模块。

本设计结合旧数控铣床的实际改造项目, 开发了一种基于SERCOS总线的模拟驱动接口模块, 该模块可以接收力士乐数控系统Indra Motion MTX发出的SERCOS总线数字指令信号, 并转换成±10V的标准模拟量控制信号, 用来控制西门子611A模拟伺服驱动器, 该模块对SERCOS现场总线在工业现场的推广应用具有重要意义。

1 SERCOS总线简介

SERCOS (Serial Real-time Communication Specification) 总线常用于工业控制系统中连接上位控制单元和伺服驱动单元进行实时数据通信, 该总线协议详细的定义了物理层的拓扑结构、收发线路和NRZI编码格式以及数据链路层的数据帧结构等内容, 使用户能方便的操作控制系统、伺服驱动器和可编程控制器等自动化机械装备。因此在数控机床和各种数控机械设备中获得了广泛的应用。SERCOS总线的传输介质采用双向光纤, 通讯速率高, 实时性强, 因而特别适合于多轴同步运动控制。和其他总线相比, SERCOS总线具有以下优势:

1) 数据传输性能高, 其有效数据的传输效率可与100M以太网相媲美;

2) 采用光纤连接, 消除了电磁干扰, 传输距离远;

3) 具有很高的同步精度;

4) 可自行诊断故障信息, 方便用户安装和维修。

2 硬件设计

2.1 硬件系统总体设计

本文设计的模拟驱动接口模块采用SERCON816芯片作为SERCOS总线接口控制器, 实现SERCOS总线接口的物理层和数据链路层等底层通信协议。采用TLV5614芯片作为数模转换器, 实现数控系统控制指令到机床各轴伺服驱动装置模拟量控制信号的转换。采用TMS320F28335芯片作为微处理器, 对S E R C O N 8 1 6 芯片和TLV5614芯片进行数据读写和控制。硬件系统总体框图如图1所示。

2.2 SERCOS总线接口电路设计

S E R C O N 8 1 6 总线接口控制器是继SERCON410B之后的新一代SERCOS接口控制芯片, 由于采用了新的制造工艺, 其实时通信速率大幅提高至16Mbps。本文采用16位数据总线接口与TMS320F28335连接, 地址总线采用12位, 可寻址芯片内部2K×16位的双口RAM。同时将六路TXD信号并联, 以提供最大的输出功率适应各种材质、长度的光纤。

TMS320F28335接收来自SERCON816的中断信号, 并通过地址总线、译码控制电路和数据总线对其进行控制。由于SERC0N816电源电压为5V而TMS320F28335的总线电压为3.3V供电, 所以采用74LVC164245和74LV245芯片实现总线隔离、驱动和电平转换。本文将双口RAM映射到TMS320F28335存储空间的0x82000~0x82fff地址, 将128字的控制寄存器映射到TMS320F28335存储空间的0x83000~0x8307F地址。

2.3 D/A电路设计

由于原来的数控铣床需要控制X、Y、Z三个进给轴和一个主轴, 因此选用4通道的TLV5614芯片作为数模转换器。该芯片转换时间为3µs~9µs, 分辨率可达12位, 可通过标准的四线SPI串行接口与TMS320F28335通讯。芯片采用数字电源和模拟电源两组相互独立的电源供电, 输出为轨到轨输出的电压信号, 其输出电压幅值由公式 (1) 给出:

其中, VR E F是参考基准电压, C O D E是在0~4095范围内的12位DAC输入值。

本文采用参考基准电压2.5V、电源5V, 由公式1可得DAC的输出电压为0~5V。由于模拟伺服驱动装置的控制电压为-10V~+10V, 因此还要通过调理电路对输出电压进行偏置放大以达到输出双极性信号的要求。最终共输出4路模拟信号用于驱动X、Y、Z三个进给轴和一个主轴。

3 软件设计

3.1 总体框图

本文设计的模拟驱动接口模块软件部分主要包括:TMS320F28335初始化模块、SERCOS初始化模块、非周期性数据传输模块、周期性数据传输模块、DAC处理模块等。TMS320F28335初始化模块主要完成TMS320F28335芯片的系统配置以及外设、中断向量等的初始化设置;SERCOS初始化模块主要完成SERCON816芯片的内存初始设置和通讯初始化;非周期性数据传输模块主要是响应来自数控系统的数据读/写请求, 打开服务通道, 完成控制参数和过程命令的非周期性传输;周期性数据传输模块在定时中断中完成, 用于读取周期指令值和写入周期反馈值;DAC处理模块主要通过TMS320F28335与TLV5614的SPI通讯, 完成周期指令值的输出。主程序流程如图4所示。

3.2 SERCOS初始化模块

要建立数控系统和模拟驱动接口模块之间的通讯链路, 必须正确初始化S E R C O N 8 1 6 芯片。 主要包括控制寄存器初始化、 双口R A M初始化和通讯初始化。本接口模块中主要系统参数配置为:使用服务通道1、工作时钟频率 (16MHz) , 数据传输率 (2Mbps) , 阶段0~阶段2的通讯周期 (1000μs) , 阶段3~阶段4的通讯周期 (8000μs) 。在阶段0~阶段2, 输出信号CON_CLK在每个通讯周期开始后 (MST之后) 的200μs~490μs时间段内变为高电平;在阶段3~阶段4, 输出信号CON_CLK在每个通讯周期开始后 (MST之后) 的1000μs~2500μs时间段内变为高电平。SERCON816初始化程序的流程如图5所示。

3.3 DAC处理模块

TLV5614的通过编程16位的寄存器对芯片进行控制, 其中第15位和第14位用于选择DAC的4个通道, 第13位为转换模式位, 第12位为状态位, 第11位到第0位为12位的DAC输入值。对于每一次完整的DA数据传输, 首先将片选信号CS从高电平变为低电平, 然后将帧同步信号FS从高电平变为低电平开始传输数据, 接着串行时钟信号SCLK每产生一个下降沿就从数据输入信号DIN传输一位数据直至连续传输完16位数据, 最后将帧同步信号FS变为高电平, 芯片将16位数据锁存后进行DA转换并输出。其控制时序如图6所示。

4 结束语

应用本设计的模拟驱动接口模块和Indra Motion MTX数控系统对旧数控铣床改造后, 机床的各项性能指标均有大幅提升, 数字化功能更加完善, 可以方便地与工厂的网络管理系统进行互联, 实现了高质高效的生产加工。同时本文为模拟伺服驱动的老旧设备改造提供了一种新思路。如印刷纺织等行业中的无轴传动和多轴同步控制设备, 只需更换新的运动控制系统和模拟接口模块即可直接驱动原来的模拟伺服驱动器和设备机械, 因此具有非常高的应用推广价值。

摘要:SERCOS总线是一种广泛应用于数控机械装备的现场总线, 选用SERCON816总线接口控制器、TLV5614数模转换器及TMS320F28335控制器, 通过合理设计其接口电路并进行初始化设置和程序编写, 实现了SERCOS现场总线信号与传统模拟信号的高速转换并在旧铣床数控改造中成功应用。为相关行业模拟伺服驱动的老旧设备改造提供了一种新思路。

关键词:SERCOS总线,模拟驱动,机床改造

参考文献

[1]李敏, 沈晶巍, 刘通.ADI4在旧数控机床改造中的匹配功能应用[J].制造技术与机床, 2009 (12) :125-127.

[2]刘清.基于CAN总线的模拟量输出从站的设计[J].自动化仪表, 2004, 25 (7) :19-21.

[3]冯晓东, 汤同奎, 邵惠鹤.隔离多通道LONWORKS模拟量输出节点的设计[J].化工自动化及仪表, 2000, 27 (5) :30-32.

[4]郇极, 尹旭峰.数字伺服通讯协议SERCOS驱动程序设计及应用[M].北京:北京航空航天大学出版社, 2005.

[5]彭学文, 朱志红, 贾正春.伺服驱动单元SERCOS总线接口的设计与实现[J].自动化与仪表, 2001, 16 (5) :64-66.

[6]王水迎, 王建武.基于TMS320F2812的SERCOS总线从站接口卡的设计[J].制造业自动化, 2007, 29 (5) :94-96.

[7]张德红, 门延会, 毛羽.SIEMENS840D系统在GS30型数控机床改造中的应用[J].2011 (2) :56-58.

[8]权宁辉, 高军礼, 宋海涛.基于SERCOS总线的高速数字通信接口软件设计[J].机床与液压, 2011, 39 (11) :78-80.

[9]徐跃, 王太勇, 赵艳菊, 董靖川.基于总线和网络技术的开放式可监控数控系统[J].农业机械学报, 2008, 39 (10) :178-182.

USB设备接口驱动程序设计开发 篇4

1芯片概述

接口芯片与上位机通信并提供对外围CPU接口, 使得开发者无须去关心复杂的USB协议。 根据所设计产品的需求, 选择CYPRESS半导体公司的CY7C63001A USB控制器作为接口芯片。 CY7C63001A是符合低速USB低成本的一种解决方案, 它支持2个端点和1个设备地址。 CY7C63001A是一个高性能的8位RISC微控制器, 具有128字节的片内RAM, 4K字节的EPROM。 有12个通用I/O引脚[2]。

2硬件设计

该USB设备的硬件设计以CY7C63001A芯片为中心, 所连接的存储器是ATMEL公司的AT24C02, 接口兼容I2C总线规范, 通过一对串行时钟、 数据线对片内存储单元进行读写。 其电路原理图如图1所示。 按照USB规范的要求, 将微控制器第13引脚 (D-) 通过一个7.5K上拉电阻 连接到+5V的VBUS。 微控制器 第5引脚 ( P1.0) 连接24C02的第7脚 (WP, 写保护 ) , 控制24C02的写操作功能 。 WP为高电平读取24C02的内容; WP为低电平时可进行读、 写操作。 微控制器第1脚 (P0.0) 连接24C02的第6脚 (SCL, 串行时钟),为控制24C02的读写操 作提供时 钟 ; 微控制器 的第2脚 (P0.1) 接24C02的第5脚 (SDA, 串行数据 、 地址 ), 作为读写24C02的数据、 地址信号线。 微控制器通过这3根信号线完成对24C02的读写操作。

3编写驱动程序

系统内核与硬件之间设备通信要通过驱动程序, 它屏蔽了应用程序与硬件之间的细节。 Linux设备驱动分为3类: 字符设备、 网络设备与块设备。 USB设备一般都作为字符设备来进行处理, 这是是通过串行通信来读写数据, 在此所编写驱动即为字符设备驱动。 下面则结合该设备代码来介绍Linux下USB驱动的开发。

3.1注册与注销驱动

Linux下USB驱动程序在USB子系统里注册并提供一些信息。

这是USB驱动框架数据结构。 name是驱动程序模块的名字。 probe函数是在驱动向USB系统注册后当插入一个USB设备时将自动处理的函数。 disconnect函数在拔掉设备后自动运行。 fops是驱动提供的文件操作的接口结构, 通过这样注册一个file_operations函数指针, 使得可与用户空间实现方便的交互。

USB驱动程序初始化模块函数中通过调用usb_register进行注册, 传入刚才定义的驱动框架结构。

相应地在卸载模块函数中通过调用usb_unregister函数注销USB子系统。

在probe函数中, 驱动程序通常首先确认插入的设备是否可被接受, 即USB硬件的厂商号和设备号是否和驱动相匹配, 若相符则在devfs子系统中注册设备, 允许devfs用户通过fops定义的文件操作接口来访问该设备。

当拔掉USB设备时, 会调用disconnect函数, 驱动程序需要从devfs上注销。

3.2数据处理函数

当USB驱动与设备绑定好后, 任何用户 通过file_operations结构所定义的函数即可操作此设备 。

首先, open设备后即可对设备进行操作。 MODULE_INC_ USE_COUNT宏在open函数中起到计数的作用 , 计数器在用户态程序打开一个设备后就加1。 若以模块方式加入一个驱动且计数器不为零, 则说明该驱动属于使用状态, 是不可以通过rmmod命令卸载驱动模块的。

当open完设备完成后, read、 write函数就可以发送和接收数据了。

在usb_read函数中 , 我们采用 中断方式 传输 , 用FILL_INT_URB宏建立一个urb, 调用usb_submit_urb函数来提交urb。

由于设备没有中断OUT端点, 因此需要采用Set_Repor标准请求来从主机接收数据。 所以write函数没有用urb传送数据, 而是用usb_set_report函数代替, 这个函数可以发送数据给设备, 并且不需要创建urb和操作urb函数。

4结语

USB设备由于其低价和高性能 , 在近几年内得到迅速的普及。 采用CY7C63001A开发出的低速通信设备, 满足了价格和性能这两方面的要求。 已投放市场经过了实际的 检验 , 证实了该系统设计方案的可行性。

参考文献

[1]杨辉,等.数字化教学资源保护系统的设计[J].山东水利职业学院院刊,2006,(3).

[2]徐增祥.USB软件狗的设计及反破解技术[J].电子技术应用,2012,(8).

[3]罗予东.一种USB软件狗的设计及防解密研究[J].计算机时代,2009,(8).

接口和驱动器 篇5

关键词:GPIB,接口仪器,底层驱动

1 无线电监测中GPIB接口食品底层驱动的设计

1.1 概念

为实现无线电信号采样和分析, 系统既要实现监测仪表通讯, 还要完成采样的数据显示, 对数据滤波进行分析, 做好原始数据与处理后数据的数据库操作。为完成任务, 要了解计算机系统多线程的概念。线程要按程序的指令顺序执行工作, 而计算机系统的操作中, 程序是通话多线程同时的启动, 不同线程要独立完成执行的程序和指令。

对于应用程序的编程人员或者用户来说, 线程要同时运行, 而操作的系统要按照线程间切换控制实现同时运行的感觉。程序完成多个任务时, 不同线程要保证程序的用效, 简单开发的工作, 引进线程概述, 主线程完成专门消息的处理, 而程序可以命令其它事件。防止主线程在处理工作时, 阻碍其它程序消息处理工作。所以, 系统可以使用计算机编程我线程技术使系统实性的响应速度得到提高, 可以使资源得到更充分的利用。

1.2 无线电监测系统的双线程

多仪器的同步工作:软件在设计时要面临系统的多仪器工作对不同信号的采集工作, 处理外总线多样性, 还要尽可能的使软件代码性价比得到提高。如何使用最少代码, 完成最多外总线驱动编程工作, 实现不同仪器同步的工作, 这是系统在设计中必须要考虑到的问题。

双线程:以多线程的设计思想, 通过包装技巧完成系统结构的分层, 而不同外总线有不同传输率, 仪器灵敏度与数据速率不同, 要将外总线包装, 产生了通讯的接口类, 将类操作集中于同一线程内, 专门进行原始数据采样工作, 即底层驱动线程。显示出数据分析CPU可以以虚拟的仪器完成线程, 即用户界面的线程。结构上使用模块化设计的思想, 使系统实时速度得到提高, 而计算机消息环可以完成线程间信息交流。两条线程以并行的运行使软件系统实时响应的速度得到提高。

两条线程工作的机理:用户进行程序初始化时, 要创建两条线程, 都处在等待状态, 在程序的界面就要进行测量任务, 通过消息下发到下层取数的线程, 而任务号可以在消息的参数内完成传递。下层取消接到任务后, 可以将任务翻译成可理想的命令传递到接收机, 有针对性的进行测量参数的设置, 以命令进行仪器的启动, 使任务完成。仪器线程将数据状态寄存器进行有效的标识, 以外总线接口类进行测量数据的读取, 而底层线程要将读取数据进行解析, 放在内存区以消息形式对用户界面线程通知, 以共享内存实现测量结果的共享, 两条线程是分开处理的, 使系统实时响应的性能得到提高。

两条线程设计平台:底层以不同外总线完成封装, C语言也可以对底层驱动在软件系统中得到高效率的完成。C++语言可以使硬件控制更好实现, 上层的虚拟仪器线程会以Delphi来完成, 这种设计十分便利, 使开发效率得到提高。

2 GPIB接口仪器底层驱动的应用

应用该类的测控设计, 仪器控制工作不能过于复杂, 做好仪器服务请求的控制, 而且开发设计人员也要对服务请求的寄存器做好设置, 使仪器完成采样后, 可以通过GPIB的总线完成控制线程的请求。软件及时的响应请求, 很可能会发生仪器的堵塞。

完成外总线类设计之后, 要考虑好系统同一时间内, 不同仪器对无线电信号特征的测量工作, 对不同功能对应仪器, 要启动一定数量线程完成仪器的控制, 对程序流程控制上很简单, 不过这种设计对系统可扩充性有着障碍。新加仪器要对程序进行大的改动, 并不适合程序代码的重复使用。

用动态链接库完成封装驱动的线程, 为不同程序提供服务, 使计算机资源可以减少占用。封装底层驱动的线程, 进行程序模块化, 使软件开发人员可以更好的对线程进行调用, 可以为跨平台程序的开发提供方便。而封装可以使上层用户线程在仪器功能调用上更简单。提供测量的功能, 完成ITU测量和频谱的扫描及全景的扫描等工作, 而且组合仪器可以更好的支持不同的功能, 组合功能还可以作为仪器扩充的功能, 对ITU测量与频谱扫描完成组合。

总之, 以上功能扩充测量的功能表, 使测量功能具有ITU测量与频谱扫描及全景扫描等, 通过CESVN40接口的的方法, 提供四种功能接口的方法。针对以上功能, 进行参数设置方法的接口。而接口是仪器类重要的方法, 以正确参数的设置, 使正确测量可以得到保证下进行。通过在DLL之中建立起底层驱动的线程, 而线程的流程也要和单线程相同, 一旦数据准备完成后, 可以向上层的用户线程进行相应消息的发送, 可以通知用户取数。

对仪器驱动DLL完成封装后, 可以对不同仪器的启动同时解决, 完成综合性的任务监测与执行。例如:对ESVN40与测向仪启动和调制数据采样时, 用户要调用ESVN40与DDF010动态的链接库完成底层驱动线程的启动, 将不同任务参数传递到不同仪器, 而底层消息的传递, 可以表明测量结果的不同准备好相应的数据, 使不同仪器实现同步的工作, 使仪器实现扩充的功能, 实现虚拟仪器的技术。

3 结束语

综上所述, 系统中的功能需要进一步改善, 尤其对于软件无线电信号识别算法更要集成于系统中。以双线程的工作机理, 使系统实时的性能得到提高, 保证为软件无线电的信号调制算法提供基础, 而这些改进的措施, 会使系统得到进一步完善, 更利于GPIB接口仪器底层驱动的设计和应用。

参考文献

[1]张焕林, 穆建成.基于GPIB技术的自动测试系统设计[J].微计算机信息, 2011 (05) .

[2]刘济玉, 邹学平, 丁振锋, 等.基于GPIB接口的实用自动测试系统[J].仪表技术与传感, 2002 (05) .

接口和驱动器 篇6

Mini51板整体接口示意图如图1所示, MCU通过数据线、地址线、控制线与CPLD相连, 由CPLD完成低八位地址锁存, 地址译码, 以及MCU与外围其它对象之间的接口电路。

一、MCU常用接口模块电路设计

1. 低八位地址锁存

51单片机P0口分时复用, 配合ALE信号, 在总线模式下分时作为低8位地址线和数据线复用。在Max+plus II中, 可以直接调用集成器件库74373, 电路图如图2所示, 在CPLD内部实现低八位地址锁存。仿真波形图如图3所示, 在ALE下降沿完成P0口数据锁存, 并在ALE低电平阶段保持作为低8位地址A[7..0]。

2. 地址译码

考虑实际IC引脚资源, Mini51板地址线由A15 (P27) 和A7~A0 (P0+ALE外部锁存) 构成。在MCU系统中, 很多外部对象, 如AD、DA、键盘、RAM等等, 都需要统一编址, 以便单片机通过总线进行读写控制, 这就需要对地址线进行译码。这里选用4-16译码器74154译码, A15和低5位地址参与编址, 在Max+plus II中, 直接调用集成器件库74154, 电路如图4所示。译码得到16个地址Y[15..0], 地址编码详细见表1。

3. 寄存器与数据锁存

所谓寄存器, 实际上就是能够存储数据的电路, 常用D触发器 (DFF) 实现, DFF电路符号和真值表如图5所示, DFF能够在时钟上升沿将置数端D的数据锁存并输出Q, 而在其它时刻, Q输出保持不变, 利用DFF的这种特性, 我们就可以用CPLD内部大量DFF单元配置数据寄存器, 这里我们选择集成器件8D数据锁存器74273, 电路如图6所示, P0口接74273输入D, WR (P3.6) 接74273时钟输入CLK。

MCU执行MOVX指令时, 如图7所示, 在T0时间段, ALE下降沿完成P0口送出的低八位地址锁存, T1时刻, MCU在WR (P3.6) 引脚输出负脉冲, 此时P0口上送出要写入的数据, 在WR (接273的CLK) 上升沿完成数据锁存, 之后WR保持高电平, 此时74273输出Q就是刚才写入的数据, 并将一直保持下去, 直到下一次写操作更新。

外部对象写操作汇编指令如下:

MOV A, #55H;将要锁存的数据0x55送累加器。

MOVX@DPTR, A;启动总线写操作, 将累加器的数据通过总线送出。

4. 数码的CPLD驱动方案

Mini51板有四位联体数码管, 电路如图8所示, 直接将数码管与CPLD的IO脚相连, 电阻R做限流保护用。数码管动态扫描是常用的电路接口方式, 它优点是占用IO口少, 硬件电路简单, 缺点是需要较CPU较高频度循环扫描, 直接驱动占用CPU资源多, 编程复杂。这里使用CPLD驱动, 对MCU而言和静态驱动一样, 编程简单。

共阳极四联体数码管内部结构如图9所示, 所有码管的段码 (a, b, c, d, e, f, g, dp) 并联在一起, 位选 (S0, S1, S2, S3) 为独立引脚。由于这种特殊结构, 使得这种多联体数码管只能采用动态扫描方式驱动。

CPLD驱动数码管原理如图10所示, CPLD内部给数码管配置显示缓冲寄存器, 将每个数码管要显示的数据由寄存器存储, 数据选择器在计数器的驱动下把各数码管显示的数据分时送出, 同时计数器通过2-4译码, 产生数码管位选信号选择对应的数码管, 这一过程按一定频率时钟循环进行, 从而实现数码管的动态扫描显示。对MCU而言, 只需要更新显示缓冲区的数据即可。

根据以上显示原理, 电路如图11所示, 在Max+plus II环境中直接调用8D数据锁存器74273b做显示缓冲器, 数据输入端口接单片机P0口, CLR接VCC (也可以接MCU的某个IO实现清零) , CLK由WR与译码地址YC~YF相或, 数据选择器led_sel、计数器counter、2-4译码器decode2_4均由Max+plus II集成LPM (参数可配置) 模块配置向导直接生成。显示缓冲器输出给4选1数据选择器由led_sel控制分时送显, 时钟由MCU ALE信号由div_clk分频后给计数counter, 计数器输出接数据选择器得到数码管段码DISP[7..0], 计数器输出经过2-4译码器decode2_4译码得SEG[4..1], SEG[4..1]依次译码为8、4、2、1 (共阳极数码管决定) , 保证每时间段只有一只数码管点亮, 数码管显示DISP[7..0]的内容。

以上电路用硬件描述语言设计如下:

以上设计, 编译完成无误后, 进行引脚绑定后再编译得到Mini51CPLD.pof文件, 通过并口下载线Byteblaster MV编程CPLD即可。

二、数码管显示9999计数器

这里给出9999计数器实例, 程序流程图如图12所示, 由MCU定时器循环加1, 数码管显示, 从0000到9999计数。

编译得到counter9999.hex, PC机通过串口连接Mini51板, 执行STCISP下载软件, 将代码下载到MCU, 即可看到数码管显示计数器效果。

三、总结

通过以上介绍, 我们清楚了MCU与CPLD的接口电路和几种常用功能模块设计。当你熟悉MCU时序和精通CPLD设计后, 还可以根据实际需要, 对CPLD电路进行裁剪, 比如使用LCD代替数码管后, 那么数码管驱动电路就可以删除, 节约CPLD的内部资源用作其它设计。对于初学者来说, 精通MCU总线时序是关键, 之后才能根据外部对象的需要, 灵活应用CPLD扩展MCU接口, 才能体会到MCU与CPLD结合的强大功能。

读者需本文Mini51电路板和答疑解惑, 用户可直接发离线文件到QQ:1320160388

接口和驱动器 篇7

DRV8823使用4组N沟道MOS FET组成四个H桥, 可同时驱动2个步进电机, 一个步进电机和2个直流电机, 或四个直流电机;每相峰值电流为1.5A, 可对电流值进行8个不同档次的编程调节;8~32V宽范围工作电压;SPI串行控制口;具有SLEEP控制模式;集成了欠压、短路、过温、过流保护。

2 DRV8823的应用原理

2.1 输出控制

DRV8823有四组H桥:Bridge A、Bridge B、Bridge C、Bridge D, 每两组控制步进电机的一相输出。Bridge A和Bridge B共用一个基准电压ABVREF, Bridge C和Bridge D共用CDVREF, 每一组H桥都具有一个电流采样sense, 该引脚接采样电阻RISENSE, 固定一个ABVREF或CDVREF, 调节每组H桥的RISENSE, 可实现四组H桥具有不同的满程电流ICHOP。

满量程电流计算公式为:

其中, VREFx是基准电压, 可通过分压电阻对逻辑电压分压得到基准电压以获得合适的ICHOP。通过软件编程SPI命令字的相应控制位, 可实现对满程电流ICHOP的20%、38%、56%、71%、83%、92%、98%、100%共8个档次的电流输出。

2.2 SPI接口和控制时序

DRV8823的SPI接口信号有: (1) SDATA:串行数据输入; (2) SCLK:时钟; (3) SCS:片选; (4) SSTB:串行数据锁存, 低电平复位串行输出, 高电平失能输出。微控制器通过SPI发送的16位命令字最初只是被移入到DRV8823的一个临时寄存器, 该数据在SSTB上升沿才被写入DRV8823。如果SSTB一直处于高电平, 则16位数据传输完毕后才全部锁存。设计中用一片DRV8823控制两个2相4线步进电机, A桥和B桥控制步进电机1, C桥和D桥控制步进电机2。DRV8823的SPI命令控制字格式, 见表1。

D15-D12为步进电机地址位, 用于区分所发送的命令字是控制步进电机1还是步进电机2;D11 (D5) 为衰减模式, 可设为慢衰减和混合衰减两种。高速时快衰减、低速时慢衰减, 混合衰减是先以快速衰减然后以慢速衰减;D10-D8 (D4-D2) 为相电流调节控制位, 3个bit位8种组合对应8个档次的电流值;D7 (D1) 为相位设置, 用于控制电机转动方向, 例如, 控制步进电机1的正反转需要同时设置APHASE和BPHASE。本设计2相4线步进电机采用2相励磁方式, A+B+、A-B+、A-B-、A+B-为正转的脉冲周期, B-A+、B+A+、A-B+、B-A-为反转的脉冲周期, 正转的PHASE值如表2所示;D6 (D0) 为使能位。

3 接口电路

电机工作电压为24V, 正常运转电流为350 m A。图中V3P3是DRV8823内置3.3V基准输出。DRV8823作为从机, 微处理器通过SPI控制器与之通讯, SDATA、SCLK、SCS分别接标准SPI控制器的MOSI、SCK、SSEL, SSTB接GPIO。VREF1和VREF2通过电阻对3.3V分压得到, 如果MOTOR1和MOTOR2所需电流不一样, 则需要两个分压电路分别调节VREF1和VREF2。

4 程序控制流程

以正转为例, 脉冲周期为A+B+、A-B+、A-B-、A+B-, 分别定义为phase1、phase2、phase3、phase4, 则电机正转的过程为phase1-phase2-phase3-phase4phase1……周而复始的循环。在每个phase (步) 阶段, 微处理器通过SPI发送一个命令字给DRV8823, 设置该phase (步) 的电流值和phase值, 发送命令后立即启动定时器, 等待定时完成。通过设置每步的时间, 以控制步进电机的转速。

通过SPI发送命令的代码如下:

5 结语

本设计通过微处理器控制1片DRV8823来驱动两个2相4线步进电机, 实现了对步进电机的位置控制、电流控制和速度控制, 经实际验证, 运行稳定。

参考文献

【接口和驱动器】推荐阅读:

模拟接口05-12

接口处理06-12

接口芯片08-15

外部接口08-25

通用接口09-07

通信接口09-11

短信接口09-14

接口服务09-17

I2接口07-17

硬件接口电路07-18

上一篇:新世纪物理教育观下一篇:消防设计