基于FM的无线扩声系统
2014-06-27巩学芳宋晓梅霍小波
巩学芳,宋晓梅,霍小波,李 楠
(西安工程大学 电子信息学院,陕西 西安 710048)
扩声系统在日常的课堂教学、学术讲座、小型会议中应用广泛[1].现有扩声系统按语音传输方式可分为有线系统和无线系统.有线扩声系统语音传感部分与功率放大部分采用有线连接,而无线扩声系统则将上述2部分通过无线方式进行互联通信.因此与有线扩声系统相比,无线扩声系统手持移动更方便.文献[2]设计的无线话筒,未采用单片机等处理器进行控制,运用放大电路进行播放,通过调节磁芯来改变工作频率,但是硬件外围器件较多不便调试,操作复杂,增加了成本;文献[3]采用nRF905芯片[4]进行无线传输设计,功耗低,但是工作模式切换方式不便.
本文提出了一种基于FM的无线扩声系统.该系统利用C8051F340单片机控制FM芯片完成语音信号的无线收发,运用GUI软件将从USB接收到的语音数据借助计算机的声卡与功放系统进行放大播放.该系统收发模块采用一体设计,外扩器件少,集成度高,体积小,便于手持移动,可自动识别切换收发工作模式;同时通过GUI软件可直观方便的修改工作频率,且掉电后频率值不会改变.
1 系统方案
本文提出的基于FM的无线扩声系统,其系统原理如图1所示.该无线扩声系统包括FM发射模块、FM接收模块和PC机端的GUI软件.FM发射模块利用话筒将语音信号转换成电信号,经运放放大后再由RDA5820(简称RDA)进行FM发射.FM接收模块利用C8051F340[5-6]对RDA接收到的模拟语音信号进行采样,并借助USB传送给计算机的GUI软件.FM收发模块均通过C8051F340利用IIC总线来控制RDA的无线语音收发.考虑到FM收发模块软硬件相似度高,为简化设计,降低成本,方便用户使用,本文将两模块集成到一块PCB板,设计了一个可自动识别、切换工作方式的方案:USB端的VBUS带电,工作在接收状态;否则工作在发射状态.PC机端的GUI软件是通过LabVIEW实现的,LabVIEW程序通过USB器件和C8051F340单片机进行通信完成频率的修改,并借助PC机的声卡和功放系统进行语音的放大播放.发射模块需3V电池供电,接收模块通过电脑端USB供电.
2 硬件设计
该系统由RDA无线收发模块、运放模块和微控制器C8051F340单片机模块组成.
RDA无线收发模块中,RDA芯片灵敏度高、噪声小、低功耗、抗干扰能力强、外接组件极少、体积小,非常适合本设计使用.
运放模块采用最通用最简易的驻极体话筒,该话筒工作时必须外加偏置.其放大电路,由三极管、电阻、电容组成共集电极,器件少,效果好,便于使用.控制单元采用C8051F340单片机作为微控制器,通过IIC接口来控制与RDA芯片的无线通信.该单片机内置双线双向串行总线SMBUS I/O接口,与IIC串行总线兼容,通信速度比较快.系统主要硬件关系连接图如图2所示.
图1 系统原理框图 图2 主要器件硬件关系连接图
图2中单片机的P0.0和P0.1端口分别作为FM芯片的数据端口和时钟端口,发射模块放大电路与FM芯片的声道相连,接收模块中,单片机的P2.1端口对FM芯片的输出进行采样,将模拟信号转化成数字信号.发射模块随身携带,所以用3V电池进行供电,接收模块借助PC机端进行播放,所以通过电脑的USB接口进行供电.
3 软件设计
软件设计主要实现单片机和USB的初始化设置、信号的接收与发送,LabVIEW调频界面的设计.系统的软件设计包括C8051F340单片机程序设计和LabVIEW程序设计两部分.
(a) 主程序流程图 (b) 中断服务程序流程图3 下位机程序流程图
3.1 C8051F340程序设计
C8051F340单片机程序主要由初始化程序、USB驱动函数、无线收/发程序、FLASH擦写函数组成.初始化程序主要包括单片机初始化和USB初始化程序.程序初始化之后通过辨别VBUS是否带电来区分收发状态.若为接收状态则需要单片机对声音采样,将模拟信号转化成数字信号,然后将采集的数据存储到数组a和数组b中,a,b数组交替工作,分别完成采样数据存储和将数据通过USB端口发送到PC机中的任务.下位机的主程序流程图如图3(a)所示,修改频率是通过中断实现的,接收状态时,修改上位机LabVIEW的前面板的频率会触发中断,USB接收中断,下位机接收上位机的数据,通过下位机程序将输入的频率数值转换成可以直接存储到寄存器的十六进制数值,再存储到单片机的FLASH里,修改频率成功,中断返回.其中断服务程序流程如图3(b)所示.
3.1.1 初始化程序 初始化程序包括C8051F340单片机和USB的初始化.单片机初始化将时钟设为24MHz,既可以满足USB工作的需要,又可以满足IIC通信和RDA5820芯片工作的需要;定时器3配置为以25ms为周期溢出,以检测SCL低电平超时;设置AD接口为P2.1对声音进行采样,模拟信号转换为数字信号.定时器3的相关设置如下所示:
TMR3CN=0x04;//使能定时器3
TMR3RLL=0xAF;//对定时器3的低8位进行设置
TMR3RLH=0x3C;//对定时器3的低8位进行设置
USB通信主要通过调用USB器件的API函数实现,主要包括USB-Clock-Start()USB时钟初始化函数,USB-Init()USB初始化函数,USB-Int-Enable() USB使能中断函数[5].通过设置定时器0来实现对RDA5820芯片的传输速率的设置.本文传输速度为100KHz,通过TCON(计数器/定时器控制寄存器),TMOD(定时器方式寄存器)和CKCON(时钟控制寄存器)完成对定时器0的设置.其代码如下:
TCON=0x10;//使能定时器0
TMOD=0x02;//工作在方式2
CKCON=0x04;//定时器0使用系统时钟
TH0=0xDB;//定时器0高字节初始值设为0xDB
对定时器0和定时器3的设置保证了IIC的正常通信.
图4 SMBUS主发送时序图
3.1.2 无线收/发程序 无线收/发程序主要是通过IIC读写函数来实现对RDA芯片的相关寄存器进行设置.本文设计的IIC函数是通过内置在单片机上的双线双向串行总线SMBUS I/O接口实现的,使用P0.0作为IIC通信的数据接口,P0.1作为IIC通信的时钟接口.IIC正常通信需要通过一系列的中断实现,其中写函数(即SMBUS主发送) 时序图如图4所示.定时器0(在初始化程序中已作说明)和定时器3的设置对IIC的正常通信也很重要.TMR3CN定时器3的中断服务程序函数如下所示:
TMR3CN=TMR3CN & 0x3F;//定时器3的中断标志位清0
SMB0CF=SMB0CF & 0x7F;//禁止IIC
SMB0CF=SMB0CF | 0x80;//使能IIC
图4的时序图只给出了写2个字节的传输时序,本设计中写函数是5个字节,只需将时序图延续3个发送数据时序即可.根据图4的时序图编写写函数,程序代码简写如下:
while(SMB0CF & 0x20);//检测IIC是否空闲
STA=1;//STA位置1产生起始条件
SMB0DAT=0x22;//从地址和读方向位发送给SMB0DAT数据寄存器,触发中断.
IIC的中断服务程序主要程序语句如下:
switch(SMB0CN & 0xFC)//判别SMBUS的控制寄存器SMB0CN的值
case 0xE0:…//产生起始条件
switch(SMB0CN & 0xFE)//判别SMBUS的控制寄存器SMB0CN的值
case 0xC0:…//产生起始条件
case 0xC2:…//收到一个ACK
使用SMBUS时序编写IIC函数不同于软件模拟IIC[7],不必根据不同的时钟频率编写精确的延时函数,具有很强的移植性.
3.1.3 Flash擦写函数及USB驱动函数 C8051F340内部可编程的Flash存储器具有非易失性的特点,所以Flash擦写函数适用于频率值的存储,掉电后,之前设置的频率会保存在Flash存储器中,方便下次直接收/发.本程序中Flash存储器只需读写2个字节的数据,在0x6000地址中存储的是频率值的高8位,0x6001地址存储的是频率值的低8位.USB驱动函数,调用Block-Read()函数[5]将上位机中的数据存储到数组中,经过函数处理转换成 Flash可写的数据,RDA读取Flash数据,完成收/发频率的修改,同时将数据存储到Flash寄存器中.
3.2 LabVIEW程序设计
LabVIEW程序的主要功能是完成用户图形界面和基于USB主机通信.本设计中使用图形化界面前面板,用户在空白框里修改频率,点击确定即可.程序面板主要包括频率设置模块,语音采集与播放模块,LabVIEW软件和C8051F340单片机.设置频率模块,前面板输入的电台频率通过数学计算和数组转换成单片机可识别的数据,利用中断函数SI-wirte()[5]写到单片机中.声音信号采集与播放模块,采样频率设为48MHz,缓冲数据设为1800,每次播放数据1800.准备播放的1800个数据经SI-Read()函数被PC机读取,进行播放和缩放信号,观察其波形和频谱.
4 实 验
通过2个实验验证所设计系统的可行性.在PC机LabVIEW的前面板设置发射频率和接收频率均为97.4MHz,观察PC机的波形及语音播放效果.具体实验数据如下所示:
实验一验证收发频率是否可修改及通信是否正常.
图5为工作在97.4MHz频率下的实验结果.从图5可看出信号流经探针3时上机处的状态探针1,2中的值为0,且探针3中有值表明信号流经探针1,2时通信正常,即单片机和PC机连接正确,探针2中的值为0,表明SI-Open()函数打开USB器件成功.探针3中的值为974,是输入频率值的10倍,这是由于在LabVIEW程序中将输入值乘了10倍,因此表明输入频率97.4MHz的成功.探针4中的数值是SI-Read()函数[5]读取到的语音数据值,探针4中有数据说明PC机可以正常播送单片机采样到的语音信号.探针1,2,3,4中数值正常也表明了通信正常.
图5 实验一结果的程序面板
图6 实验二结果的前面板
实验二验证接收语音放大播放效果.
图6为工作在97.4MHz频率下的实验结果的前面板.图中2个USB检测灯被点亮表明USB连接成功并被成功打开.波形没有失真,表明语音信号流畅无噪声,与预期效果一致.本次实验接收端在发射端20米范围内,所以信号的收/发比较清晰,几乎没有噪声,收发信号时也没有延迟,实验结果比较满意.
5 结束语
本文设计的基于FM的无线扩声系统,通过C8051F340单片机控制RDA5820芯片,实现了语音信号的无线收发,收发模块一体设计,节约成本,通过连接VBUS即可辨别接收/发射模式,工作模式切换简单;接收模块与PC机相连,借助PC机的扩声系统,音效更好;可在不同场合自由设置工作频率以避免公共频道的干扰,频率修改借助GUI软件进行,操作简单方便.经过实验验证,该系统是合理可行的.
参考文献:
[1] 段海涛,冀燕丽,王敬.多媒体教室扩声系统探讨[J].现代教育技术,2013,23(3):59-63.
[2] 陈元棋.教学与舞台两用无线话筒的设计与调试[J].实验室研究与探索,1995(1):42-47.
[3] 肖志勇,杨小玲,李光泉.基于nRF905芯片的无线传输设计与实现[J].计算机与现代化,2005 (9):121-126.
[4] 郝妍娜,洪志良.基于MCU和nRF905的低功耗远距离无线传输系统[J].电子技术应用,2007(8):44-46.
[5] 朱磊,刘东.C8051F340与LabVIEW基于API的USB通信[J].单片机与嵌入式系统应用,2007(1):35-37.
[6] 陆敏敏,李明.基于C8051F340船舶模拟器采集卡设计[J].电子测量技术,2011,34(6):91-94.
[7] 徐伟,刘建成.基于模拟IIC总线的电压测量系统[J].南京信息工程大学学报:自然科学版,2011,3(1):91-96.