DIY你自己的多功能掌上娱乐终端,附详细软硬件方案设计
一、项目概述
1.1 引言
1.1.1项目背景
21世纪信息化时代的到来,大量的消费类电子产品正在改变着人们的生活。可以随时随地的欣赏音乐、收看电视、阅读电子书籍、通过蓝牙共享文件等等。目前来看,消费电子已经成为全球半导体发展的主要推动力。近年来随着微处理器技术、DSP技术、多媒体解码技术以及单片机技术的飞速发展,掌上娱乐终端已经成为消费类电子的热点。
1.1.2发展前景
随着掌上娱乐终端的不断发展,它的产品也越来越丰富,功能也越来越完善,囊括了媒体播放、游戏、电子阅读、资源共享等,并逐步趋于网络化、智能化方向发展,集多功能于一身的掌上娱乐终端以其便于携带、支持多媒体播放、文件共享、GUI美观方便的全方位的优点越来越受到人们的喜爱,拥有广阔的发展前景。
1.2 选题动机/研究意义
现今阶段,电子信息产业在我国有了快速的发展,然而相比于西方发达国家仍有不小的差距。从目前的市场现状中,MP3、MP4、PDA等形式的娱乐终端的高端地位一直被国外的企业所垄断,例如谷歌、苹果、三星、索尼等,国内企业和这些龙头企业相比差距比较大,所生产的产品难以博得广大消费者的支持,然而国外的电子产品相比于国内产品价格昂贵很多,消费者的消费需求与产品价格的矛盾日益明显。
另一方面,尽管MP3、MP4等设备已经日益发展成熟,但大多数只能实现单一或者少量的功能。例如MP3多数只能实现音乐播放功能。随着现代信息化方向的发展,人们的娱乐需求将会越来越广泛,单一的娱乐功能将难于满足人们的娱乐生活。多功能的掌上娱乐终端是一种便携式的数码设备,集结了广大功能于一体,能随时随地、全方位的满足人们的生活娱乐需要,同时又有简易便携,GUI人机界面友好等优点。选择多功能掌上娱乐终端为课题,对于改变我国电子信息娱乐产业发展落后现状,完善消费类数字化产品,满足人们的娱乐需求具有重大研究意义。
二、需求分析
2.1 功能要求
2.1.1 概述
本系统基于EVK1105平台开发,实现多功能的掌上娱乐嵌入式系统。所谓嵌入式系统,就是利用有限的硬件资源,构建一个功能完善的系统。所以,本系统摈弃嵌入式Linux系统,而是基于uC/OS-II实时内核,构建一个GUI框架,并在uC/OS-II、驱动层、FAT32文件系统、GUI框架之上构建应用层程序。在本系统中,GUI框架并不采用uCGUI,MiniGUI等成熟的GUI框架,而是采用自定制的微型GUI框架。因为uCGUI、MiniGUI消耗比较多的内存,而且窗口是类PC风格,不符合本系统的需求。
应用层程序可以分为以下10大应用:1.音乐播放2.图片播放3.电子书阅读4.FM收音机5.语音录音
6.游戏7. U盘自动播放8. PC无线触摸板 9. 电量显示 10.智能背光调节
2.1.2音乐播放
概述:播放MP3等音频文件。
功能:
播放、暂停控制
上一曲、下一曲切换
音量控制
播放模式选择:正常顺序播放、全部循环、单曲循环、随机播放、
播放进度、音量显示
歌词同步显示
显示歌曲的基本信息:标题、专辑、演唱者等信息
2.1.3 图片播放
概述:支持BMP、JPEG等主流图片格式。
功能:
图片目录浏览
图片浏览器
图片缩放功能
幻灯片播放
设置幻灯片切换时间间隔
支持图片分辨率自适应屏幕
2.1.4 电子书阅读
概述:支持TXT格式文本阅读
功能:
目录浏览
上一页、下一页切换
设置书签
设置字体颜色和背景色
自动翻页
设置自动翻页时间间隔
2.1.5 FM收音机
概述:支持FM收听
功能:
自动搜台
记忆电台
2.1.6 语音录音
功能:
语音录音、录音时长取决于存储介质的大小
录音时间显示
2.1.7 游戏
功能:俄罗斯方块、贪吃蛇等小游戏
2.1.8 U盘自动播放
功能:(1):插入SD卡或者U盘后,可以根据用户的选择来自动播放音乐或者图片
(2):音乐、图片播放默认为顺序播放
2.1.9 PC无线触摸板
功能:通过拓展触摸板,对触摸板的触摸来实现无线控制PC的鼠标, 达到控制整个PC的功能。
2.1.10 电量显示
功能:(1):精确显示电池电量,仿真电池显示,显示剩余电池电量可以支持的音乐时间、电子阅读时间、待机时间。
(2):当电量不足时会有窗口提示,提示三次未及时充电或更换电池会自动进入关机状态。
2.1.11智能背光调节
功能:(1):利用传感器检测外部光照条件,若是明亮度高则自动降低LCD背光,减少功耗;若是明亮度过低,则自动升高LCD背光,增强视觉效果。
(2):若超过10秒未操作LCD则屏幕变暗,进入省电模式,减少功耗。
2.2 系统框图
图1 系统架构
三、方案设计
3.1系统功能实现原理
3.1.1前提条件:移植uC/OS-II内核、建立FAT32文件系统、建立GUI框架、建立系统字库和文件浏览器
因为我们的应用都是基于实时系统实现的,所以在建立应用之前就应该搭建好一个运行的操作系统环境,并配备好应用程序运行所要支持的文件系统、GUI框架、字库、文件浏览器等基本功能模块。
uC/OS-II内核是一个基于优先级抢占式的,实时多任务操作系统内核、具有效率高、消耗内存资源小、反应速度快、可靠性高等优良特点,而且大部分代码用c实现,便于移植,是一个适合于小型嵌入式系统的实时内核。对于本系统的移植,只要修改几处关键代码就行了。
FAT32文件系统是目前最为流行的文件系统之一,几乎所的便捷存储设备,如U盘,SD卡、microSD卡、miniSD卡都是基于FAT32文件系统;而且在嵌入式产品中,如数码相机、MP3、MP4、数码相框等产品中,也是基于FAT32文件系统的。所以为了最大的兼容性和普遍性,我们也采用了FAT32文件系统来作为我们的文件系统。对于FAT32文件系统的构建,本系统采用了开源的FatFs的FAT32文件系统驱动库。文件系统建立成功之后,就可以方便地对SD卡、U盘里面的文件进行操作。
GUI框架为自主开发,是基于消息循环事件驱动型的GUI框架。下面有图表详细说明。
系统字库是一个嵌入式系统的核心之一,所有的文字信息都要经过它的处理才能显示出来。这里我们采用了内建字库的技术,即把字库文件(包括中文字库和英文字库)烧写在Flash里面。其中对文字的显示首先要进行内码转换,取得在字库里面的偏移,然后把字模提取出来并显示在LCD上。
文件浏览器是一个基于GUI框架、文件系统和字库的应用程序,它通过读取存储介质的文件,并把文件信息形成列表在LCD显示出来,用户可以通过选择键来选择要查看的文件。以下所引用到的目录文件浏览就是基于文件浏览器的。
3.1.2系统硬件结构框图
系统硬件模块
PC遥控接收端硬件模块
3.1.3 音乐播放
1. 首先搜索SD卡、或者U盘里面所有音频文件,然后创建一个音乐播放列表
2. 读取播放列表中的音频文件,并通过GUI的API调用显示在LCD上,用户可以选择喜欢的歌曲
3. 选定歌曲后,按PLAY键开始播放音乐,播放由一个独立的线程来处理,读取音频文件的数据,通过软件解码将解码后的数据流送到DAC,并通过音频功放输出音频。播放中的控制信息、信息反馈、播放进度和状态显示都通过消息来触发。
4. 当一首歌播放完后,根据当前的播放模式,用获取下一首歌曲,然后进行下一曲的解码流程。
3.1.4 图片播放
1. 目录文件浏览:通过读取SD卡、或者U盘的图片文件,把相应的文件名字及其它基本信息形成一个列表在LCD上显示出来。通过选择图片并通过相应格式的文件解码并在LCD显示出来。
2. 可以选择上一张、下一张来显示图片,并可以进行缩放。其中缩放的功能,我们采用frame buffer的技术。我们在内存中创建一个比屏幕分辨率大的显存缓冲区域,并通过对显存缓冲区域的局部显示就可以实现图片的放大功能;对于图片缩小的功能,我们可以采用对显存缓冲区的减取样算法显示就可以实现图片的缩小。
3. 幻灯片播放:通过读取SD卡、或者U盘的图片文件,形成一个文件列表,然后按照播放模式来自动播放图片,相当于数码相框。
4. 图片播放流程:
3.1.5 电子书阅读
1. 目录文件浏览:通过读取SD卡或者U盘里面的TXT文本文件,把文件及其基本信息形成一个列表在LCD显示出来。
2. 电子书阅读流程:
3.1.6 FM收音机
1. FM收音机模块采用Philips的FM收音芯片TEA5767HN。它是一款低功耗立体声的FM收音芯片,具有高灵敏度、支持两个频段87.5MHz-108MHz和76MHz-91MHz,RF AGC自动增益控制, 内部集成FM解调器,I2C总线3线总线模块可选择等优良特点。
2. 首先初始化TEA5767HN芯片,然后通过可以通过自动搜台找到频道收听节目。
3. LCD显示界面有当前频道的频率、音量等信息
4.可以收藏频道,方便下次收听。
5. M收音机工作流程:
语音录音
系统采用的是PCM编码和解码系统实现功能。Pcm是对模拟信号先抽样,再对样值幅度量化。编码的过程a.对录音输入的模拟信号先抽样。抽样,就是对模拟信号进行周期性扫描,把时间上连续的信号变成时间上离散的信号。该模拟信号经过抽样后包含原信号中所有信息,能无失真的恢复原模拟信号。抽样速率采用8Kbit/s。b.量化,就是把经过抽样得到的瞬时值将其幅度离散,即用一组规定的电平,把瞬时抽样值用最接近的电平值来表示。 c. 编码,用一组二进制码组来表示每一个有固定电平的量化值
通过按键1,开始录音,按键2,结束录音并播放所录的语音。播放结束后,可以继续录入下一段语音。流程图如下:
游戏
1、菜单提示选择贪吃蛇或者俄罗斯方块游戏。
2、贪吃蛇:上下左右方向键控制贪吃蛇游动,不要撞到墙、不要碰到自己身体,身体长到25段过关。每过一关贪吃蛇的移动速度加快,难度增加。贪吃蛇撞到墙或者自己时,出现死亡,显示成绩并提示是否继续游戏。
3、俄罗斯方块:预先设置的随机发生器不断地输出单个方块到场地顶部,以一定的规则进行移动、旋转、下落和摆放,锁定并填充到场地中
键盘 [ 左、右 ] 用来控制落下砖块的左右移动
键盘 [ 下 ] 用来控制砖块加速下落
键盘 [ 上 ] 用来控制砖块变形
键盘 [中] 用来控制砖块直接落到底
每次摆放如果将场地的一行或多行完全填满,则组成这些行的所有小正方形将被消除,并且以此来换取一定的积分或者其他形式的奖励。而未被消除的方块会一直累积,并对后来的方块摆放造成各种影响。如果未被消除的方块堆放的高度超过场地所规定的最大高度则出现死亡,显示成绩并提示是否继续游戏。。
4、游戏流程图如下:
3.1.9 U盘自动播放
利用USB控制器的OTG的功能,结合FAT32文件系统来实现对U盘的操作。
1. 当插入U盘后,根据用户的选择来自动播放图片或者音乐。
2. U盘自动播放流程图:
3.1.10 PC无线触摸板
1. 系统外部拓展一块电阻式触摸板和2.4G发送模块,PC端通过USB接口连上2.4G接收模块,可以通过触摸板来控制PC上的鼠标,实现无线触摸板的功能。方便控制电脑。
2. 工作流程:
3.1.11 电量显示
原理:通过测量流入流出电池的净电荷来估算电池剩余的容量。对流入流出的电池的总量电流进行积分,得到的净电荷即为剩余容量。电池容量可以预置,也可惜在后续的完整充电周期中进行学习。在补偿电池自放电、不同温度下的容量变化等因素后,也可以获得比较高的精度。
电路如下:
其中Rsns为mΩ级检流电阻,RL为负载电阻,电池通过开关、Rsns对RL放电时的电流Io在Rsns两端产生的压降为Vs(t)=Io(t)*Rsns。电量计持续检测Rsns两端的压差Vs,并将其通过ADC 转化为N位的数字量Current,之后以时基确定的速率进行累加,M位累加结果Accumulated_Current的单位为Vh。
3.1.12 智能背光调节
原理:通过光敏传感器来感知外部光线的强度,然后通过PWM来调节LCD显示的背光。如果环境的光线比较强,则减少PWM的占空比来减小LCD的背光,以达到不必要的电池电量浪费。如果环境的光线比较暗,则通过增加PWM的占空比来增大LCD的背。
3.2 硬件平台选用及资源配置
硬件平台选用:
本系统采用EVK1105开发平台,结合本平台的特点,我们充分利用了平台的LCD显示器、高保真音频DAC、麦克风、SD卡接口、USB控制器等器件,主要开发多媒体方面的应用。
资源配置:
SD卡:SPI接口
U盘:USB接口
麦克风:ADC TLV320AIC23B
音频输出:DAC TPA6130A2RT
LCD:LCD控制和数据总线
FM模块:I2C接口
按键:触摸传感器QT1081
数据存储器:SDRAM MT48LC16M16A2
外部存储器:Flash AT45DB642D-CNU
3.3系统软件架构
所有的应用程序都基于GUI框架开发,只要框架建立完成,就可以快速创建顶层应用程序。
基于消息循环的事件驱动型GUI框架模型:
3.4 系统软件流程
GUI框架消息循环流程:
消息循环流程图
系统流程图:
程序运行流程图
加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码