当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]基于nRF24E1无线传输的设计与应用

引言

随着科技的进步,越来越多的无线技术正快速应用到各种产品中。nRF24E1是挪威Nordic公司推出的一款单片2.4GHz无线收发芯片,采用0.18mCMOS技术制造,以增强型51为内核,9路10bitADC,采样率可达100K,具有125个频道,传输速率可达1Mbps,内置CRC校验并支持多点通信。1.9~3.6V低功耗工作,内置电压监视和复位电路,多种省电模式可供选择,待机电流仅为2A。nRF24E1可广泛应用于无线水表、煤气、电表;无线智能传感器;无线数据采集装置;无线身份识别智能卡;无线火警探头;无线耳机、麦克风;无线鼠标、无线键盘;PDA手持终端等短距离无线通信场所。

概述

nRF24E1功能介绍

nRF24E1结构框图如图1所示。

微处理器

nRF24E1微处理器的指令系统与工业标准的8051相兼容,但两者的执行时序稍有不同。通常,nRF24E1片内微控制器、的指令周期为4到20个指令周期,而工业标准的8051为12~48个时钟周期。nRF24E1的中断控制器支持ADC、SPI、RF接收器1、RF接收器2、唤醒定时器、5个中断源。nRF24E1拥有3个与8052一样的定时器。在传统的异步通信方式下,与8051兼容的UART可用作定时器1和定时器2的波特率发生器。nRF24E1的CPU集成了2个数据指针,以便于和外部RAM进行数据传递。晶振直接为nRF24E1的微控制器提供了时钟来源。

nRF24E1的微控制器中有256字节的数据RAM和512字节的ROM。上电复位或经软件初始化后,处理器自动加载ROM引导区中的代码。用户程序通常是在引导区的引导下,从外部串口EEPROM加载到1个4KB的RAM中,这个4KB的RAM也可作存储数据用。如果不使用掩膜ROM(即内含的ROM),程序代码必须从外部非易失性存储器中加载。这时,默认的启动引导区使用SPI接口的“通用25320”EEPROM。为了控制标准8051没有的功能,nRF24E1增加了一些特殊功能寄存器,如RADIO(P2)、ADCCON、ADCDATAH、PWMCON、PWMDUTY、RSTREAS等。其P0和P1也和标准8051有所不同,其它大部分的SFRs均与标准8051相同。

PWM

nRF24E1有一个可编程PWM输出,它和DIO9共同复用P0.7引脚,并可软件编程决定PWM工作于6、7或8位。

SPI(串行外设接口)

SPI的3个口(SDI、SCK和SDO)与GPIO(DIN0、DIO0和DIO1)共同复用P1口的三个引脚(P1.0、P1.1、P1.2)。SPI硬件不产生任何片选信号,通常用GPIO位(P0口)来作为外部SPI设备的片选口。

端口逻辑

nRF24E1有1个输入,10个输出引脚。P0(DIO2~DIO9)和P1(DIO0、DIO1、DIN0)默认配置为GPIO(通用输入输出端口)。多数GPIO在程序控制下可复用,这些复用功能包括两个外部中断,UARTRXD和TXD,一个SPI主机端口,三个定时器和PWM输出。

RTC唤醒定时器、WTD(看门狗)和RC振荡器

nRF24E1内有一个低功耗的RC振荡器。该振荡器在VDD≥1.8V时,会持续工作。RTC唤醒定时器和WTD(看门狗)是2个16位的可编程定时器,它们的工作时钟为RC振荡器的LP_OSC。唤醒定时器和看门狗的定时时间约为300s~80ms,其默认值为10ms。唤醒定时器由用户软件控制启动和停止。看门狗在复位后被禁止,再次复位后才能被激活。

A/D转换器

nRF24E1内有9通道10位ADC,线性转换时间为每10位48个CPU指令周期。A/D转换器可在ARFE输入和内部1.22V的带隙参考之间进行软件选择。转换器的9个输入可由软件进行选择。通道0~7可以转换对应引脚AIN0~AIN7上的电压值,通道8用于对nRF24E1工作电压的监控。A/D转换器默认配置为10位,为满足需要,可通过软件使其工作于6位、8位或12位方式。

无线收发器

nRF24E1收发器通过内部并行口或内部SPI口与其他模块进行通信,同单片射频收发器nRF2401具有相同的功能。DuoCeiver接收器输出的数据准备信号,可通过程序使其作为微处理器的中断或通过GPIO口传给CPU。nRF24E1工作于全球开放的2.4~2.5GHz频段。收发器由1个完整的频率合成器、1个功率放大器、1个调节器和2个接收器组成。输出功率、频道和其它射频参数可通过对RADIO寄存器(SFR0xA0)编程进行控制。发射模式下,射频电流消耗仅为10.5mA,接收模式下为18mA。为了节能,可通过软件程序控制收发器的开/关。

硬件设计

nRF24E1收发核心电路如图2所示。

由于本设计要求PCB板越小越好而且成品要密封,所以如何供电成了这次设计的难点。若使用电池则有持续时间短、占用面积大和易震动脱落等缺点。nRF24E1电源电压是1.9~3.6V,且功耗很低。MAX2323及串口EEPROM25AA320均可工作在3.0V,因此在该设计中摒弃了由电池供电的做法,而采用了从串口取电源作为整个电路的供电系统。其串口取电源电路如图3所示。

软件设计

nRF24E1具有增强型8051内核,KeilC51支持nRF24E1开发,因此利用C51开发经验即可编出高效优质的代码。此程序是经KeilC51V7.05编译并调试通过,篇幅有限,仅列出主要功能函数

(1)初始化程序如下:

voidInit(void){

//配置I/O口

P0_ALT=0x06;//P0.1为RXD,P0.2为TXD

P0_DIR=0x09;//P0.0和P0.3设为输入

P1_DIR=0x03;//P1.0和P1.1设为输入

PWR_UP=1;//开Radio,读时不用,写时为电源

SPICLK=0;//SPI时钟为XTAL/8

SPI_CTRL=0x02;//把SPI与收发通道1(CH1)相连

//串口通讯初始化

TH1=0x0F3;//晶振为16MHz,波特率为19200(当T1M=1且SMOD=1时)

CKCON|=0x10;//T1M=1(计数器时钟为CPU时钟的1/4)

PCON=0x80;//SMOD=1(双倍波特率)

SCON=0x52;//采用串口模式1,使能接收器

TMOD=0x20;//使用计数器1,8位计数值自动重载

TCON=0x40;//启动计数器

}

(2)接收器配置函数

[!--empirenews.page--]

voidInit_Receiver(void){

unsignedcharb;

CS=1;//打开配置方式

Delay100us(0);

for(b=0;b

{

SpiReadWrite(rconf.buf[b]);//发送接收器配置字

}

CS=0;//关配置方式

CE=1;//使能收发功能

}(3)接收函数

voidReceiver(void){

unsignedcharb;

CS=1;//打开配置模式

Delay100us(0);

for(b=0;b

SpiReadWrite(rconf.buf[b]);//发送接收器配置字

}

CS=0;//关配置模式

for(;;){

b=ReceivePacket();//接收数据包

PutChar(b);//串口通信函数,将接收到的数据通过串口传送

}

}

(4)发送函数

voidTransmitter(void){

unsignedcharb;

CS=1;

Delay100us(0);

for(b=0;b

SpiReadWrite(tconf.buf[b]);//发送发送器配置字

}

CS=0;

for(;;){

b=ReadADC();//读A/D转换结果

PutChar(b);

TransmitPacket(b);//发送数据包

}

}

此程序除了以上函数外,还有串口通讯函数、读A/D转换结果函数、接收包处理函数和发送包处理函数等。

结论

本设计电路简单,易于实现。经实际调试应用完全可用于点对点及点对多点的无线数据传输,收到了良好的效果。1Mbps完全满足一般无线传输的要求。若进行批量生产时可将程序写进nRF24E1的内部RAM中,从而省去了外部串口EEPROM,节约了成本。

 

 

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

Holtek针对无线通信领域新推出Arm® Cortex®-M0+为核心的2.4GHz Transceiver MCU HT32F67041/HT32F67051。具备32-bit MCU核心提供优势运算效能及丰富外围资...

关键字: MCU 安防 无线传输

Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。 Python提供了高效的高级数据结构,还能简单有效地面向对象编程。

关键字: python 函数 对象编程

测试数据综合分析的绝佳工具,深受工程师和研究员欢迎

关键字: 后处理分析软件 向导 函数

提起物联网无线传输技术,很多人的第一反应可能是NB-IoT或LoRaWAN。这两种技术各有优缺点,并拥有各自不同的应用场景。目前,又一新的无线传输技术来袭,即Wi-SUN(Wireless Smart Ubiquitou...

关键字: 物联网 无线传输

由上图中可以知道进程地址空间中最顶部的段是栈,代码中调用函数、定义局部变量(但不包含static修饰的变量)或声明的类的实例等等都要使用栈空间,当函数执行完(也就是程序执行超过了这个函数的作用范围的时候),操作系统会把该...

关键字: 进程地址 局部变量 函数

香港2022年7月7日 /美通社/ -- 寿康集团有限公司(“寿康集团”或“本公司”及其附属公司,统称“本集团”;股份代号:0575.HK)旗下全资附属公司、并以香港为基地的人工智能创新公司及衰老与长寿深层生物...

关键字: 时钟 VI GE EV

在这篇文章中,小编将为大家带来无线网桥的相关报道。如果你对本文即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。

关键字: 无线网桥 网桥 无线传输

– 全新的Z-Wave 800系列,包含ZG23 SoC和ZGM230S模块,可实现2.4公里以上的无线传输距离、功耗降低了50%、并通过PSA 3级安全认证–

关键字: Silicon Labs 无线传输 物联网

星标/置顶 公众号,硬核文章第一时间送达!链接| https://zhuanlan.zhihu.com/p/274473971题很多,先上题后上答案,便于大家思考问题点:1、C和C的特点与区别?2、C的多态3、虚函数实现...

关键字: 腾讯 函数 进程 AI

程序接口是操作系统为用户提供的两类接口之一,编程人员在程序中通过程序接口来请求操作系统提供服务。面向过程语言最基本的单元是过程和函数。

关键字: 程序接口 过程 函数
关闭
关闭