基于s3c44b0步进电机的控制系统_毕业设计论文(编辑修改稿)内容摘要:

图 37 硬件电路原理图 35BY48 型永磁步进电机共有四组线圈,四组线圈的一个端点连在一起引出,这样一共有 5根引出线。 要使用步进电机转动,只要轮 流给各引出端通电即可用一个简单的单级驱动电路来作为驱动,通过 JB1~JB4 来控制各线圈的接通与切断。 开机时, JB1~JB4均为高电平,依次将 JB1~JB4 切换为低电平即可驱动步进电机运行,注意在切换之前将前一个输出引脚变为高电平。 如果要改变电机的转动速度只要改变两次接通之间的时间,而要改变电机的转动方向,只要改变各线圈接通的顺序。 RAM7TDMI 3C44B0X 68 69 70 71 JB1 JB2 驱动电路 JB3 JB4 步进电机 四相 江苏技术师范学院毕业设计说明书(论文) 第 16 页 共 57 页 第 4章 系统软件设计 4. 1 嵌入式应用软件开发的基本流程 由于嵌入式系统是一个受资源限制的系统,因此直接在嵌入式系统硬件上进行编程显然是不合理的。 在嵌入式系统的开发过程中,一般采 用的方法是先在通用 PC 机上编程;然后通过交叉编译和链接,将程序做成目标平台上可运行的二进制代码格式;最后将程序下载到目标平台上的特定位置,由目标板上启动代码运行这段二进制代码,从而运行起嵌入式系统。 整个过程中的部分工作在主机上完成,另一部分工作在目标板上完成。 首先,是在主机上的编程工作。 纯粹使用汇编代码编写源代码,除了编写困难外,调试和维护困难也是汇编代码的难题;而 C 语言可直接对硬件进行操作,而且又有高级语言变成结构化、容易移植等优点,因而嵌入式系统源代码主要由汇编和 C语言混合编写。 源代码编写完成 后保存为源文件,在用主机上建立的交叉编译环境生成 .obj 文件,并且将这些 .obj文件按照目标板的要求链接成合适的 .image 文件。 最后通过重定位机制和下载过程,将 .image 文件下载到目标板上运行。 由于无法保证目标板一次就可以运行编译、链接成功的程序,因此后期的调试排错工作就特别重要。 调试只能在运行态完成,因此在主机和目标板之间通过连接,由主机控制目标板上程序的运行,可达到调试内核或者嵌入式应用程序的目标。 基于交叉开发环境的嵌入式应用软件开发主要分如下 5个基本阶段:开发环境的建立、源代码编辑阶段、 交叉编译和链接、重定位和下载、联机调试。 开发环境的建立 按照发布的形式,交叉开发环境主要分为开放和商用 2种类型。 按照使用方式分,交叉开发工具主要分为使用 Makefile 和 IDE 开发环境 2种类型。 使用 Makefile 的开发环境需要编译 Makefile 来管理和控制项目的开发,可以自己手写,有时也可以使用一些自动化的工具。 新类型的开发环境一般有一个用户友好的 IDE 界面,方便管理和控制项目的开发,如 Code Warrior 等。 对交叉开发环境有了一定的了解后,就可根据开发需求选择一种开发环境进行代码编写。 编写程序 的第一件事就是要会写程序,即要先会程序的规划,将问题需求跟程序江苏技术师范学院毕业设计说明书(论文) 第 17 页 共 57 页 功能很明确地写下来,依据规划好的函数逐个写好。 源文件编译阶段 源程序的启动代码、硬件初始化代码要用汇编语言编写,这样可以发挥汇编语言短小精悍的优势,以提高代码的执行效率。 汇编语言编写完成后,代码转向 C语言的程序入口点,执行 C 语言代码。 C语言在开发软件时具有易模块化、易调试、易维护和易移植等优点,所以应用广泛,是目前嵌入式软件开发中最常用的语言。 编译 通常所说的编译程序能够把某一种语言的程序(称为源程序)转换成另一种语言程序语言(称为目标语 言程序),而后者与前者在逻辑上是等价的。 编译器主要负责的工作就是将源代码编译成特定的目标代码,顺便检查语法的错误,所产生的目标代码是不执行的,不过可从目标代码找出许多有用的信息。 现在目标代码有 2 大类: COFF(mon Object File Format)与 ELF( Extended Linker Format)。 在目标文件中规定了信息的组织方式,也即目标文件格式。 目标文件格式的规定是为了不同的供应商提供的开发工具(如编译器、汇编器和调试器)可以遵循很好的标准,以实现相互操作。 链接 一个程序想要 在内存中运行,除了编译之外,还要经过链接的步骤。 编译器只能在一个模块内部完成符号名到地址的转换工作,不同模块间的符号解析需要由链接器完成。 下载 下载就是把可执行映像文件烧写到 ROM 里。 但在烧写之前,应先将 BootLoader 先烧写到 ROM 中,在启动系统时 BootLoader 就可以管理系统操作。 当可执行的程序映像文件下载完成后,就可以打开电源运行系统。 调试 嵌入式系统的调试分为软件调试和硬件调试 2 种:软件调试是通过软件调试器调试嵌入式软件;硬件调试是通过仿真调试器完成调试过程。 由于嵌入式系统特殊 的开发环境,不可避免的是,调试是必然需要目标运行平台和调试器两方面的支持。 通常作为调试软件部分的调试器是被集成在安装在目标机上的嵌入式软件开发集成环境( IDE)中的,软件调试工具一般都具有 ISS 功能,即完成代码在无硬件调试环境下的模拟调试。 而由于真正的硬件运行环境与软件模拟环境有教大的差异, ISS 只能江苏技术师范学院毕业设计说明书(论文) 第 18 页 共 57 页 用于开发者编程练习或者软件的初步调试。 硬件调试器,可以获得比软件 功能强大得多的调试性能。 硬件调试器的原理一般是通过仿真硬件的真正执行过程,让开发者在调试过程中可时刻获得执行情况。 在本次的设计中我们主要用软 件调试方法。 利用 软件,它是一个使用方便的集成开发环境。 4. 2 嵌入式系统的程序设计方法 不同于基于 PC平台的程序开发,嵌入式系统的程序设计具有其自身的 特点,程序设计的方法也会因系统或因人而异,但其程序设计还是有其共同 的特点及规律的。 在编写嵌入式系统应用程序时,可采取如下几个步骤 : (1)明确所要解决的问题 :根据问题的要求,将软件分成若干个相对 独立的部分,并合理设计软件的总体结构。 (2)合理配置系统资源 :与基于 8位或 16位微控制器的系统相比较, 基于 32位微控制器的系统资源要丰富得多,但合理的资源配 置可最大限度 的发挥系统的硬件潜能,提高系统的性能。 对于一个特定的系统来说,其系 统资源,如 Flash. EEPROM, SDRAM、中断控制等,都是有限的,应合理 配置系统资源。 (3)程序的设计、调试与优化 :根据软件的总体结构编写程序,同时 采用各种调试手段,找出程序的各种语法和逻辑错误,最后应使各功能程序 模块化,缩短代码长度以节省存储空间并减少程序执行时间。 此外,由于嵌入式系统一般都应用在环境比较恶劣的场合,易受各种干 扰,从而影响到系统的可靠性,因此,应用程序的抗干扰技术也是必须考虑 的,这也是嵌入式系统应 用程序不同于其他应用程序的一个重要特点。 (一) 应用系统中的存储映射 在 ARM 体系结构中,系统复位后将跳转到地址 0x0 处执行,该处存放的是复位异常中断的中断向量。 对于嵌入式系统来说,在系统复位时 RAM 中是不存在代码和数据的。 因此在系统复位时,地址 0x0 处该为 ROM,即系统复位后应该首先从 ROM 中开始执行。 在 S3C44B0X 处理器的嵌入式系统开发中,也是通过存储控制器为片外存储器访问提供必要的控制信号,管理片外存储部件的。 图 41 为 S3C44B0X 复位后的存储器地址江苏技术师范学院毕业设计说明书(论文) 第 19 页 共 57 页 分配图。 从图可以看出: 特殊功能寄存器 位于 0x01C00000~0x020xx000 的 4MB 空间内 ; Bank0~Bank5 的起始地址和空间大小都是固定的 ; Bank6 的起始地址是固定的,空间可配置为 2/4/8/16/32MB; Bank7 的空间大小和 Bank6 一样是可变的,也可配置为 2/4/8/16/32MB。 图 41 S3C44B0X 复位后的存储器地址分配 因为相对于 ROM 来说, RAM 的数据宽度较大,速度较快,这会使系统响应异常中断的速度更快。 而且如果异常中断向量表放在 RAM 中,程序在运行过 程中程序可以修改中断向量表的内容,使得系统更为灵活。 (二) 系统初始化 尽管各种嵌入式系统结构以及功能相差很大,但其系统初始化部分完成的操作有很大一部分是相似的。 系统初始化程序通常也称为 Boot Loader,代码量虽少,但是作用非常大,相当于 PC 上的 BIOS,负责将操作系统内核固化到 Flash 中和系统初始化工作,然后将系统控制权交给操作系统。 ( 1)系统运行环境的初始化 对于嵌入式应用系统和具有操作系统支持的应用系统来说,相同运行环境初始化部江苏技术师范学院毕业设计说明书(论文) 第 20 页 共 57 页 分的工作是不同的。 对于有操作系统支持的应用系统来说,在 操作系统启动时将会初始化系统运行环境。 操作系统在加载应用程序后,将控制权转交到应用程序的 main()函数。 然后, C 运行时库中的 __main()初始化应用程序。 而对于嵌入式应用系统来说,由于没有操作系统的支持,存放在 ROM 中的代码必须进行所有的初始化工作。 系统运行环境的初始化主要包括以下内容: 初始化存储系统 如果系统中存在 MMU 或者 MPU,在进行下列操作时必须初始化好这些部件:使能 IRQ中断及 FIQ 中断、涉及到 RAM 的操作。 初始化数据指针 在 ARM 体系中,各种处理器模式都拥有其自己的数据栈。 初始化关键的 IO 设备 设置中断系统需要的 RAM 变量 使能异常中断 ( 2)应用程序的初始化 应用程序的初始化主要完成将己经初始化的数据搬运到可写的数据区,并 初始化要用到的 C程序的变量。 在系统初始化完成之后,程序将执行权交给主函数 main (),在 main()中 执行与系统功能相关的操作。 4. 3 本系统应用程序设计 4. 3. 1 系统软件部分设计构思 一个完整的测试系统必须要有一个操作简洁方便、质量高的软件系统来 支持。 对于一个硬件电路,配以不同的软件,所实现的功能也就不同,而且有些 硬件电路功能常可以用软件来实现。 研制一台便携式仪器,软件工作量 往往大于硬件,可以认为,便携式仪表的设计,很大程度上是软件的设计。 本系统软件设计思想是采用结构化设计方法中的模块化程序设计。 代码 使用 C语言来编写。 为了使程序易于编写与调试,也为了便于检验和维护, 总是设法把程序编写成一个个结构完整,相对独立的程序段。 这样一个程序段,可以看作一个可调用的子程序,即一个程序模块。 把整个程序按照“自顶向下”的设计来分块,一层层分下去,一直分到最下层的每一模块能容易 编写为止,即所谓模块化编程。 模块化编程有利于程序设计江苏技术师范学院毕业设计说明书(论文) 第 21 页 共 57 页 任务 的划分,例如,各种可编程接口,电路的初始化程序等等,都是一个个独立的模块,能被任意调用。 有利于大程序的搭建,也便于程序的修改。 程序设计一般采用“自顶向下”的方法。 这种方法在程序设计时的优点是明显的,但在具体编程时最好采用“自底向上”的方法,即从最低层的模 块开始编程,然后进行上层的模块编程,直至最后完成。 实践证明,这种方法可大大减少系统调试的难度,不易出现难以排除的故障或问题。 根据设计内容要求编写的主程序流程图如图 42所示: 否 是 图 42 主程序流程图 开 始 定义变量 分配系统空间确定工作频率 中断 /I/O 口 /通用异步收发器( UART)初始化 电机控制 延时 判断接受按键信号 结束 江苏技术师范学院毕业设计说明书(论文) 第 22 页 共 57 页 4. 3. 2 主要摸块软件设计 (一) 电机控制程序 本设计中选用四相永磁式步进电动机。 其工作原理是:转子由永久磁铁组成,利用其磁场与定子产生的磁场作用,产生转动力矩。 步进电机是一种利用电磁铁的作用原理将电脉冲信号转换为线位移或角位移的电机。 由于它是在外加电脉冲信号的作用下一步一步地运转的,因此它的运动形成是步进的,故称为步进 电机。 由于步进电机的角位移量和输入脉冲的个数成正比,在时间上与输入脉冲同。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。