您的当前位置:首页正文

基于nRF24E1无线耳机的设计

2020-09-04 来源:步旅网
维普资讯 http://www.cqvip.com 2006年第7期 福 建 电脑 109 基于nRF24E 1无线耳机的设计 谢光前.殷【摘凯 (常州工学院计算机信息工程学院江苏常州213002) 要】:低功耗、微型化是当前无线通信产品尤其是便携产品的迫切要求。文中首先简要介绍系统级RF收发芯片 nRF24E1的各个功能模块及其特性。然后,设计了具有良好性能的无线耳机系统。并在此基础上给出了无线耳机的软硬件设 计。最后.给出实际应用中的一些体会。 【关键字】:nRF24E1;无线耳机;设计 0.引言 SPI(串行外设接口)的3个口与GPIO(DIN0、DION0和 ON1)和RF收发器重用。SPI硬件不产生任何片选信号,通常 短距离无线通信潜藏着巨大的商机.目前在世界上流行的 DI蓝牙技术就是其中的一种。但是由于蓝牙成本一直无法降低,而 用GPIO的位(P0口)作为外部SPI设备的片选口。 且产品不易开发.因此寻找一种低成本的技术来实现短距离无 (3)RTC唤醒定时器、WTD和RC振荡器 nRF24E1内有一个低功耗的RC振荡器。该振荡器不能禁 线通信更具有现实意义。挪威Nordic公司的无线通信高集成一 当VDD ̄>1.8V时,其连续工作。RTC唤醒定时器和WTD(看 体芯片尤为突出。这类芯片可用与开发无线键盘、无线耳机、无 止。它们的工作时钟为RC振荡器 线鼠标、工业传感器、PC外设、电话外设、报警器、远程遥控等。 门狗)为2个l6可编程定时器。本文设计了一款基于nRF24E1的无线耳机。该芯片嵌人2.4GHz 的I P.——0SC。唤醒定时器和看门狗的定时时问约为300p,s一 无线内核,1Mbps高速无线速率,125频道,可跳频。内置CRC效 80ms.默认值为10ms。 验和多点通信协议控制;集成增强型5l内核。9路10bit ADC, UART异步串口,SPI串口,PWM输出。内置看门狗;所有功能 均在一个6x6mm芯片上实现,片上系统SOC。1.9 3.6V低功耗, 内置电压监视和复位电路。多种省电模式可供选择,待机电流仅 为2A,成本极低;内有电压调节器;待机电流可低至21zA。同时 器件还带有唤醒定时器;采用0.18p,m的CMOS技术制造;无线 功能全部集成在nKF24E1内部;嵌人增强型51单片机内核。可 利用丰富的5l开发资源和经验。迅速掌握和开发;所需外围器 件很少;设计简单。 1.nR 4El功能介绍【I叫 nRF24E1结构框图如图l所示。 (1)微处理器 nR 4El微处理器的指令系统与工业标准8051的指令系 统相兼容,但两者的指令执行时间有些不同。通常。nRF24Ex的 每条指令执行时间为4 20个时钟周期.而工业标准8051的每 条指令执行时间为l2—48个时钟周期。nRF24E1比工业标准 805l增加了ADC、SPI、RF接收器l、RF接收器2、唤醒定时器5 图1 nRF24E1功能模块图 (4)MD转换器 nRF24E1内有9通道l0位ADC.线性转换时问为每l0位 个中断源,以及3个与805l一样的定时器。NRF24E1内含1个 48个CPU指令周期。MD转换器的9个输人可通过软件进行选 N0 AJN7上的电压值转换为数 与8051相同的UART,在传统的异步通信方式下.可用定时器l 择。通道0 7可以把对应引脚AI和定时器2作为UART的波特率发生器。为了便于和外部RAM 字值.通常8用于对nRF24E1工作电压的监控。MD转换器默 0位方式.可通过软件使其工作于6位、8位或12位 区进行数据传递。nRF24E1的CPU还集成2个数据指针。 认工作于1nRF24E1微控制器的时钟直接来源泉于晶振。 方式。 (5)无线收发器 微处理器中有256字节的数据RAM和512字节的R0M。 n砌 El收发器通过内部并行口或内部SPI口与其它模块 上电复位或软件复位后。处理器自动执行ROM中引导区的代  码。用户程序通常是在引导区的引导下.从EEPROM加载到1 进行通信。具有同单片射频收发器nRF2401相同的功能。ver接收器输出的数据准备信号,可通过程序使其为微处 个4KB的RAM中,这个4KB的RAM也可作存储数据用。如果 DuoCei应用当中不用掩膜ROM(也即内含的ROM).程序代码必须从 理器的中断或通过GPIO口传给CPU。NRF240x工作于全球开 4 ̄2.5GHz频段。收发器由1个完整的频率合成器、1个功 外部非易失性存储器中加载。比较常见的是通过SPI接口扩展 放的2.率放大器、1个调节器和2个接收器组成。输出功率、频道和其 型号为25320的EEPROM。 为了控制一些标准8051没有的功能.nRF24E1增加了一些 它射频参数可通过对特殊功能豁口RADIO(0xA0)编程进行控 5mA,接收模式下为 特殊功能寄存器,如RADIO(P2)、ADCCON、ADCDATAH、 制。发射模式下。射频电流消耗仅为10.可通过程序控制收发器的开,关。 ADCDA1 L、ADCs1’ArI1C、PWMCON、PWMDUTY等。其P0和P1 18mA。为了节能.2l 也和标准8051有所不同.其它的特殊功能豁口与标准8051相 2.无线耳机系统硬件设计I同。 (2)PWM和SPI接口 nRF24E1具有一个可编程控制的PWM输出。使用时,通过 式,该方式下。所有与协议相关的操作都由硬件来处理。数据包 程序改变oIOg(即P0.9)的功能。并可编程决定PWM工作于6 格式是通信协议的重要部分。nlu 4El的无线数据包格式如图 位、7位或-8位。 3所示。 无线耳机硬件设计原理图如图2所示。音频的发前过滤、发 后过滤和放大必须在片外进行。采用独特的ShockBurst通信方 维普资讯 http://www.cqvip.com 110 福建 电脑 2006年第7期 f21接收器配置函数 void lnit—Receive old)I unsigned char b: CS=1:,,打开配置方式 Delay100us(0); for(b=0;b<rconf.n;b++1//b<15 图2无线耳机硬件设计原理图 I SpiReadWrite(reonf.1mt[b]);,,发送接收嚣配置字 Peramble I ADDR l PAY=LOAD l CKC J CS=0;,,关配置方式CE=l;,,使能收发功能J 图3 nRF24E1无线数据包格式 (3)接收函数 其中,Preamble是前导码,是由硬件自动加上去的:ADDR是要 void Receiver(void)I 发送的32 4O位地址码;PAYLOAD是有效数据;CRC是CRC unsigned char b: 校验和,它可由内置CRC纠检错硬件电路自动加上,可设为O、8 CS=l:,,打开配置模式 Delayt00us(0); 或16位。ADDR、PAYLOAD和CRC的总长度最大为256位.因 forfb--0",b<rconf.n;b++)I 此,设置较短的地址和校验和可以提高传输效率.但会使可靠性 SpiReadWrite(reonf.butIb ̄;,,发送接收嚣配置字 降低。此外,无线收发器nRF2401有一个144bit的配置字.该配 J CS=0:,,关配置模式 置字规定了无线收发器的接收地址、收发频率、发射功率、无线 f0吒.)I 传输速率、无线收发模式以及CRC校验和的长度和有效数据的 b=ReceivePacket0;,,接收数据包 长度。在同一时刻.无线收发器只能处于接收或发送模式中的一 PutChar(b);,,串口通信函数.将接收到的数据通过串口传送 种,一般以接收模式为待机状态。 J J 3.无线耳机系统软件设计141 此程序除了以上函数外.还有发送函数、串I=I通讯函数、读 nRF24E1具有增强型8051内核.Keil C51支持nRF24E1 MD转换结果函数、接收包处理函数和发送包处理函数等。 开发,因此利用C51开发经验即可编出高效优质的代码。此程序 是经Keil C51 V7.O5编译并调试通过,篇幅有限,仅列出主要功 4.结论 能函数 本设计电路简单.易于实现。经实际调试应用完全可用于点 (1)初始化程序如下: 对点及点对多点的无线数据传输.收到了良好的效果。1Mbps完 void lnit(void)I 全满足一般无线传输的要求。若进行批量生产时可将程序写进 //配置I/O口 P0_ALT=0x06;,,P0.1为RXD.P0.2为TXD nRF24E1的内部RAM中。从而省去了外部串I=I EEPROM,节约 P0..DIR ̄0x09;,,P0.0和P0.3设为输人 了成本 Pl—DIR ̄0x03;//PI.0和PI.1设为输人 I ̄UP=I;,,开Radio.读时不用.写时为电源 SPICLK ̄0;HSPI时钟为XTAI/8 参考文献: SPI_C'rRL=Ox02;/I把SPI与收发通道I(CHI)相连 1.Nordic VLSl ASA Inc.433/8681915M}lz R tran._weiverwith embedded //串口通讯初始化 1Hl=OxOF3;,,晶振为16MI'Lt.波特率为19200( ̄TIM=l且SMOD=l时1 8051 compatible microcontroller and 4 input.10 bit ADC[Z].2004 CKCON l罩0xl 0;,,TlM;l(计数器时钟为CPU时钟的l,41 2.Nordic VLSI ASA lnc.2.4Ghz R 嘞sceiver with embedded 8O51 PC0N。0x80;//SM0D=I(双倍波特率1 compatible microcontroller and 9 input.10 bit ADC.2oo5 SCON;0x52;,,采用串口模式1.使能接收器 3.Nordic VLSI ASA Inc.nlLF24E1 and nlLF24E2 ILl:hyouts.2o03 TMOD;Ox20;,『』使用计数器1.3位计数值自动重载 4.赵亮著,单片机c语言蝙程与实侧。北京.人民邮电出版社.2003 TCON;0x40;,,,启动计数器l ・—— -—●一-+-+・—●一-+-+-+-+-+-+-+ -—— -+ (上接第104页) 做过对比:在实现增加新用户的方法中.用VB来实现“结构”需 般用VBScript脚本语言编写。VBScript是VB的子集。与VB的 要额外增加六十行代码。而由于VC和API的语法一致.在VC 语法一致。这种天然的一致性较好地保证了组件与脚本的“平 中可以直接使用这些“结构”而不需增加一行代码来进行“结构” 滑”对接。但当用VC开发组件时.组件经常在与ASP脚本对接 的转换。对于“指针”的使用VB具有天然的缺陷.在个人空间管 时产生问题。这是因为VC的变量语法与VBScfipt的变量语法 理组件实现中。用VB进行指针地址的分配和释放还需要另外 有很大差别。VC中变量的语法定义种类繁多.而VBScript则语 增加其他的API函数来实现.而VC与诸多语言中相比较其最 法粗略,两者的对接很容易产生冲突。举例来说。VC中关于字符 大的特色之一就是能够对“指针”进行快捷的管理和使用.即能 串类型的定义有:BSTR、LPCSTR、LPSTR、LPCTSTR、LPTSTR、 够直接访问内存,因此用VC实现该组件时,自身即可以方便地 lWSTR、.bstr t、Cstring等若干种。这种情况下用VC编写组件 实现指针的分配与释放。而无须调用额外的API。 定义字符串参数变量时就有很多种选择.而VbSeript默认只有 总之,在COM组件的开发中。VC和VB各有优势所在.适 一种字符串类型.这样在传人参数时就很容易产生不匹配的问 用于不同的场合。因此,在实际开发过程中。COM组件的开发需 题,这种不匹配可能造成组件调用失败。这种类型的调用失败不 要VC和VB配合使用 是因为组件内部实现的原因造成的。属于外部“干扰性”错误。这 ②“平滑”对接的问题 种错误额外地增加了调试任务。所以在组件测试阶段.对于调用 组件最终需要由脚本语言来调用实现其功能 而组件与脚 失败的问题需要考虑到是否是因为这种“非平滑式对接”的外部 本语言的对接点是接口(方法和属性)。这就涉及到在接口处“平 “干扰性”错误引起的 滑”对接的问题。所谓“平滑对接”是指在脚本文件中调用组件接 4.结束语 口时传人的参数变量在语法上与参数本身的语法定义能够完全 利用COM组件技术.可以快速的设计出利用率较高的程序 匹配,从而不会因为语法不匹配这样的外部“干扰性”原因而致 软件。本文是使用COM组件进行数字资源管理所做的一种尝 使组件调用失败。 例如。在Windows DNA系统中.ASP脚本 试。相信C0M组件技术的应用必将推动数字化资源管理向分布 文件与VB编写的组件的对接一般比较顺畅.这是因为ASP— 式模式发展 

因篇幅问题不能全部显示,请点此查看更多更全内容