历史上的今天
今天是:2025年04月07日(星期一)
2018年04月07日 | 采用nRF24Z1无线射频芯片的数字音频的无线转发系统设计
2018-04-07 来源:eefocus
引言
模拟音频受外界影响较大,稳定性差。因此数字音频渐渐取代模拟音频成为现代音频的主要形式。数字音频信号直接从机顶盒输出,不在内部进行D/A转换,并将数字音频进行无线转发,在接收端进行D/A转换,可避免音频布线的影响以及音频线上音质的损耗。这种方法可
有效地减少机顶盒内部的干扰,并保证较好的音质。
2.4 GHz数字高速射频技术是目前较为成熟的音频应用无线技术。其抗干扰性强、传输距离远,并且采用完全开放式的网络协议。nRF24 Z1无线射频芯片工作于2.4 GHz,通信速率高达4 Mbps,实际音频数据传输率为1.54 Mbps,且具有S/PDIF数字音频信号接口。本方案从机顶盒直接提取数字音频S/PDIF信号,保证了较好的音质;通过nRF24Z1无线射频芯片进行发送和接收,保证了音频无损无线传输。
1 系统总体方案设计
机顶盒数字音频无线转发系统的总体结构框图如图1所示。系统主要由数字音频信号的提取与传输、数字音频无线发送、数字音频无线接收三部分组成。大部分的机顶盒都具有数字音频S/PDIF输出接口,且一般采用同轴线输出。射频芯片nRF24Z1既可用在音源端发送音频数据,也可用在接收端接收音频数据。采用PIC18系列单片机配置射频芯片相应的寄存器,实现数字音频无线发送与接收。nRF24Z1芯片经过内部处理后输出I2S数字音频信号,送至数模转换芯片以及外围电路处理,实现模拟接收。同时,采用单片机控制音量的增减。

2 无线射频芯片功能分析
nRF24Z1是NorDIC公司推出的单片式CD音质数字音频芯片,无线音频传输速率高达48KspS,16位,无需任何压缩。它工作在全球通用的2.4 GHz频段,以极低的成本提供高性能和高集成度的解决方案;具有I2S和S/PDIF数字音频接口,方便与ADC/DAC直接连接,或者与具有数字音频输出口的设备直接相连。由于所有与音频I/O、RF协议和RF链路管理的有关功能已经嵌入到芯片内部,芯片提供透明的1.54 Mbps的音频通道,而不需要额外的时间处理。
3 数字音频信号的提取及接口电路
大部分的机顶盒都具有S/PDIF同轴输出口。对于不具有S/PDIF直接输出接口的机顶盒,可以自己增加S/PDIF光纤/同轴输出接口。对于不同的机顶盒采用不同的加装方法:
①MPEG-2解码芯片有S/PDIF输出脚的机顶盒,将S/PDIF输出信号引出,送到缓冲放大器和同轴RCA端子就可以输出数字S/PDIF信号。
②对于只有I2S输出的MPEG-2解码芯片,将I2S的DATA、BCLK和LRCK信号送入PCM/SPDIF转换的芯片,以S/PDIF形式输出,并加上转换电路即可实现S/PDIF信号的提取。
S/PDIF同轴线传输的信号合并了数据和时钟信号,频率高且具有尖锐的边缘特性。同轴线具有75 Ω的特性阻抗,并且输出的S/PDIF信号电压只有0.5 Vpp,不能直接连接CMOS芯片。所以要将输出的S/PDIF信号通过电平转换,使其能够直接输入到nRF24Z1芯片的S/PDIF输入引脚。电平转换电路如图2所示。

S/PDIF信号经过前端电路将电压抬高,然后通过74HC04反相放大器放大至TTL电平,但此时输出的信号是反相的,所以将其再经过74HC 04的另一组反相端口,将信号再反相回来。注意要将74HC04的14和7引脚分别接到+3.3V和地上,使电路正常工作;S/PDIF信号达到了nRF24 Z1的工作电压,可直接使用。
4 数字音频信号的无线发送
nRF24Z1可工作于发送模式或接收模式。当Mode引脚接高电平时为发送模式,发送音频数据;接低电平时,则接收音频数据。nRF24Z1芯片的发送端和接收端分别采用MCU进行控制。
PIC18系列单片机是MicroChip公司推出的增强型8位单片机,具有高性能的RISC结构CPU、精简指令集和多种中断方式,且执行速度快、程序存储器和数据存储器容量大、功能强。此外,具有最大64 KB可寻址的线性程序存储空间和最大3 936宁节的可寻址的线性数据存储空间。因此选用PIC18系列单片机来控制nRF24Z1芯片。
nRF24Z1具有串行主接口和串行从接口。如果选择串行主接口,则由nRF24Z1控制单片机运作。为了方便功能的增加,选择nRF24Z1的串行从接口,采用I2C总线通信模式。将PIC18F46K20的RC3和RC4引脚分别接nRF24Z1的SSCL和SSDA引脚,并采用模拟I2C总线通信的方法实现连接。I2C总线通信模式连接成功后,由I2C总线向nRF24Z1写入相应的寄存器配置值,令其启动。
nRF24Z1的ATX端接入+5 V直流电源,ARX端接上+3 V电压后,nRF24Z1执行上电复位。上电后,单片机先完成自身的初始化配置,并完成nRF24Z1相应寄存器的初始化配置。nRF24Z1发送端初始化配置如表1所列。

初始化配置完成后,ATX和ARX间将进行射频链路的初始化,尝试建立通信链路。ATX在有效频段内探访具有正确ID的ARX单元,通过在所有可能的频道上发送短的搜索包来试图与ARX建立链接,直到收到来自ARX的应答包。ATX在每个频道上发送一个包,并等待一定的时间以确定是否有应答。而ARX也在所有可用的频道上监听搜索包来试图与ATX建立链接。当收到一个搜索包时,ARX将回送一个应答包来确认一个可用的链接。链路建立后,发射模块给接收模块发送私密地址,接收模块将配置私密的地址,然后返回应答信号。链路建立后音频序列将通过nRF24 Z1以数据包的形式发送出去,配对的接收端收到音频序列后再进行相应的处理。
5 数字音频信号的无线接收
nRF24Z1的Mode脚接低电平,处于音频接收模式。同样采用PIC18系列单片机控制nRF24Z1芯片,音频接收机的配置和控制数据通过I2C接口输入。nRF24Z1接收端初始化配置如表2所列。

为了实现满意的音频质量,采用QoS机制。自适应跳频是集成的一部分。自适应跳频算法所使用的频率由38个频率寄存器所指定。发送端和接收端所使用的丁作频率根据时间和空中出现的噪声而进行改变。跳频序列也由连续寄存器CH0~CH37指定。因此在初始化配置时,发送端和接收端设置同一基本跳频序列,这样也可以使建链时间最短。
接收端收到数字音频无线信号后,可分别通过S/PDIF或I2S接口输出音频信号。本文采用I2S接口输出,并选用WM8711BL的DAC芯片进行数模转换,输出模拟音频并用耳机接收。WM8711BL芯片具有I2C总线接口,采用PIC18系列单片机对其相应的寄存器地址进行初始化配置。WM8711BL初始化配置如表3所列。

DAC芯片将数字音频转变为左右声道的模拟音频,实现相应的模拟接收。此时输出的音量为固定值,为了控制音量的增减,设置两个开关按键,通过PIC18系列单片机PD0和PD1口进行控制。
为了能够节省电量的损耗,平时让射频芯片处于掉电模式,通过中断唤醒或定时器唤醒功能使其恢复工作状态。
结语
本文介绍了如何将机顶盒音频信号通过nRF24Z1射频芯片实现数字音频无线传输。采用PIC18系统单片机进行配置,处理速度快。整个系统传输速率高、体积小、携带方便,且通信距离远,可广泛用于无线耳机、无线音响等产品中。
史海拾趣
|
本帖最后由 paulhyde 于 2014-9-15 04:14 编辑 设计出有一定输出电压范围和功能的数控直流电源,要求输出电压的范围为0V~9.9V,纹波不大于10mV,输出电流大于500mA,能预制置输出初值,输出电压值由数码管显示。 类似以上要求的也行.. ...… 查看全部问答> |
|
1、同步电路和异步电路的区别是什么?(仕兰微电子) 2、什么是同步逻辑和异步逻辑?(汉王笔试) 同步逻辑是时钟之间有固定的因果关系。异步逻辑是各时钟之间没有固定的因果关系。 電路設計可分類為同步電路和非同步電路設計。同步電路利用時鐘 ...… 查看全部问答> |
|
请问没有ARM硬件平台的条件下,可以在pc机上只通过SDK编译调试串口程序,实现和另一台pc的串口数据收发么? 环境:pc机1+vs2005,WinCE6.0, pc机2+通用串口精灵 注:我在WinCE中映射了串口,但是运行程序时提示无法打开串口,请问可 ...… 查看全部问答> |
|
如标题所述,本人想通过usb链接手机的方式实现wince上网,在这里请教各位大侠,大家可以给我提供资料或者建议,小弟在这不胜感激!… 查看全部问答> |
|
大家好,我使用函数ExtTextOut 输出文字,但是由于我的程序有一个全屏的背景图,所以加载图片后文字被遮挡住了。 我大概知道可能是透明、背景色之类的问题,但是改了参数效果依然不对,麻烦大家给指点下,最好能有个例子详细些,多谢啦… 查看全部问答> |
|
我用MPLAB V7.52 連接ICD2時,報錯,錯誤代碼是 Connecting to MPLAB ICD 2 ...Connected ICD0133: Firmware does not support command (0x7). ICD0082: Failed MPLAB ICD 2 operation MPLAB ICD 2 Ready 請問該怎麼弄,上一次用還是好好的呀 ...… 查看全部问答> |
|
嵌入式需要软件和硬件方面的知识,软件方面有操作系统,硬件方面有微型计算机原理方面的。还需要掌握一些什么,望大家给出一个方向,以后准备朝这个方向发展。谢谢了!!… 查看全部问答> |
|
PC机通过9针RS232给单片机数据,单片机由串口中断获取数据并执行判断 为了方便调试,在p0/p2口接了灯。 可是实际在板上调试时,不论在PC端发任何数据,发现该LED一直不变。偶 ...… 查看全部问答> |
|
#include <pic.h>__CONFIG(0X1832);// 877A,硬件已经调试通过#define keyO3 RB5 //接上拉做键盘输入#define keyO4 RB4 // #define keyI2 RB2 //做输出与RB4\\RB5\\RB ...… 查看全部问答> |
|
如何在Hiwave中看到PORTB的端口状态,是在Memory窗口中吗?PORTB的地址是多少?我用的是mc9212dg128的例子。谢谢! … 查看全部问答> |




