基于IEEE802.1 5.4/ZigBee的语音通信系统
1.3 硬件实现
硬件方案充分利用MSP430片上12位ADC和DAC,从而无需外部语音编码解码器件,系统更加精简。语音传输系统的硬件电路如图2所示。
麦克风放大器及前置低通滤波器电路的工作原理:U1构成的反向放大器提供麦克风放大,其增益由R4和R5决定;R2、R3分压后为U1提供合适的偏置,R1给驻极体话筒提供偏置电压,C2阻止直流成分输入到放大器;一级Sallen-key结构的切比雪夫低通滤波器R8和C5构成一阶低通滤波器,用于ADC的反堆叠滤波。后置滤波器由一级Sallen-key结构的切比雪夫低通滤波器、一级RC低通滤波器和一级电压跟随器U4构成。三级滤波器的截止频率彼此稍有错位,以限制整个滤波电路通带的纹波。整个电路的截止频率设置在3 400 Hz,电压跟随器用于防止电路从输出获得反馈,并提供电流驱动。
在设计音频部分的电路时,考虑到采样率为10 kHz,根据奈奎斯特取样定理,系统的有效取样频率Os必须满足Os≥2ON的规定。在此ON称为奈奎斯特频率而ON称为奈奎斯特率。当采样频率小于奈奎斯特频率时,在接收端恢复的信号失真较大,这是因为存在信号的混迭;当采样频率大于或等于奈奎斯特频率时,恢复信号与原信号基本一致。输入的信号频率最高不能超过5kHz,在输入ADC之前必须加一个低通滤波器,将高于5 kHz的信号加以滤除。
2 软件实现
软件设计主要是基于MSP430F168与CC2420之间的SPI通信。通过设计单片机的SPI寄存器来驱动CC2420,进而设置和读取射频芯片的寄存器值,实现相应的发送和接收功能。
2.1 系统功能实现
远程端对语音数据进行A/D转换并打包发送。为实现语音实时通信,应尽量减少帧间等待时间,以提高有效数据率。为达到最大传输效率,理论上应使用最大载荷打包,但较长的数据帧也更容易被外界干扰信号破坏,同时也增加了语音迟延。综合考虑滤波器的截止频率以及CC2420的节点传输速度,A/D转换采用10 kHz的采样频率,8位分辨率。MSP430的主频为8 MHz,ADC将其8分频,单通道单次转换。定时器B与其时钟同步,每50μs产生一次中断。每两次中断进行一次转换,并将数据读出取高8位。ADC一次采样84个8位信号为一个数据包,这个数据包在被RF发送出去之前由协议栈自动加上一个12Byte的包头。由于CC2420传送速率为250kbit·s-1,所以每传送一个数据包耗时约3.072ms。
近程端将接收到的语音采集数据进行还原。D/A转换时钟设置与A/D转换同步。并且也采用10 kHz的频率。用单片机的定时器A模块,每100μs产生一次中断,在中断中进行一次D/A转换。一个ADC的输入缓冲区或一个DAC的输出缓冲区的大小为84Byte。装满这些缓冲区需要8.4 ms。系统流程图如图3所示。
2.2 发送接收子程序实现
发送端获取了A/D转换的结果,并存储于所开设的缓存中。在发送数据时,将存于缓存的数据,加上网络层MAC层和物理层的帧头,通过SPI总线发送到射频发射芯片的发送FIFO中。为简化传输数据,采用16位短地址寻址而非64位IEEE地址。接收数据时,首先射频发射芯片监听信道中的数据,判断数据是否发送该设备。如果是,则读取该数据到接收FIFO,然后触发,通过SPI总线将数据发送到MCU;通过MCU处理,去掉各层的帧头,最后将数据存放到指定的缓存区中。具体完成发送接收部分的子程序流程如图4所示。
2.3 反向控制与状态切换
在无线通信过程中,无论主机还是分机的CC2420通信模块在某一时刻只能被配置成一种传输模式,即发射模式或接收模式,因此无线信道实质提供了一种半双工通信方式。而在实际当中通话双方不能像对讲机那样采用按键进行发射和接收模式的切换,所以既要保证语音数据的实时性和准确性,又要保证反向控制信号的有效传输,软件的状态切换成为迫切需要解决的问题。
利用如图4所示的收发子程序控制远程端是否输出方波。按键按下,则发送控制命令至远程端,收到控制命令后,运用定时器的比较模式输出方波。从系统考虑,每个通信节点同时具备收发功能。依据CC2420状态机可以方便地进行状态切换,每次发送完毕恢复无线收发模块至接收状态即可。
3 结束语
在系统调试过程中,考虑到语音传输的同步性,避免语音信号无线接收与SPI读取数据的速度RXFIFO使用冲突,接收端采用双缓冲区的设计;另外由于每个节点同时具备收发功能,考虑到半双工的特点,采用语音信号高优先级,只在每次中断检测方波控制信号的方法,既保证了语音信号的实时传输,控制信号又实时有效。由于CC2420没有专用的软件监听包,语音传输信号用正弦波信号模拟,同时反向发射方波输出控制信号。经过调试,最终在D/A输出口,稳定的输出阶梯状正弦波,在
单片机 51单片机 MCU 单片机视频教程 单片机开发 ARM单片机 AVR单片机 PIC单片机 Atmel stm32 单片机学习 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)