ARM 数控系统高速处理串口数据的研究

发布者:WhisperingHeart最新更新时间:2012-11-26 来源: 21IC 关键字:ARM  数控系统  串口数据  LPC2292 手机看文章 扫描二维码
随时随地手机看文章

  一、 引言

  现代数控加工都是先采用 CAD/CAM 软件画出零件的加工草图,然后根据草图做适当的属性设置,生成G 代码,生成G 代码之后通过某种方式将G 代码传送给数控系统进行解释转化成实际的轴运动。但是由于实际生成的G 代码数据量相对于ARM 嵌入式数控系统存储资源而言很大,不可能将G代码全部传给ARM数控系统存储起来之后再一条一条来解释、加工,因此在数据传输的过程中应该有一个流量控制的问题。虽然PC 机G 代码到ARM 数控系统代码传送方式很多,但ARM 的串口相对而言,操作方便,因此本设计采用串口来传送数据。虽然串口方便操作,但是在数据传送过程中也存在一些问题,比如说,PC 机向ARM传送9 个数据,却只收到8 个,如果数据传送的很大,就会丢失的更多,并且如果数据量大,就需要传送的波特率大,但是波特率大不仅会使数据产生遗漏,而且会使传送过来的G 代码得不到数控系统的及时处理,如果波特率太低,传送的时间肯定会很长,降低了加工效率。

  出现这么多问题是什么原因呢,经过分析,提出一种方法,能够保证数据正确的情况下提高数据传输速度和数控系统代码处理能力。以 LPC 系列为主的32 位ARM 控制器具有速度快,容量大,性能稳定,在线调试方便等优点,ARM 作为智能控制器应用于工业控制领域具有广阔的前景。ARM 在工控领域的应用中,与上位机软件进行数据传输和处理是经常需要解决的问题。

  二、ARM 串口初始化设置及中断服务程序

  LPC2292 处理器有两个串口,每个串口有16 字节接收FIFO 和16 字节发送FIFO,寄存器位置符合I6C550 工业标准,接收器FIFO 触发点可以设置成为1、4、8、14 字节触发,内置波特率发生器。有四种中断:数据可用中断,字符接受超时中断,THRE 中断,Rx 线状态中断。串口在进行数据接受的时候,设计了一个缓冲队列用来存储接收到的数据。

  (1)数据缓存队列数据结构设计


  其中QUEUE_DATA_TYPE 代表传输的数据类型,每当有数据从串口传入ARM的时候,通过In 指针使数据入队列,有数据需要处理的时候,利用Out 指针来出队列,至于队列大小,要根据波特率的大小、串口中断频率等因素决定。还需要实现两个函数 uint8 QueueWrite(void *Buf, QUEUE_DATA_TYPE Data),和uint8QueueReadQUEUE_DATA_TYPE *Ret, void *Buf),主要是用来往数据队列里写数据和从数据队列里取数据,采用的是先进先出(FIFO)的方式.

  (2)串口初始化程序:


  U0IER = 0x05; /* 允许接收和发送中断 */

  }

  (3)中断服务程序

  中断处理函数具体实现

  1.数据可用中断处理

  For(i=0;i<8;i++) //因为串口初始化是8 字节中断

  {QueueWrite (Buf,UARBR); }

  2.数据超时中断处理:

  While(1)

  {

  If (UALSR&0x00000001= =1)

  {QueueWrite (Buf,UARBR);}

  Else Break;

  }[page]

  3.理论上可以屏蔽THRE 中断,但是同样也可以处理中断,处理方法是往FIFO 中填充数据

  For(i=0;i<16;i++)

  {

  QUEUE_DATA_TYPE data;

  QueueRead(&data, Buf)

  U0THR = data;

  }

  4.同样线中断也可以屏蔽,当然也可以处理,处理的方法只需要读U0TSR 寄存器Data=U0TSR;

  中断服务程序中处理了超时中断,因此设置串口中断触发字节可以设置的大些,这样可以保证数据不会丢失,同时减少系统中断次数,减小系统负荷,提高处理器的处理速度。


  图 1 中断服务程序流程图

  三、上位机软件和ARM 串口数据传送软件设计

  ARM 系统中开辟了一个串口数据接收队列缓存区,因此就要求上位机串口发送软件能够配合ARM 处理能力对数据发送进行流量控制。


  图2 上位机软件和ARM 数据传送流程图

  程序中NUM 表示文件的总字符数,在开始传送代码数据的时候作为开始发送文件的一个信号传送给ARM,同时作为文件传送结束判断依据。SUM 表示代码已经传送的字符数。其初始化值为0。

  四、结论:

  串口设置为:波特率 115200,8位数据位,1为停止位,无奇偶校验,无流控制。通过串口调试助手,选择发送文件,发送PC机上CAM 软件CAXA 制造工程师生成的加工文件(大小182K)。通过串口发送给ARM 数控系统处理,系统能够很好的保证ARM 数控系统正确处理G 代码的情况下,高速传送G 代码数据。

  测试表明:数控系统的大量G 代码可以很好的完成加工,并且已经应用到了数控系统设计当中,实践检验该方法可以提高数控系统的加工效率。

关键字:ARM  数控系统  串口数据  LPC2292 引用地址:ARM 数控系统高速处理串口数据的研究

上一篇:基于I²C和双ARM的PCB钻床控制器设计
下一篇:基于ARM9处理器的嵌人式音频系统设计

推荐阅读最新更新时间:2024-03-16 13:14

ARM9 2410移植之ARM中断原理, 中断嵌套的误区,中断号的怎么来的
几天前一个学生问我ARM中断嵌套的问题,我才发现原在我心中理所当然的事对学生来说理解实属不易。 ARM有七种模式,我们这里只讨论SVC、IRQ和FIQ模式。 我们可以假设ARM核心有两根中断引脚(实际上是看不见的),一根叫 irq pin, 一根叫fiq pin. 在ARM的cpsr中,有一个I位和一个F位,分别用来禁止IRQ和FIQ的。 先不说中断控制器,只说ARM核心。正常情况下,ARM核都只是机械地随着pc的指示去做事情,当CPSR中的I和F位为1的时候,IRQ和FIQ全部处 于禁止状态。无论你在irq pin和fiq pin上面发什么样的中断信号,ARM是不会理你的,你根本不能打断他,因为他耳聋了,眼也瞎了
[单片机]
Turbo PMAC面向复杂运动数控系统的开放特性研究
1 引言   目前,比较现实的实现开放式数控系统的途径是“PC +多轴控制器”,在这种结构中, PC机处理非实时部分,实时控制部分由多轴控制器来承担,形成多级分布式控制模式。这样架构出来的数控系统既具有前端PC机的柔性,又具有专用CNC系统的稳定性和可靠性。在国内市场上, 性能价格比较高的当属基于PMAC ( Programable Multi2axes Controller)多轴运动控制器的开放式 控制系统 。由于PMAC多轴运动控制器优异的轨迹跟踪能力和精度,在很多高性能的数控系统和研究项目中选用它构建开放式 控制系统 。   Turbo PMAC多轴运动控制器是PAMC系列的升级版本,保持了PMAC的优良性能,其特有的开放
[嵌入式]
为了收购Arm,英伟达提出了新方案
按照管理,监管机构通常会试图阻止相互竞争的公司之间的合并,但他们现在对相互竞争的公司之间的垂直整合也高度关注。 最新的案例是联邦贸易委员(FTC:Federal Trade Commission)会如何处理芯片制造商英伟达对移动设备芯片IP设计商 Arm Holdings 的有争议收购。在该机构上周起诉阻止该交易之前,两家公司提出和解此案。Nvidia 不与 Arm 竞争,但这笔交易一直面临着许多与 Nvidia 竞争的 Arm 客户的强烈反对。因此,据参与审查过程的人士称,尽管 FTC 诉讼的发生速度比公司预期的要快得多,但世界各地的监管机构一直在搁置该交易以进行广泛审查。 英伟达提议成立一家独立的公司来授权 Arm 的
[半导体设计/制造]
ARM9硬件接口学习之UART
  在没有引入UART之前,由于没有OS,我们写程序烧到开发板内执行后,并不能在程序的运行过程中打印一些提示信息告诉我们程序究竟运行了如何或者提供接口让用户去控制程序的运行路径,最后也只能通过物理现象去判断程序是否执行成功。   使用串口我们便可以实现开发板最基本的数据的发送和接收,实现同开发板的交互,控制程序的运行,并且在程序运行中打印出一些信息进行debug。实际上bootloader和kernel的控制台(nfs模式)都是通过uart实现的。由此我们可以发现uart在实际开发中是非常重要的。   1. s3c2410串口基础   S3C2410A UART详细的规格说明请参考s3c2410的datasheet。   1
[单片机]
解决STM32在MDK-ARM(KEIL)编译时出现 已停止工作
若是关闭对话框还可继续编译,只是到最后linking时显示一个error,提示 ..OBJXXX.axf: error: L6002U: Could not open file ..objXXX.o: No such file or directory ..OBJtest.axf - 1 Error(s), 0 Warning(s). 从网上查到很多相同问题,但是回答者都是简简单单说几句是什么原因就走了...这就是大神的通病吧,忙活自己的事去了... 解决: 1、右键我的电脑-管理-本地用户和组-用户 把里面你的中文用户名改成英文。 2、右键我的电脑-属性 右下-计算机名称、域和工作组设置-更改设置 改成
[单片机]
解决STM32在MDK-<font color='red'>ARM</font>(KEIL)编译时出现 已停止工作
IBM、特许及三星45纳米通用平台技术采用ARM开发低功耗、高效能的组件库
       拓展合作关系,为客户先进的 SoC 设计与        半导体制造解决方案带来上市时程的优势   ARM 正式宣布 IBM 、特许半导体及三星电子等三家通用平台技术合作伙伴,获 得 ARM Artisan 实体 IP 系列产品中的 Metro 低功耗与 Advantage 高效能产品的授权,以支持技术联盟的 45 纳米( nanometer, nm )低 功耗( low power, LP )制程技术。此项 ARM 组件库的授权协议扩展四家公司的合作 关系,确保晶圆厂客户获得系统单芯片( System-on-chip, SoC )设计的兼容性与 制造弹性。 ARM 不久之前才宣布与 IBM 、特许及三
[焦点新闻]
基于ARM的非接触式安全驾驶预警系统方案设计
  0引言   随着居民汽车拥有量的逐年增加以及人们生活节奏的加快,因疲劳驾驶导致的交通事故数也逐年增加。全世界每年因交通事故而导致的死亡人数达60万,直接经济损失约125亿美元,这些事故中57%的灾难性事故与驾驶员疲劳驾驶有关。因此,研究和开发一套非接触式疲劳驾驶监测系统有着非常大的社会现实意义。   1系统硬件设计   本预警系统主要由微控制器、图像数据采集模块、 LED 预警模块、通信接口以及 电源模块 五大部分组成,如图1所示。根据处理速度和精度的要求,采用32位 ARM 处理器。为了减小对驾驶员的影响,更好地实现非接触式,本文选用了300万像素的 CMOS 摄像头OV3640模块,与CCD相比,CMOS具有灵敏度高、分辨率
[单片机]
基于<font color='red'>ARM</font>的非接触式安全驾驶预警系统方案设计
基于ARM微处理器的机载语音告警系统设计
飞机语音告警系统是新型飞机必备的一种机载设备,其作用是将飞机当前的工作状态、危险状况或者通过数据链获取的作战任务命令,实时以语音方式告知飞行员。 在飞机飞行过程中飞行员一般是通过安装在座舱里的操作台、仪表和告警信号灯来了解飞机各个系统的工作状态。由于飞行员在飞行时为完成相应的飞行任务,注意 力高度集中在飞行高度、速度和雷达参数等数据信息上,对飞机故障信息的注意力要相对弱一些,这样就会出现飞行员不能及时地对故障采取措施,从而导致严重的 飞行事故。同时,目前大多数新研制或改装的飞机都有数据链系统,许多作战任务命令不再单纯依靠地面指挥人员或长机的语音传达,可通过数据链或根据战场态势 产生,并及时告知飞行员,因此,针对某新型飞机的研制要
[单片机]
基于<font color='red'>ARM</font>微处理器的机载语音告警系统设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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