基于 Bluecore 的手机蓝牙附件的设计实现.doc
《基于 Bluecore 的手机蓝牙附件的设计实现.doc》由会员分享,可在线阅读,更多相关《基于 Bluecore 的手机蓝牙附件的设计实现.doc(8页珍藏版)》请在三一办公上搜索。
1、精品论文推荐基于 Bluecore 的手机蓝牙附件的设计实现周尤 北京邮电大学信息与通信工程学院,北京 (100876) E-mail: maemo8807摘要:无线个域网(Wireless Personal Area Network,WPAN)是指提供个人及消费类电子设备之间进行互联的无线短距离专用网络。无线个域网专注于便携式移动设备(如个人计算 机、外围设备、PDA、手机、数码产品等消费类电子设备)之间的互联,以及这些设备与人之间的双向通信技术问题。1999 年推出,作为短距离数字语音和数据传输的开放式标准的蓝牙技术 6 正在成为目前的实现无线个域网的主流技术。本文通过一个具有基本功能的手
2、 机附件的设计实现介绍了使用全球领先的蓝牙芯片供应商 CSR 公司的 Bluecore 系列芯片以 及其 Bluelab 集成开发环境进行蓝牙设备开发的过程。关键词:蓝牙;单芯片;CSR中图分类号:TP3121. 引言手机蓝牙附件通过蓝牙与手机连接,通过蓝牙应用层profile扩充手机的功能,本文设计 实现的蓝牙手机附件具有显示手机端信息的基本的功能,通过这一具有基本功能的蓝牙附件 的设计实现,本文介绍了使用Bluecore系列芯片以及Bluelab IDE进行手机附件开发的过程。 Bluecore系列芯片是是全球领先的蓝牙芯片供应商CSR公司提供的集成了很多功能的SOC芯片。到目前为止,已经
3、出了6代蓝牙芯片。Bluecore芯片最大的特点在于其双核结构, 即芯片中有一个ARM核用来运行协议栈的之外,还有一个通用DSP核。此外芯片所需的外 围电路器件很少,可用作蓝牙单芯片的解决方案,即用户程序以及协议栈(包括底层和用户 层profile)以固件的形式作为一个整体运行在一个Bluecore芯片上。与Bluecore系列芯片配套的集成开发环境被称为Bluelab,Bluelab可以完成程序的编译链 接与下载, Bluelab以库的形式向应用程序提供蓝牙上层的协议栈和Profile的实现,其协议 栈层次图如下图所示 4 :图1 Bluelab协议栈结构图-8-图中显示的是Bluelab蓝
4、牙协议栈的实现形式,其中“Application”是对用户层次profile的实现,例如通用对象交换Profile (GOEP) 对象推送配置文件 (OPP) 串行端口Profile (SPP)等, “Connection Library”是和蓝牙协议有关的部分,而“Lower levels of Bluecore Stack”对上面两 层提供支持,隐藏了硬件的细节,例如封装了对于芯片外部PIO的操作。在Bluelab所提供的 协议层次当中,与开发应用程序最相关的就是“Application”层,即蓝牙面向应用的profile层,向用户隐藏蓝牙通信的细节 3 。CSR公司的Bluecore芯片
5、以及Bluelab集成开发环境提供了蓝牙的单芯片解决方案,使得 用户能够以最快的速度在自己的设备中集成蓝牙通信功能。2. 硬件部分的设计实现由于 Bluecore 芯片号称提供单芯片解决方案,于是硬件上的设计就变得非常简单。项 目中考虑到今后要加入对于音频的支持,就选取了具有多媒体处理能力的 Bluecore5-MM 芯 片作为主处理器,Bluecore5-MM 芯片需要外接一个 16Mbit 的 flash 芯片存储固件程序,同 时根据项目的需要,还要通过 IO 管脚连接 R80 接口的液晶屏。图 2 Bluecore 芯片以及系统框图作为系统主要部分的 Bluecore5-MM 芯片,具有
6、芯片有以下特点1 :对于蓝牙 V2.0+EDR 协议的支持;在主处理器核之外拥有一个 DSP 协处理器,称为 Kalimba;16 为内置立体声编解码模块;内置电源管理模块;内置电池充电模块;USB 以及 UART 主机接口;可支持最大 32M 位的 flash 芯片;支持 I2S,PCM 以及 SPDIF 音频输入接 口;音频增强降噪功能;支持与 802.11 协议共存。该芯片可以提供单芯片蓝牙应用的完整方案,外围电路很少,由于芯片为双核结构,有 利于芯片在处理蓝牙通信的同时进行一些应用程序的处理 方便了项目在下一阶段增加音频 功能。3. 软件模块的设计实现本文中提到的手机蓝牙附件通过蓝牙与
7、手机连接并进行数据传输,并且实时显示手机发 送的一些信息。于是软件方面附件的功能可以分为与手机蓝牙通信的部分和数据的显示两部 分。根据设备的通信需求,蓝牙通信程序部分需采用用于设备之间传输数据对象 OPP Profile:Object Push Profile 8 ,由于 OPP profile 又细分为 OPPC (client) 端和 OPPS(server)端 profile, 这两个 profile 区别在于只有 client 端可以发起数据传输的过程,但是附件设备与手机通信的 情景中,既有手机发起数据传输请求也有设备侧发起传输请求的需要,所以要在设备中实现 OPPC 和 OPPS 两
8、个 profile。关于数据显示,在本项目是由芯片中的 DSP 核完成液晶的驱动,显示信息由运行在 arm 核上的蓝牙部分软件接收到之后按一定格式发送到 DSP 侧显示,这样可以是软件的层次更 清晰。这必定要设计到 Bluecore 芯片 arm3.1 液晶驱动模块的设计实现图 3 系统软件框图液晶驱动模块运行在 Bluecore 芯片的 DSP 核上,Bluecore 芯片的 DSP 核必须使用汇编 语言进行开发。液晶驱动模块在完成液晶的初始化操作之后,其入口就是一个消息处理函数 display,这个函数接收或并且处理 MessageId 为 DISPLAY_MESSAGE 的消息,于是开始
9、就 要注册此消息处理函数:r1 = &$myfirst_long_message_struct;r2 = $DISPLAY_MESSAGE;r3 = &$display;call $message.register_handler;。 。 。 。 。frame_loop:jump frame_loop; 主程序在此循环等待显示消息的到来。 Display接收到的显示消息被分为显示文本行,显示字符以及显示图片三种类型,分别通过Disptext Dispdigit和Dispic函数完成。其中显示字符和文本最终的函数最终是调用显示字 符的函数Writechar,显示字符的Writechar从根本上也
10、是靠现实图片来实现,即显示预先定义好 的字库数据。于是显示都集中到显示图片的问题上了,液晶驱动硬件显示图片的基础是在每 个象素的位置按要求显示黑或白,即写入“0”或者“1”的过程,这是由函数Write0和Write1完 成的。液晶显示模块的函数调用关系图如下所示:图4 液晶驱动模块函数调用关系操作液晶写入显示数据的函数Write0和Write1是靠处理器PIO模拟R80接口LCD的驱动 时序来完成的,最基本的操作即是能对任何一个PIO管脚置高置低的操作,这些基本操作是由下面汇编PIOSet函数完成的 2 :PIOSet:push rLink;r1 = r1 XOR 65528;/* r1: o
11、perand address */r7 = r7 AND r1;r7 = r7 OR r2;/* r2: operand code */ M$PIO_OUT = r7;r0=1;call $timer.n_us_delay;pop rLink;rts;3.2 两核之间通信的实现由于Bluecore5芯片有arm和DSP协处理器两个处理器核,而项目中的蓝牙附件进行数据 通信的蓝牙协议栈运行在arm核的VM之上,而驱动液晶进行显示的工作是由DSP核来完成 得,于是在软件设计中要考虑到处理其的双核通信问题:首先要考虑的是两处理器核对于外设控制权的分配,要由arm侧把操作液晶的PIO控制 权给DSP侧
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Bluecore 的手机蓝牙附件的设计实现 手机 蓝牙 附件 设计 实现
链接地址:https://www.31ppt.com/p-5198357.html