基于STM32F107的嵌入式POS系统设计
针对目前嵌入式收款机系统在功能和性价比方面存在不足的问题,介绍了一种基于Cortex M3芯片的嵌入式收款机系统。该系统功能全面、性能良好、界面完善、具有故障分析和机器自检功能。运行结果表明,该系统实现了预期目标。
本文介绍了以STM32F107 单片机为核心的POS 机、数据采集和数据输出的小规模销售系统。目前的嵌入式收款机系统在硬件和软件方面在成本上没有有效的控制,在功能上没有很充分地开发。而此款POS 系统平台则拥有成本低廉、操作方便、易于自检维修等方面的优势。
POS 机的基本作业原理是先将商品资料输入进SPIFlash 中存储,商品上的条码可以通过扫描枪上的光学读取设备直接读入,根据条形码在收款机内存中的商品数据库找到该商品的相关内容,当然也可以直接用键盘输入条形码。每一笔商品销售明细资料亦可自动统计,并且最多可以存一万笔以上交易记录。
1 系统设计
1.1 硬件结构
本系统采用ARM Cortex M3 为内核的32 位微处理器STM32F107VC,其主频为72 Hz,该芯片内部采用哈佛结构,内部集成了最大存储空间为256K 的Flash和64K 的SRAM,还有大量的I/O 口和外设(2 个I2 C 总线,3 个SPI,2 个I2 S,5 个USART,2 个CAN 等等)连接在2 个APB 总线上。
该系统硬件主要包括:收款数据处理模块、收款程序存储模块、收款数据存储模块、串口调试模块、收款显示模块、报表打印模块、USB 模块。系统硬件结构框图如图1所示。
图1 系统硬件结构框图
系统的实物图如图2 所示。
图2 系统的实物图
在初始化时,为了便于用户或者维修人员及时了解设备运转情况和数据存储情况,调试信息务必显示在液晶屏上。通过CH452 键盘将中英文输入信息输入到设备上,通过扫描枪将商品中的条形码读取到设备中,最后还可将交易记录输出到小票打印机上,最多可以一次性记录一万次交易信息。交易信息、用户等资料存放在SPI Flash中,时钟信息放在RTC 备用器中。
1.2 外设设备
1.2.1 输入/输出接口芯片和数码管显示芯片
CH452 是数码管显示驱动和键盘扫描控制芯片,可以同时进行64 键的键盘扫描和8 位数码管的操作,具有BCD 译码、闪烁、移位、段位寻址等功能,还能对CPU 提供上电复位信号。
本次研究对象中CH452的LCD 交换数据功能是通过级联的4 线串行接口完成的。在键盘扫描期间,DIG7~DIG0 引脚用于列扫描输出,并且可以依次从DIG0 ~DIG7 输出高电平,同时其余的引脚置0.SEG7 ~SEG0引脚都带有内部下拉电阻,用于行扫描输入,在键盘扫描期间输出被禁止。
启用键盘扫描功能后,4 线串行接口中的DOUT 引脚的功能由串行接口的数据输出变为键盘中断输出以及按键数据输出。如果有DIGm(m=0,1,2…7)与SEGn(n=0,1,2 …7)的键被按下,那么当DIGm 输出高电平时,SEGn 可以检测到高电平;如果按键有效,按键产生的代码通过DOUT 引脚就能够产生中断,CPU 则用串行接口来读取代码。
另外,CH452 仅支持每次同时按下一个键,如果有多个键值按下,则取按键代码较小的按键。
表1、表2 是在DIG7~DIG0 与SEG7~SEG0 之间8×8 矩阵的按键编址,按键按下时,状态码位6 总是置1,而按键代码共有7 位,所以当键按下时,CH452 所提供的实际按键代码在下表中的按键编址基础上偏移40H.也就是说,本文设定的按键代码的取值范围应该在40H~7FH 之间。
CH452 还可以控制8 个数码管和64 个LED 灯,在这次项目中根据不同的界面可以用来显示时间、商品价格等可以用数字表示的参数。
CH452 与作为CPU 的STM32 的连接方式如图3 所示。
图3 CH452 与STM32F107VC 的连接
1.2.2 存储设备
W25X16 是华邦公司推出的继W25X10/20/40/80 后容量更大的FLASH 存储器产品,它有占用空间小、使用寿命长、功耗较低等优点。W25X16 能容纳2 MB,分布在8 192 个编程页上。它分为32 个块,每个块由16 个扇区组成,W25X16 的最少擦除单位就是一个扇区(4 KB)。W25X16 与STM32F107VC 的连接方式如图4 所示。
图4 W25X16 与STM32F107VC 的连接
1.2.3 打印机
本次项目采用热敏打印机来输出每次交易信息。商宝热敏打印机支持并口、串口、USB、LAN 网络等途径传输数据,带有384 个方点的带加热点阵固定打印头。打印机通过CPU 传输的数据逻辑控制点阵,并且控制进纸,从而在热敏纸上印出字体,打出顾客需要的包含交易信息的小票。
1.2.4 扫描输入设备
扫描枪利用收集到的条形码上强弱不同的反射光,经过光学系统成像通过光电转换器将光信号转换成电信号,译码器根据测量而来的脉冲信号0、1 来判别条和空的数目,得到的
- 基于CMSIS标准的Cortex-M3的应用软件开发(06-20)
- 基于μC/OS-II和TCP/IP协议的多串口服务器(08-23)
- μC/OS-II就绪表算法在Cortex-M3架构上的适配设计(01-22)
- 基于ATK的实时语音识别系统在家庭监护机器人中的应用实现(04-28)
- 基于Linux/Qt的智能家居系统设计(07-07)
- STM32中断与嵌套NVIC快速入门(01-25)