【《基于ARM芯片的调线器控制系统设计》10000字】_第1页
【《基于ARM芯片的调线器控制系统设计》10000字】_第2页
【《基于ARM芯片的调线器控制系统设计》10000字】_第3页
【《基于ARM芯片的调线器控制系统设计》10000字】_第4页
【《基于ARM芯片的调线器控制系统设计》10000字】_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于ARM芯片的调线器控制系统设计摘要本文是一种基于ARM芯片的调线器控制系统的设计,设计以Linux系统为平台,利用ARM芯片实现对调线器电控系统的信号采集和动作控制,以此提高圆纬机针织线的选择和控制的质量和系统的可靠性。系统运行于嵌入式LinuxOS,完成相应的驱动程序开发,并实现编织的动作响应控制。本设计以旋转编码器、零位传感器以及调线选针器的驱动开发为核心,并完成与其相匹配的测试程序的开发与调试,实现对旋转编码器高低电平的信号采集和实现对调线选针器的动作控制。关键词:嵌入式Linux旋转编码器驱动目录TOC\o"1-3"\h\u28205摘要 225769第一章绪论 5257221.1行业发展趋势 585551.2自动调线器的工作原理及其特点 5171141.3设计目的 628022第二章系统概述 7148072.1系统设计概述 7177372.2硬件主控单元选型 84514第三章调线器控制系统硬件设计原理 10243753.1旋转编码器原理 1088413.2选针器原理 12185803.3零位传感器原理 13271023.4调线器控制系统硬件电路部分设计 1524947第四章Linux驱动程序原理 17264424.1关于Linux环境 17212954.2Linux驱动程序设计 1735044.2.1设备初始化和释放 18164644.2.2写入与读取数据 1911257第五章调线器控制系统程序设计 2083365.1调线器控制系统驱动程序设计 2055155.1.1旋转编码器驱动定位程序设计 2146155.1.2调线选针器驱动程序 22202845.1.3零位传感器驱动程序 23288795.1.4主要代码分析 24278935.2调线器控制系统的驱动程序的编译 28206305.3加载调线器控制驱动 3028009第六章调线器控制系统程序测试 3240926.1总体测试 3232116.2分模块测试 33152856.2.1零位传感器驱动程序测试 3327276.2.2调线选针器驱动程序测试 34265506.2.3旋转编码器驱动程序测试 355446第七章结论 375898参考文献: 38第一章绪论1.1行业发展趋势我国国内的针织产业的行业技术设备经过多年来的技术改造,已经有了不少的进步,但是从总体的来说我国针织设备的技术水平与国外先进水平相比,还稍显落后。为了使一些数量多、消费面广泛的针织机械产品以及相关技术可以达到与发达国家的相同类型的产品的平均水平,因此在“十一五”规划期间,我国对于针织行业设备技术的改造加大了投资和帮扶力度。近几十年以来,我国的利用计算机控制自动化机械的技术已经在众多类型的纺织机械产品中被广泛使用,如圆型纬编针织机、针织横机、织袜机等针织机械上都有使用,弥补了国内许多年来在这个方面上的空缺。由于针织技术的进步、纺织技艺的创新以及计算机技术在针织机械领域应用的日益成熟以及消费者对于多色条彩色布料消费欲望的快速上升,由计算机控制的自动调线的圆型纬编针织机的市场发展十分迅速。就今天而言,市场上的可以实现自动调线的圆型纬编针织机大部分都是3色、4色、5色和6色。经过查阅相关期刊和文献发现,国内可以自己研究生产的计算机数字控制6色的自动调线圆纬机的厂商不是很多,他们生产推广的机器也基本上会存在旋转速度过于缓慢、机械控制的精确度不是很高等问题,这些机器已经很难去满足我们国家针织行业发展的需求了REF_Ref21238\w\h[1]REF_Ref21271\w\h[2]。1.2自动调线器的工作原理及其特点使用计算机控制的自动调线大圆机是最近几年推出的一种新型大圆机,它是在针织大圆机的基础上改造而成的。它的工作原理是通过旋转编码器转动,使斜的三角面作用于编织针的针尖上,使针在针槽内做有着规则的上下运动,同时自动调线控制系统按照事先设定好的需要的颜色布匹类型去驱动调线选针器的动作,使调线选针器选择不同的调线手指去选择不同颜色纱线进行替换,每次上下运动的时候织针都会选择新的纱线,在布料的平面上形成一个一个有规律的色点,进而纺织出排列间隔有规则的彩色条纹织品REF_Ref21375\w\h[3]REF_Ref21385\w\h[4]。使用计算机控制的自动调线的圆型纬编针织机与普通的圆纬机相互比较来说,使用计算机控制的自动调线的圆型纬编针织机的最突出的特征是仅有一路调线选针器,去配合调线手指进行纺织工作。1.3设计目的使用计算机控制的自动调线的圆纬机它的特点决定了提升编织的效率是在于去提高调线器控制系统的实效性。同理可得,编织的质量好坏和控制系统的可靠性又被调线器控制系统的精确度决定了。综上所述,从现在我国国内研究的落后性和现实工程意义的角度来说,对调线器控制系统的研究升级工作具有十分重要的意义。本设计是基于ARM芯片下Linux系统实现对调线器控制系统的信号采集和动作控制。通过对Linux系统底层驱动的开发实现的圆纬机旋转编码器、调线选针器与零位传感器的控制,实现对圆纬机运行针数的统计以及对圆机旋转方向的判断,来提高圆纬机针织线的选择和控制的质量和系统的可靠性。第二章系统概述2.1系统设计概述本次设计目的是基于ARM系统来实现对调线器电控系统的信号采集和动作控制。系统设计是以单片机ARM芯片为核心,外接圆机的旋转编码器、零位传感器以及调线选针器,将这些外部连接设备元件连接到ARM芯片的串口上,通过串口驱动实现其设计目的。系统设计的总体框架如图2-1所示。ARMLinuxOSARMLinuxOS旋转编码器零位传感器调线选针器零位传感器(为接近开关)在调线器控制系统中是用于检测零位,方便计算脉冲数的;调线选针器在整个控制系统中是用于选择不同颜色的纱线进行纺织的;旋转编码器配合着零位传感器计算和判断整个调线器控制系统的脉冲计数以及旋转方向的。本设计通过旋转编码器产生的电平脉冲计数值与接近开关(零位传感器)的相对位置,去判断调线选针器所在的位置。因此,旋转编码器与调线选针器的定位及驱动是本次设计的心脏部分,是整个设计的重中之重。如图2-2所示,1一N均为调线选针器,通过调线选针器的调线手指送纱进入机器进行纺织工作,在机器工作时,调线选针器只能控制一个调线手指进行纺织,在整个过程中,调线选针器的位置确定是作为纺织工作的一个基准点,这关系到纺织成的布料的质量,所以调线选针器控制的精度显得尤为重要REF_Ref21588\w\h[6]。图2-2运行原理图2.2硬件主控单元选型本次设计计划使用的主控单元是TQ2416CoreC核心板,实物图如图2-3。它是由广州的天嵌计算机科技有限公司打造的一款性能稳定,质量过硬,可扩展接口丰富的主控单元,并且它的售后服务优良与优秀的技术支持,获取了许多开发人员与企业的青睐。核心板采用了6层工艺,做工精良,面积小,功能全,集成丰富[7]。核心板主要参数如表1,表1TQ2415CoreC核心板主要参数CPU主频ARM926EJ内核,400MHz系统频率DDR128MBDDRSDRAM内存NandFlash256MBytes(256M~2G可选)指示灯1个红色电源指示灯引脚数量192个引脚输入电压3.3VGPIO接口通用输入输出接口交叉编译版本Arm-linux-gcc-4.33图2-3TQ2415CoreC核心板主控单元实物图第三章调线器控制系统硬件设计原理在调线器控制系统中最主要的的元件为旋转编码器、零位传感器以及调线选针器,下文主要描述了各个元件的原理以及在控制系统中的作用。3.1旋转编码器原理旋转编码器是一种用于测量旋转方向与旋转脉冲计数的位置传感器,它被广泛应用于确定输出轴的位移。它将编码器旋转运动产生旋转脉冲电平信号以数字信号输出。旋转编码器的原理图如图3-1所示,这种编码器它具有3个引脚,A脚,B脚,和Z脚。通常可以把Z端接GND,A,B端接到输入上拉模式的输入输出接口。可以取引脚A或引脚B的任意一个作为时钟脉冲,另一根作为信号输出。在本次设计中,我把引脚A作为时钟脉冲,引脚B作为信号脉冲。图3-1旋转编码器原理图当旋转编码器一步一步开始旋转工作的时候,引脚A和引脚B将会与公共引脚Z逐步产生接触,并相对应地输出两个方波信号。旋转编码器的时序图如图3-2。当只需要计算输入信号的脉冲个数时,可以使用两个输出引脚中的随意一个去确定旋转编码器的相对位置。但是,当还想要确定旋转编码器的旋转方向时,必须同时考虑到A、B两个输出信号。图3-2旋转编码器时序图若将旋转编码器的引脚A视为时钟脉冲信号,引脚B视为数据输出信号,则整个旋转编码器就可以视为根据时钟脉冲信号输出数据信号的同步元件,即可以看作数据信号在时钟脉冲的边沿处输出(时钟脉冲检测边沿,数据脉冲检测电平)。如表2旋转编码器工作的逻辑功能图。在旋转编码器正方向旋转的时候,引脚A为时钟脉冲是下降沿,引脚B为数据脉冲是高电平;引脚A为时钟脉冲的上升沿处,引脚B为数据脉冲为低电平。同理可得,在旋转编码器反转时,在引脚A为时钟脉冲是下降沿处,引脚B为数据脉冲是低电平;引脚A为时钟脉冲是上升沿处,引脚B为数据脉冲为高电平。可以不严谨的简单总结为时钟的下降沿处A、B反相为正转,同相为反转。表2编码器工作逻辑表编码器正反转引脚动作正转正转反转反转A上升沿下降沿上升沿下降沿BLHHL因为旋转编码器每转一格,引脚A与引脚B都会分别输出一个完整的脉冲波形,因此可以检测引脚A(时钟脉冲)的时钟单边沿即时钟脉冲的升沿或者时钟脉冲的下降沿中任选其一做检测,根据时钟脉冲的边沿处,引脚B(数据)的高低电平来判断旋转编码器是正转还是反转。另一种方法也可以看做引脚A与引脚B的相位关系(检测数据脉冲和时钟脉冲哪根脉冲的边沿先出现):正转时,A相位超前于B相位;反转时,A相位滞后于B相位。使用简单的数字逻辑电路(异或门与D触发器)就可以识别到AB的相位关系与转动次数。旋转编码器的实物图如图3-3所示。图3-3旋转编码器实物图在调线器控制系统中,旋转编码器是需要配合着零位传感器一起计算和判断整个调线器控制系统的脉冲计数以及旋转方向的。3.2选针器原理调线选针器是一种能量转换元件,它依照纺织材料及颜色组合的使用的电平信号一个接着一个驱动选针器件的,它是利用计算机控制圆机调线系统去实现控制选针器工作的执行设备。由于上述原因,调线选针器的功能好坏会直观反映出选针工作精度和稳定性。调线选针器从它的工作原理上可以被分为压电式调线选针器和电磁式调线选针器两种[8]。压电式调线选针器它利用压电陶瓷材料作为能量转换器件,它使用控制器发出的电平脉冲信号去作用在压电器件上,它依靠陶瓷压电材料的逆压电效应,使压电器件可以弯曲至事先设定好的记忆的形状去进行选针工作[12]。电磁式选针器它是使用对电磁螺线管中加入相同方向的电流.使电磁螺线管两个顶端的极性发生相应的改变,或者可以配合着永久性的磁铁去使用。调线选针器刀片的运作依靠电磁铁与永久性磁铁之间的相互的吸引力与相互排斥力去达到,即使用了压针方法完成了选针工作,亦或是可以直接控制选针器选针利用通过电磁铁两端的极性变化去驱使织针分别走向不同的通道,即用抄针方法去实现选针工作。调线选针器的基本结构如图3-4所示,实物图如图3-5、3-6。 图3-4选针器基本结构图图3-5选针器刀头图 图3-6针器实物图在调线器控制系统中,调线选针器在整个控制系统中是用于选择不同颜色的纱线进行纺织的。3.3零位传感器原理接近开关是一种位置开关,当有金属物品接近时,开关可以感应并控制电流传输给计算机或者PLC设备提供指令的。因此,我们可以将接近开关作为系统设计的零位传感器来使用。原理图如图3-7。在本文设计中,我使用了欧姆龙TL-Q5MC1-Z接近开关。开关特性如下表。接近开关的实物图如3-8。表3接近开关使用说明开关容量200mA以下(DC30V以下),1V以下(负载电流10mA及导线2m时)残留电压2V以下(负载电流200mA)保护回路电源逆接保护、负载反接和短路保护、浪涌吸收输出方式NPN型图3-7零位传感器原理图图3-8零位传感器实物图零位传感器(为接近开关)在调线器控制系统中是用于检测零位,方便在旋转编码器工作时主控单元去计算脉冲数的。3.4调线器控制系统硬件电路部分设计调线器控制系统的驱动工作是按照选针器所处位置展开的,所以选针器位置编码采集电路对整个调线器控制动作的准确性起着核心的作用。选针器位置信息的采集主要由这两个模块组成,零位传感器电路与旋转编码器的信号采集电路。如下图3-9所示,电路实现了记录旋转编码器工作的圈数以及实现对选针器位置计数清零的工作。当没有脉冲信号输入时,光电耦合器TLP216不导通,输出信号默认输出高电平;当接近开关(零位传感器)靠近调线选针器上磁铁的时候,将输出一个低电平信号脉冲,光电耦合器TLP126导通,指示灯LED点亮,输出信号输出一个低电平信号到主控单元.图3-9零位传感器电路如下图3-10,这个电路功能是为了实现对旋转编码器脉冲数的采集,旋转编码器编码器有两个电平脉冲输入分别对应了旋转编码器的引脚A与引脚B,A与B这两个信号分别经过二极管D26、D27处理,再经过晶体管输出光电耦合器进行耦合后输出至主控单元,最后输出的两路脉冲信号。图3-10旋转编码器信号采集电路第四章Linux驱动程序原理4.1关于Linux环境Linux操作系统是Unix操作系统的一种变形,是一个遵守可以移植操作系统接口(PortableOperatingSystemInterface,缩写为POSIX)尺度的免费操作系统。它具备伯克利软件套件(BerkeleySoftwareDistribution,BSD)和SYSV的扩展特性,在Linux操作系统下编写驱动程序的道理和思路与其他的Unix系统十分相似。和其他操作系统去做比较,嵌入式Linux系统着拥有可应用于多种硬件平台、内核稳定效率高、内核源码开放、软件内容丰富、网络通信通讯和文件管理机制十分完善等优良特征[9-10]。虽然在Linux环境下设计设备的驱动程序,它的支持函数少,大部分时间只好依赖内核(kernel)中所拥有的函数,并且有些需要经常使用的操作函数只能自己去编写,而且设备的调试也不是十分方便,但是,它的编程思路很简洁,开发人员动手操作起来也很方便容易,能够开发的功能也十分强大。本设计采用的平台是Fedora10-Embsky,开发语言为嵌入式C语言,其中Fedora10-Embsky是一个

Linux发行版,是一款由全球社区爱好者构建的面向日常应用的快速、稳定、强大的操作系统。它可以让所有人永远自由的使用。4.2Linux驱动程序设计系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和硬件设备之间的接口。设备驱动程序是内核的一部分,运行在核心态,它完成以下的功能:1.对设备进行初始化和释放.2.把数据从内核传送到硬件和从硬件读取数据.3.读取应用程序的数据,将程序传送给硬件设备文件的数据和返回到应用程序请求的数据.4.检测和处理设备中出现的错误.最后必须提到的是,在用户进程调用驱动程序时,系统进入核心态,这时不再是抢先式调度,也就是说,系统必须在你的驱动程序的子函数返回后才能进行[11]。注意:开发驱动的过程中,可以采用内核(kernel)引用。/include下有好多头文件,最常使用的只有/include/linux和/include/asm目录。有三个数据结构在编写驱动程序时十分重要:/linux/fs.h中定义的file_operations、inode和file结构。4.2.1设备初始化和释放在设备初始化和设备释放之前应该了解在Linux操作系统下设备被分成三类:如图4-1所示,有3类主要的设备文件类型:块设备、字符设备、网络设备[5]。图4-1设备文件分类在本次设计中我使用的设备是字符设备文件,每个字符设备的驱动都要包含对这个字符设备的初始化,而这个初始化其实是一个非常固定的步骤。首先,需要申请注册一个设备,使用函数:staticinlineintregister_chrdev(unsignedintmajor,constchar*name,conststructfile_operations*fops)参数1major表设备号(32位的值由主+次设备号构成)高12位主设备号+低20位的次设备号构成;参数2name表示设备名字;参数3file_operations,表示文件操作集,是应用层要对设备进行的操作,常用的有:open,read,write。其中与register_chrdev成对使用的函数是unregister_chrdevstaticinlinevoidunregister_chrdev(unsignedintmajor,constchar*name)参数和register_chrdev基本相同,作用是销毁一个字符设备,用于驱动卸载。4.2.2写入与读取数据在Linux开发驱动设备时,十分重要的是设备的读写数据。在应用程序看来,字符设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作。应用层对设备的操作都在设备驱动程序的file_operations结构中有对应的接口,如应用层的read函数对应驱动层的file_operations->read,应用层的write函数对应驱动层的file_operations->write[5]。先看file_operations结构中的读写接口:ssize_t(*read)(structfile*,char _user*,sizet,*);ssize_t(*write)(structfile*,constchar user*,size_t, *);它们的第二个参数实际上是用户空间的数据地址。由于内核态和用户态使用不同的内存定义,所以二者之间不能直接访问对方的内存,而应该使用Linux中的用户和内核态内存交互函数,这些函数在include/asm/uaccess.h中声明。从内核空间向用户空间复制数据使用copytouser函数:unsignedlongcopy_to_user(void user♦to,constvoid*from,unsignedlongn);而从用户空间复制数据到内核空间可以使用copy_fi*om_user函数:unsignedlongcopy_from_user(void*to,constvoid*from,unsignedlongn);此外,内核空间和用户空间之间也可进行单值交互(如char、int、long类型):put_user(x,p) 〃向用户空间指针p传单值xget_user(x,p) 〃从用户空间指针p读单值x当一个指针指向用户空间时,必须确保指向的用户地址是合法的,而且对应的页面也已经映射。这一点可以使用accessok函数检测。accessok函数的type参数有两个选项:VERIFY_READ、VERIFY_WRITE,分别对应于内存读和写第五章调线器控制系统程序设计5.1调线器控制系统驱动程序设计如下图5-1所示,如果脉冲计数像这样产生:调线选针器在位置1正方向旋转了n1个脉冲来到位置2,根据机械抖动的原因,脉冲数值可能会出现下列现象,因此会产生误差:当调线选针器开始反转并带动旋转编码器反转时,旋转编码器又会返回至位置1。这个时候旋转编码器如果继续正转,即从位置1处产生了2n1+n2个脉冲来到位置3。此时,整个过程中旋转编码器就出现过了一次反转,如果只按照n1+n2个脉冲来计算旋转编码器从位置1到位置3的脉冲个数的话,就会产生n1个脉冲的误差值。综上所述,如果仅靠单一的脉冲信号计数的方法会轻易的形成旋转编码器定位上的误差。本设计从现实会产生的情况出发,按照接近开关(零位传感器)与旋转编码器的实时相对位置出发,采用正、反两个脉冲对旋转编码器的位置进行定位,代替之前采用单一脉冲计数的方法对旋转编码器进行定位。这种方法有两个好处是大大地减少了误差的产生,以及提高了调线器控制系统的精确度。图5-1脉冲计数示意图5.1.1旋转编码器驱动定位程序设计旋转编码器脉冲采集方法如图5-2所示。当前脉冲值为0,利用主控单元(TQ2416CoreC)外部中断的方式来实时监测正、反两个脉冲信号,并计算当前旋转编码器旋转的脉冲值。当脉冲产生的时候判断脉冲的方向,并计算当前正反两个方向的旋转数,计算值相减就可以得出当前脉冲产生的总数,用实现设定好的脉冲值与总数比较。当达到设定值之后根据时,这时旋转编码器是执行完成驱动调线手指动作对应的选针器刀头的状态数据,即完成调线器控制工作。图5-2旋转编码器驱动程序流程图5.1.2调线选针器驱动程序调线器控制的调线选针器驱动程序流程图如下图5-3。在原理图中确定需要控制IO口的端口号,根据打开的设备文件初始化相应的IO口为输出口,判断当前调线选针器的工作状态,根据设备文件以及向调线选针器写入的值来操作相对应的输入输出端口(GPIO口)做出相应的动作,即选择不同的纱线进行纺织工作。图5-3调线选针器工作流程图5.1.3零位传感器驱动程序调线器控制系统的零位传感器驱动程序流程图如下图5-4。零位传感器的功能是检测零位,即在系统工作时产生一个中断。中断产生后会返回对于的返回值,不同的的返回值有不同的意思,当返回0时为成功,返回-EINVAL时表示中断号无效,返回-EBUSY时则表示中断已经被占用,且不能共享。图5-4零位传感器驱动程序流程图5.1.4主要代码分析(1)调用初始化函数初始化驱动程序时采用misc_register函数注册设备文件。初始化函数流程图如图5-5。图5-5初始化函数流程图staticint__initdev_init(void)是初始化函数。与上文初始化相对应的的函数,功能是驱动卸载。staticvoid_exitdev_exit(void){misc_deregister(&misc);}(2)定义中断引脚,这个结构体说明了芯片的外部中断发生在哪一个引脚。也是告诉我们外部电路连接时连接了主控单元的哪一个输入输出端口(GPIO口)。staticstructbutton_irq_descbutton_irqs={IRQ_EINTO,s3c2410_GPG13,s3c2410_GPG13_EINT21,0,"KEY0",IRQ_EINT1,S3C2410_GPG14,S3c2410_GP614_EINT22,1,"KEY1"};(3)读取函数如图5-6,读取函数的实现过程如下:图5-6读取函数流程图(4)中断函数在中断函数中对传入的资源进行了处理,唤醒了休眠的进程,实现了旋转编码器的正反转的判断以及对脉冲个数的计数工作,具体工作流程图如图5-2。最后,在字符设备的驱动程序编写过程中还有两个重要的函数:module_init(dev_init);//模块初始化函数module_exit(dev_exit),//模块退出函数5.2调线器控制系统的驱动程序的编译直接将旋转编码器驱动程序编译进Linux系统开源的内核中。首先,将旋转编码器的驱动程序复制到linux-/drivers/的相关目录下,因为我用的是字符设备驱动程序,所以旋转编码器驱动程序被我放在linux-/drivers/char下。为了使驱动编译成功,首先,需要修改linux-/drivers相关的子目录下的Makefile文件,在文件中,空白的地方增加:obj-$(config_TQ2440_FPGAINT)+=tq2440_irq0.o只有增加这一行代码过后,在编译内核时将会编译编写的旋转编码器的驱动源代码tq2440_irq0.c,才能生成与之对应的.o执行文件。之后在对内核进行重新编译时,还要进行相关的配置步骤。然后修改linux-/divers/char下的Kconfig文件,在空白处增加如图5-7所标注的相关代码。因为此文件是内核配置菜单,如果不修改,在下文编译生成.ko动态驱动文件时会出现编译失败。图5-7Kconfig文件添加代码配置文件完成之后需要将驱动程序加载成为驱动模块。在linux-内核源码目录下使用make

menuconfig命令,出现.config选项页,在出现的选项页中选择如图5-8所示的选项。图5-8选择设备驱动之后在characterdevice选项目录中找到定义的设备驱动模块,如图5-9所示,选择好这个驱动模块,再执行make

modules编译成为如图5-10,tq2440_irq0.ko这样的动态驱动模块。图5-9选择驱动模块图5-10生成.ko文件 到这里为止,已经完成了对于设备的驱动程序的编写及交叉编译等工作,开始进入调试工作。5.3加载调线器控制驱动首先,利用root权限进入ARM主控单元TQ2440,用命令修改ARM主控单元的IP地址使之与虚拟机IP地址一致(查看虚拟机与ARM主控单元IP地址命令为ifconfig),ping命令可以用来检测ARM主控单元与虚拟机是否连通,然后使用mount命令挂载,详细命令如下图5-11。图5-11ARM主控单元与虚拟机挂载命令如图5-12所示在芯片的/dev目录下找到之前安装好的设备文件。如果在/dev目录下没有相应的设备文件,就可以使用mknod创建一个设备文件。如图5-13利用insmod命令给系统安装驱动模块,之后若发现驱动模块没有达到相应的设计要求我们可以用rmmod命令去卸载驱动模块,此时我们可以利用rm命令去删除设备文件的。图5-12芯片内的设备文件图5-13成功装载调线器驱动程序第六章调线器控制系统程序测试6.1总体测试在编写驱动程序的测试时,我想让驱动程序编可以在没有显示屏幕时,通过超级终端进行测试。运行程序时,屏幕会打印出旋转码器和调线选针器的工作状态,即向屏幕打印旋转编码器是正转反转以及点亮主控单元时灯来LED模拟调线选针器的工作状态。程序工作流程如图6-1所示。图6-1测试程序的流程图6.2分模块测试6.2.1零位传感器驱动程序测试 零位传感器会在系统工作时产生一个外部中断,即测试零位传感器的将是一个中断处理程序,程序的流程图如图6-2所示。图6-2零位传感器测试流程图程序运行结果为,当接近开关(零位传感器)碰到金属物品时主控单元的LED灯亮,反之LED灯不亮。 图6-3实物图6.2.2调线选针器驱动程序测试调线选针器程序测试是根据设备文件以及向调线选针器写入的值来操作相应的IO口做相应的动作,即可以控制主控单元串口使调线选针器开始动作。测试程序流程图如下图6-3。图6-3调线选针器测试程序流程图运行结果为,当串口打开后,调线选针器的调线手指开始动作。6.2.3旋转编码器驱动程序测试因为旋转编码器是利用主控单元外部中断的方式来实时监测正、反脉冲信号,并计算当前旋转的脉冲值,所以测试旋转编码器时可以通过向屏幕打印旋转的方向以及脉冲值来测试这部分驱动程序的功能。程序流程图如下图6-4。图6-4旋转编码器测试程序流程图如图6-5所示,在旋转编码器正转为1,计数值cnt加1,反转为2。计数值cnt减1。图6-5旋转编码器测试程序运行结果第七章结论 随着社会生活的不断丰富,人们对美的需求越来越多,对服装也有了更高的要求,这就对针织行业提出了严

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论