嵌入式蓝牙PSTN网关的设计与实现
BlueCore4-External芯片自带一个16位的RSIC微处理器,通过自带的MCU可以处理蓝牙协议栈和蓝牙数据,并运行相应的功能程序。
芯片提供有15个PIO,包括12个数字PIO和3个模拟PIO。其中PI09-PIO11分配给键盘模块,用于接收控制命令;PIO7连接SLC603C,其高电平时作为挂机状态,低电平处于摘机状态。具体的电路图如图4所示。
3.3 电话机模块
SHL603C是采用单5 V供电的用户接口电路芯片,集成了用户接口电路的所有功能,简化了用户外围电路的设计。其中RC引脚是馈铃馈电控制引脚:当高电平时模块振铃;低电平时模块馈电。设计中将BC4-ext芯片的PIO4和PIO5分别分配给SHK2引脚和RC引脚。其详细电路如图5所示。
3.4 语音编解码模块
语言编解码模块负责对语音数据进行A/D和D/A转换。蓝牙模块通过PCM数据接口构成其与语音芯片MC145483的收发数据通道,并通过PCM_SYNC控制语音同步,通过PCM_CLK控制控制送给语音芯片的时钟信号。设计电路如图6所示。
应刚程序的开发,选择CSR公司的Bluelab。BlueLab的蓝牙软件开发包主要由以下几部分组成:
(1)xIDE集成开发环境。
(2)包含蓝牙协议栈的BlueCore固件。
(3)常用的几种蓝牙剖面。
(4)库文件和相应的头文件。
BlueLab允许程序员根据特殊的需要以灵活的方式开发应用程序,使用参考示例代码简化开发进程。在对蓝牙语音收发组件的软件进行设计时,就可以以相关剖面(Profile)进行开发。
软件部分的设计主要包括按键处理子程序、显示处理子程序以及主程序。主程序用于进行系统的初始化,负责蓝牙语音设备的配对连接,并响应按键模块的命令,处理手机和同定电话之间的语音切换,同时负责将获取的状态信息,如通话状态、来电显示等传递给液晶显示模块进行显示。按键子模块分为3个按键功能:(1)“固话”按键;(2)“手机”按键;(3)“拒接”按键。当PSTN网络或移动通信网有来电呼叫时,对应的“固话”或“手机”按键的指示灯会闪烁,这时通过按键即可进行不同通信网络问的切换。显示部分子程序包含了显示驱动芯片的初始化函数,并定义了分屏显示、显示汉字、显示图形等函数。
4.1 主程序设计
Bluelab提供了一种虚拟多任务的体系架构VM(Virtual Machine),使得应用程序可以处理多任务。该机制把应用程序中需要处理的各种消息分类,设立多个消息队列,每个消息队列的消息都采用一个单独的TASK来处理,如同有不同的TASK在处理不同的事物,实现了多任务机制。
在Main函数中对系统初始化以后会调用消息处理函数MessageLoop(),开始进行消息调度。之后整个系统的程序都以消息机制进行运行,当系统接收到不同的状态,app_handler()函数负责将对应的消息分发到相应的处理子程序函数进行处理,主程序流程图如图7所示。
4.2 按键处理及显示处理子程序设计
按键处理子程序的作用主要是响应按键中断,从而完成挂断、接听及网络间的切换等功能实现。系统的3个按键分别使用了PIO9-PIO11这3个PIO口,使用PioGetPin()和PioSetPin()函数即可灵活的对PIO引脚进行监测和修改。
显示程序中将整块显示屏分为上下两部分,通过chn_dispup()和chn_dispdown()两个函数分别对上、下半屏的字符显示进行处理。另外设计了图形显示程序img_disp()用来对未来的需求进行支持,显示程序流程图如图8所示。
5 结束语
设计的嵌入式蓝牙PSTN网关,能兼容市面上大多数的蓝牙手机,可以支持PSTN网络和移动通信网同时来电接听,并能即时且方便地在两个通话网络之间互相切换。通过实际使用测试,手机和网关在10 m的距离以内,音质清晰、通话质量良好。
嵌入式蓝牙PSTN网关,融合了同话网络和移动通信网络,做到了“二网合一”,增加了通信的便捷性,避免了通信资源的浪费,更重要的是能使手机使用者尽可能得避免微波辐射,符合现在生活的环保理念。
- 基于FPGA的DSP设计方法(08-26)
- 电力电子装置控制系统的DSP设计方案(04-08)
- 基于DSP Builder的VGA接口设计(04-10)
- 基于DSP和USB的高速数据采集与处理系统设计(05-01)
- 数字信号处理(DSP)应用系统中的低功耗设计(05-02)
- 基于DSP的嵌入式显微图像处理系统的设计(06-28)