基于嵌入式ARM Linux步进电机驱动程序的设计

发布者:DazzlingSmile最新更新时间:2011-06-06 关键字:ARM  Linux  步进电机  驱动 手机看文章 扫描二维码
随时随地手机看文章

0 引言
    随着激光雕刻机的不断发展和改进,嵌入式Linux的激光雕刻机比CNC(Computer numerical control)激光雕刻的优势不断显现,它大幅度提高了处理能力,方便了设计开发,节约了成本,是未来经济型激光雕刻机发展的趋势。而嵌入式ARM(Advanced RISC Machines)Linux步进电机驱动是实现激光雕刻的核心。
    嵌入式开发过程中,经常需要为特定设备开发驱动程序。这些驱动程序的编写和编译与PC上的Linux驱动开发相比存在明显的差异,需要考虑的因素较多,实现过程较为复杂。本文以Samsung公司的友善之譬S3C2440开发板为例,探讨如何使用嵌入式Linux开发字符设备驱动程序来驱动步进电动机。

1 硬件系统设计方案
    控制系统由处理器、步进电机驱动器、步进电机3部分组成,如图1所示。

5a.JPG


    处理器用友善之譬QQ2440V3开发板,内核为ARM920T。步进电机驱动器采用北京和利时电机技术有限公司(原四通电机)的SH-20403。驱动器共有四路输入信号:公共、脉冲信号输入、方向信号输入和脱机信号输入。驱动器的输入信号既可以采用共阳极也可以采用共阴极接线方式,使用共阳极模式时,应将输入信号的电源正极连接到公共端,将输入信号连接到对应的信号端子,信号低电平有效,此时对应的内部光耦导通,控制信号输入驱动器中;对应共阴极模式时,将输入信号的电源负极连接到公共端,信号高电平有效,我们采用的是共阳极接法。
控制步进电机驱动器的时序如图2所示。

5b.JPG[page]

2 步进电机驱动系统设计
    Linux内核结构体系可分为:应用程序、库函数、操作系统(内核)、驱动程序。在Linux操作系统中,驱动程序是操作系统内核与硬件设备的直接接口,驱动程序屏蔽了硬件的细节,驱动程序是内核的一部分,它具有以下功能:
    对设备初始化和释放:比如向内核注册这个程序,这样应用程序传入文件名时,内核才能找到相应的驱动程序。
    对设备进行管理,包括实时参数设置以及提供对设备的操作接口。
    读取应用程序传送给设备文件的数据并回送给应用程序请求的数据。
    检测是处理设备出现的错误。
    如图3所示,应用程序通过Linux系统的调用实现与内核通信。由于Linux中将设备当做文件处理,所以对设备进行操作的调用和对文件操作的操作类似,主要包括open()、read()、write()、ioctl()、close()等接口函数。应用程序发出系统调用命令后,会从用户态转到内核态,通过内核将openO等的系统调用转换成对物理设备的操作。在Linux中通过分层实现对物理设备的调用,这样使得内核的结构清晰,提高了模块化的独立性。

5c.JPG


2.1 嵌入式Linux设备驱动程序的框架
    Linux系统设备分成三种基本类型:字符设备、块设备、网络设备。每个模块通常实现其中某一种:字符模块、块模块或网络模块。
    嵌入式设备驱动整体可分以下两部分:
    (1)硬件设备接口层。这部分主要描述驱动程序与设备的交互。
    (2)驱动与内核接口层,它实现驱动模块在Linux内核的注册加载与卸除工作。
    对于驱动程序与内核接口层,Linux提供了标准的入口点函数init_functionO;在通过模块化的设计方法设计驱动程序时,使用insmod加载核心模块时会调用本函数,通知内核对驱动程序进行注册。模块的卸除工作与加载工作类似,通过rmmod卸载模块时,调用cleanup_funct-ion0取消驱动程序的注册。
2.2 GPIO的步进电机驱动开发
    GPIO(General Purpose Input Output)的步进电机驱动可以归类为Linux设备驱动的字符设备驱动,以下是开发它的一些具体步骤。
2.2.1 开发步骤
    (1)模块化驱动程序
    写字符设备的驱动程序时,也要遵守模块化编程的一般规范。设备模块在用户空间的初始化和终止:
    Init_mnodule()向内核注册模块提供数据结构、局部和全局变量。
    Cleanup_module()取消所有init_module在内核中的注册。
    (2)设备模块在内核空间的内存申请和释放
    kmalloc()函数分配一段内存,这样就实现了Chrdevs向量表中指向设备驱动程序名称的指针。使用kfree释放内存。
    (3)字符设备主设备号和次设备号的分配
    主设备号标志设备对应的驱动程序,内核利用主设备号将设备与相应的驱动程序对应起来。主设备号的取值范围是O~255,如果不善加规划,则容易造成主设备号的冲突。
    次设备号由驱动程序使用,内核的其他部分并不使用它,仅将它传递给驱动程序。
    (4)设备模块在内核空间的注册与注销
    字符设备的注册有两种方法,一种是常用注册方法,通过系统函数registel_chrdev()将设备加入到系统设备列表中;另一种是devfs技术,通过系统函数devfs-regisrer()实现设备的注册。注销与注册相反,分别调用unregister_chrdev()函数和devfs_unregister()函数。
    (5)设备模块在内核空间提供系统调用的函数设备驱动程序在注册成功以后,用户可以通过访问设备特殊文件(一般情况在/dev目录下)实现系统调用。
    GPIO驱动程序只需要一个file operations数据结构体就可以了。
2.2.2 驱动开发
    要写实际的驱动,就必需了解相关的硬件资源。比如:用到的寄存器、物理地址、中断等。在这里,它用到如下硬件资源,如表2所示。

5d.JPG[page]

    要用操作所用到的IO口,就要设置他们所用到的寄存器,我们需要调用一些现成的函数或者宏,比如:
    /*每个port有16个引脚,而每个引脚由两位来配置,所以你看到32×N。 32表示一个port的配置寄存器,而N代表是第几个端口。而这里的offset表示的是第几个引脚。*/

5e.JPG

    S3C2440开发板中GPIO的许多引脚是和地址线、数据线、串口线等引脚复用的。所以我们必须对GPIO进行重新定义和配置。一般来说,写驱动可以在内核中找相近的驱动程序,以它为模板进行开发,有时也要从零开始,这次作者在内核Linux-2.6.13-qq2440\kernel2.6.13\drivers\char中的qq2440 led.c进行修改。
    5f.JPG

    最后定义了file_operations和各种API函数,配置了init和exit函数以及module_exit和module_init。
    驱动开发完后,要进行测试。把编写好的驱动程序在PC机上进行交叉编译。然后用命令#insmod stepper.ko加载模块到内核中,通过命令#rmmod stepper.ko可以卸载模块。用mknod/dev/stepper 1000 0建立与驱动程序相应的设备节点。编写相应的应用程序。在应用程序中打开步进电机的设备文件,通过调用ioctl(fd,1&dir,O),运行应用程序,查看步进电机的转向。

3 结论
    本文在S3C2440开发板下实现了步进电机的控制。给出了简单的驱动程序,实验结果表明驱动运行正常、稳定。但对于实现传能激光雕刻的图形及灰度雕刻,还有待于进一步的完善。

 

 

关键字:ARM  Linux  步进电机  驱动 引用地址:基于嵌入式ARM Linux步进电机驱动程序的设计

上一篇:μCOS-II在ARM Cortex-M3处理器上的移植
下一篇:基于ARM和Clinux的家庭网关系统

推荐阅读最新更新时间:2024-03-16 12:36

LED灯具智能驱动系统设计
摘 要: LED 是一种新型半导体固态光源,具有低功耗、长寿命及环保的显著优点。采用PT4115来做LED恒流驱动,设计了具有智能调光控制的LED射灯驱动系统。根据PT4115的输入电压范围,设计了基于TOP249Y 的电源适配器。结果表明,该系统能有效地实现对灯的智能控制,并提高用电效率,节省电能。   0 引言   LED照明是全球节能的主流,而大功率LED 照明更是今后世界的照明发光系统的主流趋势。大功率LED具有亮度高、节能环保、安全性和稳定性高等特点,比传统光源节电60% ~ 70%.   传统的声光控延时控制器能很好地实现对灯的控制,在光线黑暗时或晚上来临时,能有效地实现“人来灯亮,人去灯熄” , 但由于其开关用
[模拟电子]
LED灯具智能<font color='red'>驱动</font>系统设计
芯原与ARM扩展合作关系,进一步满足消费和网络应用先进片上系统设计的需求
进一步增强芯原为关键的垂直市场提供的片上系统应用平台       中国上海,2007年5月9日 ——芯原股份有限公司(芯原)和ARM公司(伦敦证交所:ARM;纳斯达克:ARMHY)今天宣布,芯原获得ARM926EJ-STM处理器的授权。ARM不仅将向芯原提供ARM922TTM 处理器和ARM7TDMI处理器,通过这一授权协议,芯原还将作为ARM授权设计中心,拓展目前基于ARM926EJ-S软核处理器的解决方案,打造具有综合功能、可配置的缓冲存储系统,还将增强芯原针对音频/视频、语音和多媒体等消费电子应用提供ASIC交钥匙设计的实力。     通过这一授权协议,芯原将能够直接为客户提供适用于任何代工工厂或加工点的基于ARM技术的设
[焦点新闻]
步进电机的单片机控制系统的设计
1 引言 本文主要研究基于8051 单片机的步进电机的驱动器,驱动采用H - 桥驱动电路,使步进电机可在智能化程序控制下完成正转、反转、加减速及细分等各种操作。文中所设计的H - 桥驱动电路可使步进电机具有更高的性能,同时把数字电路与驱动电路隔离开,避免了步进电机运行时所产生的冲击电压和电流干扰单片机。 2 控制系统的硬件设计 步进电机的单片机控制系统硬件原理图如图1所示。 图1 步进电机的单片机控制系统硬件原理图 系统中采用并行控制,用单片机接口线直接去控制步进电机各相驱动线路。键盘作为一个外部中断源,设置了步进电机正转、反转、档次、停止等功能,采用中断和查询相结合的方法来调用中断服务程序,完成对步进电机的最佳控制,显示
[单片机]
<font color='red'>步进电机</font>的单片机控制系统的设计
用proteus8.0仿真51单片机控制步进电机实验报告与源码
用proteus8.0仿真51单片机控制步进电机,实现简单的正反转、加减速控制。 ps. 该贴仅为获取黑币而法,如有雷同,多多保函 实验内容 掌握KeilC51软件与Protues软件联合仿真调试的方法; 掌握步进电机的工作原理及控制方法; 掌握步进电机控制的不同编程方法。 电路图 实验心得 这次实验让我学到了通过改变延时函数的参数可以实现步进电机的增减速,改变驱动电机的数模可以实现电机的正反转,中途遇到的困难不少,但在老师的指导下总算是完成任务。这两次实验使我能更熟练地运用微机来控制其他器件,获益良多。 单片机源程序如下: #include reg52.h sbit KEY0=P0^0; sbit KE
[单片机]
用proteus8.0仿真51单片机控制<font color='red'>步进电机</font>实验报告与源码
ARM推出安全文件集加速Cortex-R5处理器进军汽车、医疗与工业
ARM 近日针对Cortex -R5处理器推出一套完整的安全文件集,加速安全关键的相关应用采用Cortex-R5处理器。这对于包括汽车、医疗与工业应用等产业而言,是相当重要的转变,意味着这些产业将能以更具成本效益的方式配置先进系统。 Cortex-R5 是ARM处理器系列中第一个提供安全文件集的处理器,芯片伙伴可以通过这套文件集证明其产品与新的功能安全标准完全兼容。 ARM处理器事业部总经理Noel Hurley表示, 功能安全对于汽车、医疗与工业应用等市场日益重要,而ARM也将持续支持 有意跨足这些高成长领域的合作伙伴。 Cortex-R5处理器具备丰富的故障侦测与控制功能,并且新增通用安全的文件集,可协助开发者运用于
[嵌入式]
基于SSD1303及AT89C51OLED显示屏驱动方设计
   1. 引言   有机电致发光显示(OLED)技术是下一代最有竞争力的平板显示技术。目前, OLED的研究重点是提高器件的稳定性、发光效率和高质量动态显示的驱动技术以达到实用化的要求.本文从实用的角度出发,首先论述了稳定的绿色有机薄膜电致发光器件的研制,阐述了96×64点阵的PM-OLED显示屏的制作,重点论述了利用Solomon公司的新产品,集控制器、行驱动器和列驱动器于一体的专用于OLED显示控制驱动电路SSD1303和单片机AT89C51驱动 OLED显示屏的方法。本文工作结果是从实验室到应用的尝试,为OLED的实际应用提供了一种可行的方法。   2.矩阵显示屏的制备   2.1 OLED采用的结构及材料
[单片机]
基于SSD1303及AT89C51OLED显示屏<font color='red'>驱动</font>方设计
LED照明驱动芯片 双通道可调光【Marvell】
引言: “Marvell全新的8800 LED驱动芯片系列将显著减少实现高品质专业和消费类照明LED技术的成本,加速可持续LED解决方案的大规模市场应用步伐。”Marvell绿色技术产品部门副总裁Kishore Manghnani 指出,“88EM8801是同类产品中第一款可处理双通道LED的驱动器,具有多种独特的差异化特性,可用于开发通用消费类市场目前还较昂贵的更高端照明产品。” 2011年5月24日,北京──全球整合式芯片解决方案的领导者美满电子科技(Marvell)日前宣布推出全球第一款双通道智能LED驱动芯片88EM8801。该芯片采用了Marvell公司独特的电源技术,并借助于公司在高集成和
[电源管理]
LED照明<font color='red'>驱动</font>芯片 双通道可调光【Marvell】
IAR推出新版IAR Embedded Workbench for Arm功能安全版,该版本配备经过认证的静态代码分析功能
IAR推出新版IAR Embedded Workbench for Arm功能安全版,该版本配备经过认证的静态代码分析功能 瑞典乌普萨拉,2024年2月20日 – 全球领先的嵌入式系统开发软件解决方案供应商IAR宣布 :推出其旗舰产品IAR Embedded Workbench for Arm功能安全版的最新版本9.50.3。此次发布进一步加强了IAR支持开发人员创建安全、可靠和符合标准的嵌入式应用程序的承诺,涵盖了汽车、医疗设备、工业自动化和消费电子等多个行业。该版本中最重要的新功能是经过认证的C-STAT,这是专为安全关键应用程序设计的静态代码分析工具。 IAR Embedded Workbench for Ar
[嵌入式]
IAR推出新版IAR Embedded Workbench for <font color='red'>Arm</font>功能安全版,该版本配备经过认证的静态代码分析功能
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved