蓝牙是一种支持设备短距离通信(一般10 m内)的无线电技术,能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。利用蓝牙技术,能够有效地简化移动通信终端设备之间的通信,使数据传输变得更加迅速高效。蓝牙采用分散式网络结构以及快跳频和短包技术,支持点对点及点对多点通信,工作在全球通用的2.4 GHz ISM(即工业、科学、医学)频段,采用时分双工传输方案实现全双工传输,数据速率为1 Mb/s。蓝牙技术实质是一种短距离无线通信标准。
选择C8051F020单片机作为该无线通信系统的处理和控制器,BC03MM蓝牙模块作为该无线通信系统的收发模块,通过串口通信使单片机和蓝牙终端设备相互连接,通过编写相关控制程序,实现键盘信号通过单片机模块处理转化后给蓝牙模块发送相关命令,从而控制对应的蓝牙终端(手机)进行播放音乐,拨打电话等功能。采用单片机作为蓝牙模块的命令控制和数据显示处理和控制器,具有电路结构简单、控制灵活、成本低廉、可移植性等优点。
1 整体方案设计
方案的主要任务是通过C8051F020单片机UART0完成与蓝牙模组通信和控制,实现蓝牙手机或者PC电脑与BC03蓝牙模组的互连,完成免提(Hand Free Profile,HFP)和音乐播放(Advanced Audio Distribution Profile,A2DP)功能。该系统由键盘、单片机、LCD显示器、固化了电缆通信协议(RFCOMM)的BC03MM蓝牙模块组成,其中键盘用来输入控制信号,LCD用来显示通信数据从而方便系统操作,单片机用来控制系统的运作,接收键盘的命令信号并传输给蓝牙模块,BC03蓝牙模块是用来连接外部蓝牙终端(手机或者PC电脑),并通过发送命令控制其连接的终端实现系统功能。
2 硬件电路设计
2.1 硬件总体设计
整个系统采用一片C8051F020单片机和CSRBC03蓝牙模组来完成系统设计。其中UART0被配置在C8051F020的P0.0(TXD)和P0.1(RXD),通过串接1 kΩ电阻与BC03模组串口连接。由于C8051F020和BC03蓝牙模组均为3.3 V系统,所以不需要增加额外的电平转换串口通信电路,简化了系统设计。C8051F020的端口P3控制LCD1602的命令和数据显示,端口P2完成键盘信息的输入。对于BC03MM蓝牙模块部分,通过驻极体传声器完成语音信号的输入,蓝牙模块的音频信号输出则通过TDA2030A以驱动负载。系统总体电路设计框图如图1所示。
2.2 蓝牙模块接线设计
BC03MM蓝牙模块接线部分主要涉及到三个部分:
(1)语音信号的输入部分。语音信号输入由驻极体传声器和滤波处理电路完成,设置为单端输入方式。
(2)16位立体声音频解码部分的SPK立体声输出。对于蓝牙模块的两路立体声输出,选用TI公司的立体声音频功率放大芯片TPA6112进行前置放大,增益可以自行设定。
(3)与MCU的连接。
2.3 MCU控制和通信电路
MCU控制和通信电路包括:串行数据通信电路、控制信号输入和通信数据显示三个部分。
C8051F020内置增强型串口UART0和数字交叉开关,通过配置交叉开关控制寄存器XBR0和XBR2,将UART0的TXD和RXD数字信号配置在端口I/O引脚。本文中UART0被配置在C8051F020的P0.0(TXD)和P0.1(RXD),通过串接1 kΩ电阻与BC03MM模组的UART(RX和TX)连接,完成串行数据的接收和发送。
控制信号输入部分主要由C8051F020 I/O端口P2控制矩阵式4×5键盘完成。使用矩阵式键盘,具有占用I/O资源少,程序编制简单等特点。系统需要实现HFP和A2DP功能,按键功能如图2所示。SHIFT为功能切换按键,在HFP和A2DP之间进行切换。按键0~3为多功能按键,在SHIFT键没有按下时,表示拨打电话的数字按键0~3或者接听来电、挂断电话、拒接来电和重新拨号功能;在SHIFT键按下时,依次表示音乐暂停/开始、连接蓝牙音乐、下一曲和上一曲功能。按键D,E,F和G为系统预留功能扩展按键,按下无作用。
显示部分通过C8051F020的端口P3作为与LCD1602通信的8位数据线,主要完成通信数据和状态信息的显示。
2.4 音频放大和系统供电
采用CONTEK公司的音频功率放大器TDA2030A,构成OCL接法,最大输出功率可达14 W。对于蓝牙模块输出的音频信号SPKR+和SPKL+分别进入两片TDA2030A进行功率放大以驱动RL=4 Ω的喇叭。
系统正常工作需要±12 V,+5 V和+3.3 V电压供电。本文将市电220 V/50 Hz经过2×12 V/40 W变压器降压变换后,经过电桥整流和滤波后产生±12 V,直接供电给TDA2030A。整流滤波后的电压经过LM7805稳压芯片,输出稳定+5 V给LCD1602供电,将LM7805输出电压再经过ASM1117-3.3V供电给单片机系统和蓝牙模块,完成系统电源供给。
3 软件设计
系统软件主要包括三大部分:蓝牙协议栈的搭建、蓝牙通信软件设计和单片机控制部分软件设计。
软件设计的主要目的是提供一个高效的命令,免去不同蓝牙设备间不断变化的标准和复杂的蓝牙功能。该软件接口为串行接口,串行接口用于两个处理器之间的通信,传输速率为19 200 b/s,8,N,1。
蓝牙技术是一个开放性系统(OSI),其主要目的就是使符合该规范的各种设备能互通,这就要求本地设备和远端设备使用相同的协议,当然不同的应用,其使用的协议栈也可能不同,但是他们都必须使用蓝牙技术协议规范中的物理层和数据链路层。完整的蓝牙协议栈主要涉及基带协议(Basebaria)、连接管理协议(Link Manager Protocol,LMP)、逻辑链路控制和适配协议(Logmal LinkControl and Adaptation Protocol,L2CAP)、服务发现协议(Service Discovery Protocol,SDP)、电缆替代协议(RFCOMM)、电话控制协议(Telephony Control Pro-tocols,TCS)、点对点协议(PPP)、对象交换协议(OBEX)、无线应用协议(WAP)、蓝牙音频传输模型协议(A2DP)等协议。本文主要涉及基带协议(Baseband),LMP,L2CAP,SDP,RFCOMM,TCS,PPP,A2DP等协议,如图3所示。
由于系统采用固化了电缆通信协议(RFCOMM)和其他底层协议栈的CSR BC03蓝牙模块,模块只给出与单片机通信部分的简单接口指令。当模组收到由C8051F020控制单元送来的状态询问指令(空白+?),模组会经由TX脚将参数字符并加结束字符“0x0D0x0A”传送到主机,该命令当C8051F020控制单元经由TXD设定指令给BC03模组,模组将同时被命令去执行相应的动作。指令有数个字符,第一个是为“空格”(ASCII=20H),其余则为指令字符,同时BC03模组将有一个反馈字符在100 ms内经过BC03MMUART送到控制单元,表示系统目前的执行情况和蓝牙系统当前的状态。
C8051F020单片机控制部分软件主要完成以下几个功能:对BC03蓝牙模组指令控制,对LCD1602系统状态显示的指令控制和按键输入指令的译码等功能。
基于C8051F020单片机控制BC03MM蓝牙模组系统控制流程图如图4所示。
4 结语
对基于C8051F020单片机和BC03MM蓝牙模组构建的系统进行功能验证,系统能够实现蓝牙手机或者PC设备与BC03蓝牙模组的互连,完成蓝牙模组的HFP和A2DP功能,音频最大输出功率可以达到Po=14 W(RL=4 Ω),可以直接驱动4 Ω或者8 Ω的音箱负载,并且人机界面友好,操作简单、价格低廉、可移植性好,方便用于商业用途。