嵌入式控制系统综合实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《嵌入式控制系统综合实验》课程
实验报告
项目名称 基于STM32的手机输入法
南京理工大学
2017年6
月
目录
1 设计背景 (2)
2 系统总体方案 (3)
3 系统具体设计 (4)
3.1 手写识别原理 (4)
3.2手写识别程序设计 (6)
3.3手写识别硬件设计 (10)
3.4拼音九键输入原理 (10)
3.5拼音九键软件设计 (11)
3.6拼音九键硬件设计 (13)
4 编译调试 (14)
4.1 手写识别、拼音输入法单项调试 (14)
4.2 手写识别、拼音输入法组合调试 (18)
5总结 (19)
1 设计背景
随着计算机技术和微电子技术的迅速发展,嵌入式系统应用领域越来越广泛。随着IC设计的发展,出现了工业化ARM芯片,ARM微处理器及技术已经深入到各大领域,并取得了很大成功,如无线通信领域、蓝牙技术、网络应用领域、消费类电子产品领域、信息家电领域等。
目前几乎所有带触摸屏的手机都能实现拼音输入和手写识别输入。
Cortex-M3采用ARM V7构架,不仅支持Thumb-2指令集,而且拥有很多新特征。较之ARM7 TDMI,Cortex-M3拥有更强劲的性能、更高的代码密度、位带操作、可嵌套中断、低成本、低功耗等众多优势。
本次嵌入式实验,我们采用基于STM32F103带4.3寸触摸屏的嵌入式开发板来模拟一个手机输入法,该输入法功能主要有手写识别跟拼音九键。嵌入式开发平台如图1所示。
图1 STM32F103嵌入式开发平台
2 系统总体方案
本次嵌入式实验设计了“手机输入法”功能,该输入法功能主要包括两种输入方式——拼音九键+手写识别。下面首先介绍一下本设计的软、硬件基础,然后介绍本设计的总体方案。
软件基础:本次嵌入式综合实验,我们利用MDK软件来开发STM32。MDK 源自德国的KEIL公司,是RealView MDK的简称。在全球MDK被超过10万的嵌入式开发工程师使用。MDK5向后兼容MDK4和MDK3等,以前的项目同样可以在MDK5上进行开发(但是头文件方面得全部自己添加),MDK5同时加强了针对Cortex-M微控制器开发的支持,并且对传统的开发模式和界面进行升级,MDK5由两个部分组成:MDK Core和Software Packs。其中,Software Packs可以独立于工具链进行新芯片支持和中间库的升级。
硬件基础:本次嵌入式综合实验所使用的STM32开发板选择的是STM32F103ZETT6作为MCU,该芯片是STM32F103里面配置非常强大的了,它拥有的资源包括:64KB SRAM、512KB FLASH、2个基本定时器、4个通用定时器、2个高级定时器、2个DMA控制器(共12个通道)、3 个SPI、2个IIC、5 个串口、1个USB、1个CAN、3个12位ADC、1个12位DAC、1个SDIO 接口、1个FSMC接口以及112个通用IO口。该芯片的配置十分强悍,并且还带外部总线(FSMC)可以用来外扩SRAM和连接LCD等,通过FSMC驱动LCD,可以显著提高LCD的刷屏速度,
本设计要完成输入法的界面设计、功能实现以及不同输入方式之间的来回切换,还必须与键盘、LCD等硬件设备结合。总体方案如下:
(1)设计输入法的总体要实现的功能,画出功能块图;
(2)将整个输入法设计分成两大模块,一是手写识别,二是拼音输入,分别对他们进行程序设计;
(3)画出手写识别与拼音输入的程序流程图,并编写相应的程序;
(4)最后,将设计好的两个输入法模块整合起来,并编写相应的程序,使之可以完美地进行来回切换。
系统总体设计框图如图2:
图2 系统总体设计框图
我们将整个嵌入式综合实验分成2步:第一步,分别设计出手写识别功能和拼音九键输入功能;第二步,将以上设计好的功能模块整合在一起,实现这两种输入方式的来回切换。
3 系统具体设计
基于STM32的输入法功能实现,一开始系统默认是手写识别(其实也可以初始化为拼音九键模式,这是可以自行设计的,我们把手写识别模式作为系统的默认输入模式)。
3.1 手写识别原理
我们在STM32开发板上实现了一个简单的数字、字母手写识别功能。
手写识别,是指对在手写设备上书写时产生的有序轨迹信息进行识别的过程,是人际交互最自然、最方便的手段之一。随着智能手机和平板电脑等移动设备的普及,手写识别的应用也被越来越多的设备采用。
手写识别能够使用户按照最自然、最方便的输入方式进行文字输入,易学易用,可取代键盘或者鼠标。用于手写输入的设备有许多种,比如电磁感应手写板、压感式手写板、触摸屏、触控板、超声波笔等。STM32嵌入式开发板自带的TFTLCD触摸屏可以用来作为手写识别的输入设备。
手写识别系统分为两个过程:训练学习过程;识别过程。如图3所示:
图3 字母、数字识别系统示意图
图3中虚线部分为训练学习过程,该过程首先需要使用设备采集大量数据样本,样本类别数目为0~9,a~z,A~Z总共62类,每个类别5~10个样本不等(样本越多识别率就越高)。对这些样本进行传统的把方向特征提取,提取后特征维数为512 维,这对STM32 来讲,计算量和模板库的存储量来说都难以接受,所以需要运行一些方法进行降维,这里采用LDA 线性判决分析的方法进行降维,所谓线性判决分析,即是假设所有样本服从高斯分布(正态分布)对样本进行低维投影,以达到各个样本间的距离最大化。这里将维度降到64维,然后针对各个样本类别进行平均计算得到该类别的样本模板。
而对于识别过程,首先得到触屏输入的有序轨迹,然后进行一些预处理,预处理主要包括重采样,归一化处理。重采样主要是因为不同的输入设备不同的输入处理方式产生的有序轨迹序列有所不同,为了达到更好的识别结果我们需要对训练样本和识别输入的样本进行重采样处理,这里主要应用隔点重采样的方法对输入的序列进行重采样;而归一化就是因为不同的书写风格采样分辨率的差异会