基于STR710F的数据采集系统的实现
2012-09-04过怡
过 怡
(苏州市职业大学 计算机工程系,江苏 苏州 215104)
基于STR710F的数据采集系统的实现
过 怡
(苏州市职业大学 计算机工程系,江苏 苏州 215104)
针对固定资产随着企业生产经营经常变化,其价值、存放地点等动态性的特点,结合嵌入式技术的发展,提出一种基于ARM7(STR710F微控制器)的快速有效的资产数据的采集方案,并完成了基于ARM7(STR710F)的条形码数据采集系统的设计与软件实现.
STR710F;条形码;数据采集
企业资产管理(enterprise asset management ,EAM)是现代企业管理系统的重要组成部分,在企业的生产建设中发挥着重要的作用.随着现代企业规模的不断扩大,资产管理呈现分布式发展的趋势,即中心机房和物资仓库分布在城市的不同区域.固定资产随着企业生产经营经常变化,其价值、存放地点等是动态的,其管理表现为固定资产的增值、减值、调拨、租赁、转让、拆除、重组、报废等大量的、频繁的日常业务[1].本系统采集条形码保证了资产信息的唯一性,采用ARM7的控制器提高了执行速度,便携式的设计便于操作使用,有利于提高企业资产动态数据采集、存储和传输的效率.结合嵌入式技术的发展,提出了一种基于STR710F微控制器的快速有效的资产数据采集方案,并完成了基于ARM7(STR710F)的条形码数据采集系统的设计与软件实现.本系统分为三大模块:条形码扫描与串行传输模块;液晶显示模块;按键输入模块.
1 系统的总体设计
本系统开发的软硬件环境为:Embest ST DV710B开发板,EmbestIDE 软件集成开发环境,Embest JTAG仿真器,ST公司提供的软件库,串行口扫描枪.
1.1 系统的硬件结构
以ST公司的ST710F微处理器为核心,使用串行接口采集条形码信息,LCD显示工作模式及扫描数据,按键选择工作模式,外置FLASH存储信息.硬件结构如图1所示.
1.2 系统的软件结构
本系统的软件设计主要包括系统的初始化、主程序、条形码扫描模块、按键输入模块、LCD显示模块、FLASH存储模块.系统软件结构如图2所示.
图1 系统硬件结构
图2 系统软件结构
2 系统各软件模块的实现
2.1 系统初始化模块的设计
嵌入式系统上电或复位后首先运行的程序被称为启动代码即BootLoader,通常负责初始化底层硬件设备、建立内存空间映射关系、基本系统检测、加载操作系统内核等重要工作,为操作系统或者用户应用程序的运行提供良好的运行环境[2].依赖于CPU的体系结构和开发板实现,与硬件密切相关,同一款ARM内核,集成不同片内外设的处理器,BootLoader不同,同一款处理器用于不同的开发板BootLoader.BootLoader的开发通常分为两个阶段,依赖于CPU体系结构的代码,比如CPU和开发板上必备设备(内存、中断控制器、堆栈等)初始化代码等,通常都放在第一个阶段,使用汇编语言来实现,以达到短小精悍的目的.初始化板极硬件设备(串口、网口、LED 等),引导加载内核通常放在第二阶段,使用C语言来实现,以实现较复杂的功能,而且代码会具有更好的可读性和可移植性.本系统的主要功能是数据采集和存储,无需进程管理、设备管理和文件管理,不加载嵌入式操作系统,因此,本系统BootLoader只需第一阶段,执行功能为:
1) 设置系统中断和异常向量;
2) 初始化堆栈指针.为处理器的每个工作模式设置独立的堆栈空间;
3) 初始化所有外围设备;
4) 如需使用片外RAM,则初始化外部存储器接口EMI的BANK1;
5) 初始化增强中断控制器EIC;
6) 存储器地址的重映射.将SRAM地址映射为0X00000000H;
7) 全局变量初始化.将已赋初始值的全局变量从FLASH中复制到SRAM中;
8) 数据区准备.为未赋初始值的全局变量分配SRAM空间并清零;
9) 使能中断;
10) 改变处理器工作模式和状态;
11) 调用系统主程序.
STR710F系列微控制器有三种启动模式:FLASH启动、RAM启动、外部存储器启动.通过配置3个输入引脚BOOTEN、BOOT1、BOOT0的使能,无论采用何种启动模式,微控制器都能将RAM或FLASH中的BootLoader映射到0X00000000H的启动引导存储器中,使系统顺利运行.在Embest ST DV710B开发板上提供跳线JP4、JP5、JP6来实现模式切换.
2.2 系统主程序设计
系统的主程序主要实现流程控制和各模块的调用.首先上电启动,执行系统初始化模块即BootLoader,对系统硬件进行初始化,在完成上述工作后,BootLoader将系统引导进入主程序Main.主程序首先初始化需使用的各设备,包括串行口、LCD、GPIO口.然后在LCD上显示提示信息,等待用户按键输入,根据用户按键进入二种工作方式.键一,则处于等待扫描模式,串行中断使能,将每次扫描的数据显示在LCD液晶屏上,并暂存在SRAM中;键二,则处于FLASH存储模式,将SRAM中的数据写入片外FLASH中,此时,串行口被关闭.
2.3 按键输入模块的设计
本系统的工作方式是由用户的按键输入决定的,在开发板上,通过设置GPIO(通用输入输出端口)口获得用户的按键值.
2.3.1 通用输入输出端口的工作原理
STR710FZ2微控制器有3个16位的多功能可编程双向通用I/O端口,每一位可独立设置工作模式,每个I/O口由3个16位的配置寄存器(PC0、PC1、PC2)和1个16位数据寄存器(PD)进行编程控制[3].端口的每一位可以根据PC0、PC1、PC2第N位的不同组合设置为8种不同的工作模式.
用户读写操作通过读写数据寄存器PD完成,当向数据寄存器中写入数据时,数据将被放入输出锁存器中,当从数据寄存器中读出数据时,会从输入锁存器中读取数据.因此,数据寄存器提供了用户读写I/O端口的接口.在STR710FZ2微控制器中I/O寄存器通过APB2总线与ARM内核通信,IO0的基地址为0XE0003000H,IO1的基地址为0XE0004000H,IO3的基地址为0XE0004000H,PC0、PC1、PC2和PD的地址偏移量为00H,04H,08H,0CH.在开发板上通过IO2读取按键值.
2.3.2 模块功能实现
在开发板上共提供7个按键,其中有2个特殊功能键:开发板复位键RESET和系统唤醒键WAKEUP,其余5个用以接收用户输入信息,分别与GPIO2的引脚7、9、11、13、15相连.本模块只使用了键一(K1)、键二(K2).系统输入模块只需调用配置函数GPIO_Config配置端口GPIO2的对应位,然后调用GPIO2读取函数即可获得按键信息.开发板附带的软件库提供的按键函数如下:
void Key_Init(void);//通过调用GPIO_Config配置GPIO2控制按键的相应位
int Key_GetAll(void);// 通过调用GPIO_WordRead读取GPIO2中对应按键的所有位
int Key_State(int index//);通过调用GPIO_WordRead读取GPIO2中对应某一个按键的某一位
当某个键被按下,则GPIO2中对应位为0,否则为1,3个按键对应的编号为0,1,2.因此,判断按键只需判断Key_State的返回值为1或0即可.
2.4 液晶显示模块的设计
本模块的功能为:在系统进入运行状态时显示提示信息,当用户有按键输入时显示当前选择的工作模式及扫描的条码数据.开发板使用2*16的RT1602C液晶字符显示模块显示英文字符的提示信息.
2.4.1 LCD的工作原理
STR710FZ2微控制器没有独立的LCD控制器.采用RT1602C液晶字符显示模块实现显示功能,其接口功能如表1所示[4]:
RT1602C液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,包含字符有:阿拉伯数字、大小写英文字母、常用符号、日文假名等,每一个字符都有一个固定的代码,显示时模块把对应代码的点阵字符图形显示出来即可.
RT1602C液晶模块的命令寄存器和数据寄存器被作为外部存储器的一部分,STR710FZ2微控制器外部存储器空间分为4个Bank,由外部存储器接口EMI管理,地址范围从0X60000000H至0X6C000000H,其中,LCD命令寄存器使用0X66000000H,LCD数据寄存器使用0X6600EFFFH,位于Bank3中[5].通过配置外部存储器接口EMI设置位于Bank3中寄存器的工作方式,EMI有4个配置寄存器用以配置对应的4个Bank.
表1 1602引脚功能
2.4.2 模块功能实现
本模块主要调用ST提供的库函数实现:
1) 调用LCD_Init函数,配置Bank3工作方式,配置GPIO2的引脚0-3为复用模式,配置LCD命令寄存器,实现初始化工作.
2) 调用LCD_GoTo函数设置显示位置为第1行第0列.共能显示2行16列,行号为0、1,列号为0-15.
3) 调用LCD_Puts函数现实提示字符串,由于RT1602C液晶模块自带有英文大小写的点阵字符图形,只需给出它们的代码ASCII即可.
2.5 条形码扫描模块的设计
将条形码扫描枪采集的每条数据以字符串的形式保存在SRAM的数组中.
2.5.1 条形码格式分析
条形码是由一组规则排列的条、空以及对应的字符组成的标记,“条”指对光线反射率较低的部分,“空”指对光线反射率较高的部分,这些条和空组成的数据表达一定的信息,并能够用特定的设备识读,转换成与计算机兼容的二进制和十进制信息.每个物品的条形码都是唯一的.码制即指条形码条和空的排列规则,常用的一维码的码制包括:EAN码、39码、交叉25码、UPC码、128码、93码,及Codabar(库德巴码)等[6].
通常一个完整的条码是由两侧静空区、起始码、资料码、检查码、终止码组成,以一维条码而言,完整的条形码格式排列方式[7]通常为:
在企业内部采用39码对资产进行统一编码,最大条码长度不超过20个字符.本系统在采集资产条形码时,将去掉起始码和终止码,只保留有效信息.
2.5.2 串行口的工作原理
STR710FZ2微控制器集成有4个异步串行接口(UART),实现与外部设备的全双工异步通信.数据帧的长度可以为8位或者9位.可以通过编程配置数据帧的长度、奇偶校验位数、停止位数.数据传输可采用双缓冲模式或者使用深度为16的FIFO.16位的波特率发生器为传输提供独立的串行时钟信号.
2.5.3 模块功能实现
本系统采用UART0进行条形码数据的传输,STR710FZ2微控制器使用GPIO0的Pin143、Pin144作为UART0的数据接收引脚和发送引脚.因此,在UART0开始传输之前需配置GPIO0这两个引脚的工作模式.
STR710FZ2微控制器片内设备有多个时钟域,分别为:主时钟MLCK,包括CPU和存储器;外设时钟PCLK1,包括APB1外设,UART部件属于APB1外设;外设时钟PCLK2,包括APB2外设.因此,在UART0开始传输之前需合理地配置外设时钟才能保障正确的传输.
条形码扫描枪每扫描一个条码,将产生一个UART0的IRQ中断,在STR710FZ2微控制器中由增强型中断控制器(EIC)实现对32个可屏蔽中断通道的硬件处理、中断优先级决策和中断向量计算.因此,在UART0开始传输之前需配置EIC.由于资产编号采用39码,长度不超过20个字符,以*作为起始码和终止码,每次扫描的设备数目不超过100台,系统采用全局字符数组tiaomaBuf[2000]用以保存每次扫描的条码数据,并初始化为字符*.UART0的IRQ中断服务程序负责接收条码数据,去除起始码和终止码,在条码数据尾部增加结束符 .
UART0采用双缓冲模式,与条形码扫描枪通信标准为:1位起始位,8位数据位,1位停止位,无奇偶校验位,波特率为9 600.
条码数据接收模块流程如图3所示.
2.6 FLASH存储模块的设计
2.6.1 FLASH的工作原理
开发板上使用了一片容量1M×16位的NOR Flash SST39VF160扩展存储空间,由于片内FLASH空间有限,本系统采用该FLASH实现条形码数据的存储.
SST39VF160写、擦除操作的说明:
1) 写操作以一个字接一个字的方式进行.在写入前,扇区中如果有数据0,则必须进行充分地擦除.
2) 允许系统执行连续的扇区擦除和块擦除.扇区统一为2 kB,块统一为32 kB.同时还提供了整片擦除功能.
2.6.2 条形码扫描数据的烧写
本模块使用ST提供的FLASH烧写函数将条形码扫描数据烧写到片外的FLASH SST39VF160上.片外的FLASH由外部存储器接口EMI连接至系统,只需发送相关写命令即可,烧写步骤:首先调用ExtFlash_BlockErase函数擦除起始块,地址从0X60000000H开始,然后调用 ExtFlash_Program函数将3个区烧写到FLASH中.
3 结论
资产管理在企业的正常运作中发挥着重要的作用,现有大中型企业通常都具有一套资产管理的数据库系统,用于掌握企业内部资产的分布、价值、运行状况等.此类系统的特点是对已有数据库中资产数据的集中管理,但对于数据的采集和分布式管理存在缺陷.本系统针对此类问题,设计开发了用于各个部门的便携式条形码资产采集终端系统,作为企业资产管理系统的有利扩充,对于提高资产管理的效率具有一定的意义.后续还要在采集终端设备上进一步完善文件系统、USB传输模块,使本采集系统可以与目前普遍采用的资产管理系统相通,推广数据采集系统的使用.
[1]韩应战. 浅谈现阶段企业固定资产管理[J]. 设备管理与维修,2005(4):12-14.
[2]陈渝,李明,杨晔. 源码开放的嵌入式系统软件分析与实践[M]. 北京:北京航空航天大学出版社,2004:136-138.
[3]UM0084 Reference manual.STR71xF Microcontroller Family User Manual[EB/OL].(2006-02-27)[2008-06-10].http://www.st.com/stonline/books/pdf/docs/10352.pdf.
[4]佚名. RT1602C型字符型液晶显示模块[EB/OL].(2006-03-05)[2007-05-10].http://home.mlyhs.com/show.aspx?id=306&cid=5.
[5]Silicon Storage Technology,Inc. AN1775 APPLICATION NOTE STR71x Hardware Development Getting Started[EB/OL].(2006-02-27)[2008-06-10].http://www.st.com/stonline/books/pdf/docs/10332.pdf.
[6]希创公司. 一维条码技术[EB/OL].(2006-02-10)[2007-05-07]. http://www.china-barcode.cn/post/yiweitiaoma.html.
[7]希创公司. 条码基础教程(1)——基础篇[EB/OL].(2006-03-01)[2007-05-12].http://www.wjbarcode.com/tmzsl.htm.
Implementation of STR710F-Based Data Collection System
GUO Yi
(Department of Computer Engineering,Suzhou Vocational University,Suzhou 215104,China)
Fixed asset management is changing with enterprise operation,and its value,storage location varies dynamically.With the development of embedded technology,this paper provides a quick and efficient data collection solution for fixed asset based on ARM7(STR710F micro controller),and also designs and implements ARM7 (STR710F)-based barcode data collection system.
STR710F;barcode;data collection
TP311.54
A
1008-5475(2012)04-0005-05
2012-09-18;
2012-10-15
江苏省现代教育技术研究资助项目(2011-R-19285)
过 怡(1977-),女,江苏苏州人,讲师,硕士,主要从事计算机应用技术嵌入式系统研究.
(责任编辑:李 华)