摘要:绣花机控制系统作为绣花机最核心的部分,是提高性能和降低成本的关键。本文按照 嵌入式系统的开发过程,首先研究了绣花机控制系统的硬件框架,详细设计了电源电路、复 位电路、存储器接口电路、键盘与显示电路、USB 接口电路等电路。然后按照上位机和下 位机的结构层次,构建了绣花机控制系统的软件框架,对键盘输入、图形显示、USB 驱动、 花样存储与管理、串口通信等具体模块进行了软件设计。这样可设计出一套基于 ARM 的技 术先进、功能精简、高性价比的绣花机控制系统。
关键词:绣花机控制系统;嵌入式系统;ARM
随着全自动绣花机的不断发展,机械方面的改进对机器的性能改善已经没有太大的效果。因而,控制系统就成为了绣花机提高性能和降低成本的关键,也是各大绣花机厂商的竞 争重点[1,2]。控制系统的硬件决定了整个系统的可靠性和稳定性,硬件质量的好坏除了 CPU 芯片之外,外围芯片的选择和电路的设计也起着至关重要的作用。而控制系统所有的功能都 需要通过软件来实现,软件的设计对于将来系统的稳定运行至关重要。
由于市场上绝大部分微处理器芯片都是以 ARM 为基础[3],本文研究了基于 ARM 的绣 花机控制系统的软硬件设计。首先在 LH7A404 和 LPC2214 的基础上确定了绣花机控制系统的硬件框架,详细设计了电源电路、复位电路、存储器接口电路、键盘与显示电路等具体电 路以及接口;然后按照上位机和下位机的层次构建了绣花机控制系统的软件框架,对键盘输入、图形显示、USB 驱动、花样存储与管理、串口通信等具体模块的软件进行了设计。
1 控制系统软硬件框架
根据绣花机系统的模块划分和系统架构,硬件可以分为上位机和下位机系统,两者通过串行接口进行实时通信,分别围绕 LH7A404 和 LPC2214 两个 CPU 进行设计。硬件框架如图 1 所示,LH7A404 作为上层 CPU 负责输入输出接口和花样存储系统,LPC2214 作为下层 CPU 负责绣花机机械动作的控制。其中电源电路和复位电路为两个 CPU 共用。
图 1 绣花机控制系统硬件框架
控制系统的软件部分的设计也依据此结构划分层次,上位机系统包括键盘输入、图形显 示、USB 驱动、花样存储与管理,下位机系统即为机电控制模块,包括机电控制系统和机 电执行系统。软件框架如图 2 所示。
图 2 绣花机控制系统软件框架
2 控制系统硬件设计
2.1 电源电路
开关电源系统提供 5V 和 12V 两套电源,5V 电源用于驱动各 I/O 口,12V 电源直接作为机电和底层设备的驱动电源。由于整个系统控制电路的工作电压并不都是 5V 和 12V,需 要对 5V 电源进行 DC-DC 转换,因此本文采用 TI 公司的 TPS54310PWP 电压转换芯片将 5V 电源转换成 3.3V/3A 的电源,用于给 CPU 及其外围电路供电。另外,系统 CPU 内核需要1.8V 的电压供给,且消耗电流的极限不超过 200mA,为保证可靠性并留下一定余量,1.8V 的电源系统提供的电流应不小于 0.5A。备份电池用于断电时给 SRAM 供电,以便及时备份 数据,需要 3.9V/0.5A 的电源供给。
2.2 复位电路
复位电路主要实现系统上电复位、手动复位和电源监控三个功能。系统上电时 CPU 状态不稳定,需要有一个复位逻辑将其初始化为某个确定的状态;系统运行过程中,程序可能“跑飞”或进入死循环,这时需要强行对系统手动复位;电源系统的可靠性直接影响到控制 系统的稳定性,需要有一个监控电路来监控电源的变化。
2.3 存储器接口电路
数据存储器分为动态存储器和静态存储器两种。本控制系统中应用了同步动态存储器(SDRAM)和双口静态存储器(SRAM)。SDRAM 成本低廉,容量大,应用比较广泛,在 上位机系统的设计中根据 LH7A404 存储器接口的特点选用 Micron Technology 公司的 MT48LC16M16GT-75 作为设计基础。双口静态存储器 SRAM 成本较高、容量较小,但具有 存取速度快、接口简单、掉电后保存数据的优点。根据 LPC2214 的接口特点,设计中选用
ISSI 公司的 IS61LV25616AL 芯片,具有 512KB 的容量。 程序存储器用于存储启动代码、操作系统、应用程序和部分重要数据。考虑到系统的软件升级和数据擦写,选择 FLASH 存储器,它具有低功耗、大容量、擦写速度快、可整片或 分扇区在线编程(烧写)和擦除等特点。在上位机和下位机系统的设计中,选用 INTEL 公 司的 3V StrataFlashTM 存储器 E28F128J3,其单片容量可达 16MB,有 128 个 128K 字节可擦除块,每个数据块 100000 个擦除周期。
2.4 键盘与显示电路
键盘是系统操作的输入设备,用于输入数字参数和控制命令。本控制系统的按键总共有36 个,采用矩阵式结构。ROW1~ROW6 和 COL1~COL7 分别为 6 行和 7 列按键的接口。将 行线 ROW1~ROW6 设为输出,输出值设为 0,列线 COL1~COL7 设为输入,在每一行和每 一列的交叉点放置一个按键,每个按键就是一个瞬时接触开关,AT89C2051 通过这些接口 按照一定的频率对键盘进行定时扫描。uP_KMIDAT 和 uP_KMICLK 为 PS2 键盘接口。
显示器是系统的输出设备,用于反馈系统的运行状态,并给用户以直观信息,用户可以 根据提示进行相应的操作。本控制系统采用 LCD 显示屏,没有驱动电路,需要设计驱动电路与之配合使用。设计中所选的液晶显示屏是 SHARP 公司的 5.7 寸显示屏 LQ057Q3DC12I, 其供电要求是 3.0V~3.6V,需将芯片接上 3.3V 的电压。
3 控制系统软件设计
3.1 键盘输入程序
键盘输入模块的工作任务包括键盘扫描、键盘驱动和键盘处理。键盘扫描获得按键的扫描码,键盘驱动接收扫描码并对其进行处理,将处理后的数据送至应用程序,应用程序获得键值信息后对信息进行处理,实现按键功能。
键盘采用循环扫描方式,按照设定的扫描频率对键盘输入进行检测。系统创建一个扫 描任务,当检测到合法按键之后就将该按键扫描码写入消息发送给其他任务,通知系统某键 被按下,被按键的扫描码通常放置在一个缓冲区内,直到该应用程序准备处理一个按键为止。键盘驱动由 VxWorks 操作系统的一个可选组件——多媒体库 WindML 提供[4],包括下 层驱动和上层驱动。下层驱动负责驱动设备控制器并向上层驱动传送设备的原始数据,它是 作为 I/O 驱动来实现的,被设置在系统内核。上层驱动接收来自下层驱动的设备原始数据,并进行解释处理,将其打包成一个输入事件信息,然后将该信息发送至驱动接口。 应用程序通过驱动获得键盘的状态之后,根据从缓冲区读出的键值,按照键盘的预定义对各控制模块的组态信息进行设置,以执行相应的功能。
3.2 图形显示程序
进行图形界面(GUI)的设计同样需要加载多媒体库 WindML,WindML 支持多线程和多任务,但图形的资源是一定的,为了防止多线程之间产生资源冲突,需要使用互斥信号量锁定资源。在使用一组绘图函数前,用 uglBatchStart(gc)通过互斥信号量锁定图形上下文, 图形设备及缓冲,并隐藏光标。绘图操作完成后,再用 uglBatchEnd(gc)释放被锁定的资源, 以被其他的绘图函数使用。以下根据 WindML 的编程流程,以绘制直线为例给出一个绘图 操作的程序:
{
UGL_GC_ID gc;
......
uglInitialize(); // 初始化
......
uglColorAlloc(devId, &colorTable[GREEN].rgbColor, UGL_NULL,
&colorTable[GREEN].uglColor, 1); // 配置颜色
......
gc= uglGcCreate(devId); // 创建图形上下文
......
uglBatchStart(gc); // 锁定图形资源
uglForegroundColorSet(gc, colorTable[WHITE].uglColor); // 设置前景色 uglBackgroundColorSet(gc, colorTable[RED].uglColor); // 设置背景色 uglLineWidethSet(gc, 9); // 设定线宽
uglLine(gc, 50); // 绘制直线
uglBatchEnd(gc); // 释放图形资源
......
}
3.3 USB 驱动程序
VxWorks 操作系统的 USB 驱动模块由四层组成:USB Client 模块、USB 主驱动、USB主控制器驱动、USB 主控制器。最低层是 USB 主控制器(USB Host Controller),这是主系 统中控制每一个 USB 设备的硬件部分。对于每个主控制器都需要开发 USB 主控制器驱动程 序(HCD),HCD 对主控制器芯片进行了抽象,为上层软件屏蔽底层硬件之间的差异。USB 主驱动(USBD)和 HCD 之间的接口允许一个或多个底层主控制器。Wind River 的 USBD 能够同时连接多个 HCD。
USBD 是在 HCD 之上的独立于硬件的模块,它通过提供一组抽象的服务简化了程序员对上层 USB Client 模块的开发工作,即为 HCD 和 USB Client 两个模块之间的请求和相应提 供统一的标准接口。USB Client 模块位于结构图最上层,属于应用程序,根据具体应用的不 同,其内容和功能也不同,但都要实现与 USBD 的接口,对由 HCD 监测到并由 USBD 传送 给上层应用程序的 USB 标准要求作出适当的响应。
3.4 花样存储与管理程序
在花样存储系统中,花样文件是以一定的格式存入到系统内存的,所以文件的格式关系到系统能否识别花样。目前刺绣生产实际中流行的花样文件格式有四种:DST 格式、DSB格式、T01 格式和 T03 格式。
当不同格式的花样文件被读入到 FLASH 之后,需要对它们进行解析,转换成内部格式 的数据结构,同时对花样数据进行各种运算和处理,包括旋转、放大缩小、拉伸、镜像等。 花样处理过程就是系统调用接口函数实现处理任务。
3.5 串口通信程序
由于串口传输涉及到上位机 CPU 和下位机 CPU 之间的通信,因此作出命名约定:上位机 CPU 称为“左”侧,代码存放在以 left_*开头的文件中,下位机 CPU 称为“右”侧,代 码存放在以 right_*开头的文件中。串口模块结构大体可分为控制层、传输层和驱动程序, 串口传输层的作用在于向上层系统提供透明而高效的传输接口,用于两个 CPU 之间的数据 交互。
4 结语
本文根据 ARM 处理器的选型原则,选择 LH7A404 和 LPC2214 为上下位机 CPU 芯片;将绣花机控制系统的硬件分为上位机和下位机两部分,在全面考虑系统功能需求的基础上,围绕已选定的上下位机 CPU 确定了硬件框架。详细设计了电源电路、复位电路、存储器接 口电路、键盘与显示电路等具体电路。然后按照上位机和下位机的层次构建了绣花机控制系 统的软件框架,以 VxWorks 操作系统为平台,在 Tornado 开发环境下设计了键盘输入、图形显示、USB 驱动、花样存储与管理等模块程序。
本文作者创新点:将基于 ARM 嵌入式系统技术引入绣花机控制系统,详细设计了绣花机控制系统的软硬件系统,具有技术先进、功能精简、高性价比等特点。