DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1968|回复: 3
打印 上一主题 下一主题

[无线] 基于AVR 8位单片机的短距离立体声数字音频无线传输系统开发

  [复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 19:43:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  
         
    摘 要: 采用WM8739/8731、nRF2401和ATmega48等芯片实现短距离数字音频无线传输系统的设计,详细介绍了系统的软硬件设计、实现以及ADPCM音频编码方法等,为解决低成本采集和传输数字音频问题提供了一种参考方法。
关键词: 短距离通信  数字音频  无线传输  AVR单片机
    与相同传输距离的有线音频传输系统相比,无线音频传输系统减少了线缆的开销,传输距离也不再受线缆长度的限制,解决了有线音频传输布线困难、影响美观和浪费线缆等问题,而且占用空间小、能耗低、使用更加灵活、方便。因此,短距离无线通信已成为当前研究的一个热点。ISM(Industrial Scientific Medical)2.4GHz(2.4G~2.4835GHz)频段, 由于具有较高的带宽和相对较低的实现成本,在各种产品中得到了广泛的应用。但这种通用性也产生了性能下降与成本增加等问题。目前国内外同类无线技术方案主要是基于蓝牙技术的产品方案以及一些小厂商提供的基于2.4GHz的产品方案。在一些特定的应用中,追求的目标是更低的成本与更高的音质, 对通用性的要求并不高, 采用蓝牙或无线局域网技术则显然不合适。而在音频信号处理过程中,由于其数据量大,处理算法复杂,实时性要求比较高,当今一些小厂商提供的基于2.4GHz的产品方案[1]实现成本相应较高。
    基于以上特点,本着先进性、科学性、稳定性、经济性相统一的原则,本文设计一种低成本、适用面广的无线数字音频传输系统。
1 数字音频无线传输系统方案设计
    本系统以MCU主控模块为核心,由发送子系统和接收子系统组成。发送部分从音频输出设备采集音频信号,经过A/D转换模块将模拟信号转换为数字音频信号,再通过SPI接口将数字音频信号传至主控模块进行压缩编码处理,压缩完成的数据成帧后经串行口传送给射频芯片,经过射频芯片内部的一系列处理后,将控制信号和音频数据发送出去(发送的数据需要进行一定的功率放大处理,以达到较好的传输效果)。接收部分的工作是其逆过程。系统原理框图如图1所示。





2 系统各模块的硬件设计与实现
2.1 A/D和D/A转换模块设计及初始配置
    A/D和D/A转换模块选择WOLFSON 公司的WM8739和WM8731器件。WM8731是一款带有集成耳机驱动器的极低功耗、高质量音频编码解码器,专为便携数字音频应用而设计。该器件可以提供CD音质的音频录音和回放,为16Ω的负载提供50mW的输出功率;带有一个片上时钟发生器,支持多种时钟模式,通过一个16MHz时钟,该器件可以直接生成44.1kHz、48kHz和96kHz等采样率,以及MP3标准定义的其他采样率,完全不需要一个独立的锁相环(phase locked loop)或晶振,支持其他公用的主时钟频率,例如12.288MHz。而WM8739与WM8731不同的是,它并没有将A/D转化和D/A转化集成在一起,它只能用作A/D转换模块,其他性能与WM8731相同,其价格较WM8731便宜。
    芯片的初始配置如下:
    硬件配置:CSB(Pin20)及MODE(Pin19)均配置为低电平(两线制传输)。
    软件配置:工作模式选择从机模式,数据顺序选择MSB首先发送,采样率控制模式选择正常模式384分频,核时钟同主时钟一样(由主控模块提供,为16MHz),这样由核时钟384分频即可得到左右声道的44.1kHz的采样频率,该频率是标准CD 音源的采样频率。
    其他的软件配置字均为缺省值。该配置字由SDIN和SCLK写入,具体规则可参考芯片使用手册[2]。
2.2 RF发送/接收模块设计及初始配置
    RF发送/接收模块,选择NORDIC公司的nRF2401。nRF2401[3]芯片与蓝牙一样,都工作在2.4GHz自由频段,能够在全球无线市场畅通无阻;支持多点间通信,最高传输速率达1Mbps,而且比蓝牙具有更高的传输速度;采用SoC方法设计,只需少量外围元件即可组成射频收发电路。
    对该芯片的初始配置如下:对发送和接收模块的激活模式分别选择transmit模式和receive模式,通信模式选择Direct模式,频率通道初始配置为2.4GHz,输出功率增益选择为-10dBm,晶振频率选择16MHz,RF数据传输速率选择1Mbps。
    其他的软件配置字均为缺省值。其配置字由DATA端口串行逐位写入。
2.3 MCU主控模块及系统接口设计
    MCU主控模块选择ATMEL公司的AVR ATmega48[4]。AVR ATmega48是高性能、低功耗的8位AVR微处理器,采用先进的RISC结构,131 条指令,大多数指令的执行时间为单个时钟周期,32×8通用工作寄存器,只需两个时钟周期的硬件乘法器;4KB的系统内可编程 Flash和256B的EEPROM,擦写寿命均为10 000次;512B的片内SRAM;具有独立锁定位的可选Boot代码区,通过片上Boot程序实现系统内编程,真正的同时读写操作;两个具有独立预分频器和比较器功能的8 位定时器/ 计数器,一个具有预分频器、比较功能和捕捉功能的16 位定时器/ 计数器,可编程的串行USART 接口,可工作于主机/从机模式的SPI 串行接口。系统接口设计如下:
    (1)如图2所示将三个模块连接在一起。在对各个模块进行初始配置之前,要按照图2所示的端口连接方向正确设置端口的输入输出模式,然后要对系统的各个时钟作正确的配置。系统主时钟由16MHz的外部晶振产生,将外部晶振接ATmega48的PB6和PB7即可。MCLK可由PB0的第二功能将16MHz的系统时钟输出,此时钟将作为WM8739的工作时钟。ADCLRC可利用PB1的第二功能的定时器输出比较功能,将该计数器的上限设为191即可产生44.1kHz的采样率对比时钟。BCLK可利用PB5的第二功能将主时钟二分频得到SPI 8MHz总线时钟。





    (2)主控模块与A/D模块之间采用SPI串行同步通信。SPI的主要初始控制字配置如下:首先开启SPI使能和关闭SPI中断使能,工作模式选择主机模式,数据次序设为MSB首先发送,主机SCK速率设为fosc/2(fosc为系统主时钟)。在进行数据传输时,BCLK信号作为串行时钟来决定串行传输速率。在ADCLRC信号的同步下,音频数据由ADCDAT传入主控模块进行压缩编码处理。
    (3)主控模块与RF模块之间采用USART串行异步通信。USART主要初始控制字配置如下:开启发送使能,同时关闭接收使能,工作模式选择异步奇校验操作模式,波特率设置为1Mbps,数据为8位,停止位为2位。在向RF模块发送数据时,为保证和接收子系统同步,以ADCLRC信号作为同步信号。
    (4) 接收子系统与发送子系统硬件的连接。除了两个数据传送端口外,其他连接基本一致。将ATmega48的PB4、PD1与ADCDAT、DATA断开,且将PB3(MOSI)与WM8731的DACDAT相连,同时将PB3设置为输出端口。另外,将PD0(RXD)与nRF2401的DATA相连,同时将PD0设置为输入端口。此外,在USART初始设置上要开启接收使能而关闭发送使能即可。
3 主控模块的软件流程
    由于nRF2401的数据传输率为1Mbps,而从WM8739对模拟信号抽样量化后的数据长度为16bit,左右声道的采样率均为44.1kHz,若不对数据进行编码压缩,则需要1.41Mbps(16bit×44.1kHz×2)的数据传输带宽,显然超出了RF模块的数据传输能力。为了充分利用线路资源,而又不希望明显降低音频信号的质量,就要对数据作进一步压缩,本文采用自适应差分脉冲编码调制ADPCM (Adaptive Difference Pulse Code Modulation)的压缩算法。
    ADPCM是利用样本与样本之间的高度相关性和量化阶自适应来压缩数据的一种波形编码技术,它综合了APCM的自适应特性和DPCM系统的差分特性,是一种性能较好的波形编码。ADPCM的核心思想是:利用自适应改变量化阶的大小,即使用小的量化阶去编码小的差值,使用大的量化阶去编码大的差值;使用过去的样本值估算下一个输入样本的预测值,使实际样本值和预测值之间的差值总是最小。ADPCM记录的量化值不是每个采样点的幅值,而是该点的幅值与前一个采样点幅值之差。这样16bit的数据经ADPCM编码之后只需4bit表示其差值,数据压缩比为4:1。接收端的译码器使用与发送端相同的算法,利用传送来的信号确定量化器和逆量化器中的量化阶大小,并且用它来计算下一个接收信号的预测值。ADPCM算法实现框图如图3所示。





    为了保证数据传输的有效性,以及避免其他同频率信号的干扰,定义了如表1所示的传输数据的帧结构。





    数据帧的总长度为64B,其中帧头为1B,用于射频芯片进行帧同步的前导码,3B,用于USART进行帧同步的同步码,3B作为地址码。另外为了保证接收端解码后的数据的连续性,整个程序流程将引入“双缓存区结构”即存储区和发送区,在发送一帧数据(位于发送区)的同时,要完成对当前帧数据的压缩编码及存储(存于存储区),在存储区放满之后要将该存储区则变为发送区,而原来的发送区变为新的存储区。在一帧的结尾还要产生一个CRC循环校验码,便于在接收端判断传送数据是否正确有效。接收端收到数据时,要先通过地址码判断数据是否有效,其余过程为发送端的逆过程。发送子系统程序流程如图4所示。





    为避免在2.4GHz公共频段上容易出现的对音质的干扰,本系统提供了频点选择功能,有125个频点可选。如果系统在工作过程中,发现有较强的噪音出现,即在当前频点存在干扰影响输出音质时,可选择新的工作频点,以保持产品良好的使用效果。
4 实验结果与结论
    本系统的设计充分利用了ATmega48丰富的片上外设,方便地实现了对语音芯片WM8739/8731和单片无线收发芯片nRF2401的连接。本系统应用于点对点的无线数据传输中,系统工作于ISM频段,有125个可选频点,44.1Kbps数字音频采样率,16bit样本量化级,20Hz"20kHz频率响应,音频输出达到CD音质效果,有效传输距离达到100m,有障碍物情况下能达到40m。
    本系统为无线传输系统提供了一种比较实用且经济的解决方案,可以广泛地应用于无线耳机、话筒,小范围内的广播、家庭影院的后置音箱、多功能会议厅、多房间无线音响系统,无线教室教学系统等场合。
参考文献
[1] 胡应宏,曾庆喜,杨英杰. 基于TMS32OC55O9 DSP的无线语音传输采集传输系统[J]. 东北电力大学学报,2006,26(2):65-68.
[2]  WOLFSON  Corp.  Portable internet audio CODEC with headphone driver and programmable sample rates WM8731/WM8731L Rev. 4.0. [img]http://www.wolfsonmicro.com.2005.]http://www.wolfsonmicro.com.2005.
[3]  Nordic Corp. Single chip 2.4GHz radio transceiver nRF2401A Rev. 1.0,[img]http://www.nordicsemi.no.2004.]http://www.nordicsemi.no.2004.
[4]  Atmel Corp. 8-bit AVR microcontroller with 8K Bytes in-system programmable flash ATmega48/V Rev. 2545G-AVR-06/06,[img]http://www.atmel.com.2006.]http://www.atmel.com.2006.
  
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
沙发
发表于 2012-3-22 19:09:08 | 只看该作者
很好!很强大!













[img]http://www.rzzg.com/]软装中国 [img]http://www.rzzg.com/]www.rzzg.com [img]http://www.jianfei.info/]2012年减肥药排行榜 [img]http://www.jianfei.info/]http://www.jianfei.info/
板凳
发表于 2012-6-3 12:51:10 | 只看该作者
好贴,绝对要支持下!!~~
地板
发表于 2012-12-25 13:08:57 | 只看该作者
我见过的最好的帖子了,谢谢楼主
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-11-14 20:02 , 耗时 0.089299 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表