首 页科技博览科普图片植物王国动物世界科普常识农村科普生活科普信息技术科普创作自然之谜
历史今天留言繁體中文
设为首页
加入收藏
联系我们
您当前的位置:科普知识网 -> 电子电工 -> 设计应用 -> 博览内容 退出登录 用户管理
 

· 有线电视 · 电子系统
· 显示元件 · 接口电路
· 存储器 · 无线通信
· 传感控制 · EDA/PLD
· 单片机 · DSP技术
· 模拟技术 · 通信网络
· 测试仪表 · 视频音频
· 芯片应用 · 电子通信
· IC电子 · 电子设计
· 自控测量 · IC嵌入式
· IC系统 · EDA系统
· 传感控制 · 电源技术
· 接口电路 · 消费电子
· DSP产品 · 元件工艺
· 模拟技术 · 存储器设备
· 设计应用 · 智能网应用
· 电子电源 · 电子传感
热门博览
· 涡轮
· 什么是路肩?硬路肩?..
· 神秘的海底世界
· 民用飞机
· 电路设计
· 梁桥
· 航空发动机
· 环保--功在当代,利..
· 气球
· 双曲拱桥是一种什么..
相关博览
· 丰田发表基于“综合..
· [组图] 基于微控制器..
· [组图] 基于PCI总线数..
· [组图] 基于DSP&..
· [组图] 基于ADV202的..
· [组图] 基于ADSP-TS2..
· [组图] 基于IGBT的电..
· [组图] 基于Modbus通..
· [组图] 基于CPLD的任..
· [组图] 基于单片机的..

免责声明:作品版权归所属媒体与作者所有!!本站刊载此文仅为普及科学技术知识提供更多信息。如果您认为我们侵犯了您的版权,请告知!本站核实后立即删除。kpzsnet#126.com (#改为@)

基于nRF24E1无线传输的设计与应用

作者:佚名  来源:不详  
基于nRF24E1无线传输的设计与应用
西南石油学院 于珍珠 何志敏 梅大成

引言
随着科技的进步,越来越多的无线技术正快速应用到各种产品中。nRF24E1是挪威Nordic公司推出的一款单片2.4GHz无线收发芯片,采用0.18 m CMOS技术制造,以增强型51为内核,9路10bitADC,采样率可达100K,具有125个频道,传输速率可达1Mbps,内置CRC校验并支持多点通信。1.9~3.6V低功耗工作,内置电压监视和复位电路,多种省电模式可供选择,待机电流仅为2 A。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在程序控制下可复用,这些复用功能包括两个外部中断,UART RXD和TXD,一个SPI主机端口,三个定时器和PWM输出。

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

nRF24E1内有一个低功耗的RC振荡器。该振荡器在VDD≥1.8V时,会持续工作。RTC唤醒定时器和WTD(看门狗)是2个16位的可编程定时器,它们的工作时钟为RC振荡器的LP_OSC。唤醒定时器和看门狗的定时时间约为300 s~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寄存器(SFR 0xA0)编程进行控制。发射模式下,射频电流消耗仅为10.5mA,接收模式下为18mA。为了节能,可通过软件程序控制收发器的开/关。


硬件设计

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


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

软件设计

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

(1)初始化程序如下:

void Init(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)接收器配置函数

void Init_Receiver(void){
unsigned char b;
CS = 1; //打开配置方式
Delay100us(0);
for(b=0;b<rconf.n;b++) //b<15
{
SpiReadWrite(rconf.buf[b]); //发送接收器配置字
}
CS = 0; // 关配置方式
CE = 1; // 使能收发功能
} (3)接收函数
void Receiver(void){
unsigned char b;
CS = 1; //打开配置模式
Delay100us(0);
for(b=0;b<rconf.n;b++){
SpiReadWrite(rconf.buf[b]); //发送接收器配置字
}
CS = 0; //关配置模式
for(;;){
b = ReceivePacket(); //接收数据包
PutChar(b); //串口通信函数,将接收到的数据通过串口传送
}
}

(4)发送函数

void Transmitter(void){
unsigned char b;
CS = 1;
Delay100us(0);
for(b=0;b<tconf.n;b++){
SpiReadWrite(tconf.buf[b]); //发送发送器配置字
}
CS = 0;
for(;;){
b= ReadADC(); // 读A/D转换结果
PutChar(b);
TransmitPacket(b); // 发送数据包
}
}

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


结论

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

[] [返回上一页] [打 印] [收 藏]
∷相关博览评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
关于本站 - 帮助 - 合作 - 声明 - 连接 - 地图 -
Copyright ?2002-2005 Kpzs.Net. All Rights Reserved .
BY::KPZS.NET