2.4G无线发射模块nRF2402应用

发布者:技术旅人最新更新时间:2016-09-06 来源: eefocus关键字:2.4G  无线发射模块  nRF2402 手机看文章 扫描二维码
随时随地手机看文章
花了我一个下午的时间,终于调试好了nRF2402无线发射模块,有一点值得注意的,nRF2402是单独发射模块,单通道的,具体应用和nRF2401差不多,就是值得注意的是配置控制字(Configuration Word)不一样。

2.4G无线发射模块nRF2402应用 - 小文 - 小文电子设计2.4G无线发射模块nRF2402应用 - 小文 - 小文电子设计

 

nRF2402模块引脚图如下:
2.4G无线发射模块nRF2402应用 - 小文 - 小文电子设计

值得注意到是nRF2402配置控制字和nRF2401不一样,具体看datasheet,我摘录了一部分如下

2.4G无线发射模块nRF2402应用 - 小文 - 小文电子设计

有4个字节的控制字,其中D0-D19是需要配置的,D31-D20空,可以配置为0.

 

源程序:

/***********************************************************/
/*nRF2402学习板V1.0             */
/*创建人  :郑 文(ClimberWin)           日期:2010-02-20   */
/*功能描述:nRF2402无线数据传输                 */
/*芯片    :STC89C51RC  晶振 11.0592M       */
/*版本    :V1.0             */
/***********************************************************/
//测试OK,功能描述:
//8个LED接在P0口,低电平有效
//按键1是LED加 按键2LED减  按键3 LED全亮 按键4 LED全灭
//串口输出数据
//添加串口发送数据给单片机再无线发送
#include
#include
#include
#define uchar unsigned char
#define uint  unsigned int
#define ulong unsigned long

//端口定义
///////LED定义//////////
sbit LED1  = P0^0;
sbit LED2  = P0^1;
sbit LED3  = P0^2;
sbit LED4  = P0^3;
sbit LED5  = P0^4;
sbit LED6  = P0^5;
sbit LED7  = P0^6;
sbit LED8  = P0^7;
///////按键定义////////////
sbit K1  = P3^3;
sbit K2  = P3^4;
sbit K3  = P3^5;
sbit K4  = P3^6;

sbit speaker=P3^7;//蜂鸣器输出引脚


/*****************************************/
void speakertest(void);   //蜂鸣器程序
void init_rs232(void);           //串口初始化
void keytest(void);  //按键测试程序
/*****************************************/

/* 串口通信初始化设置 */
void init_rs232(void)
 {
 SCON=0x50;
 PCON=0x00;
 TH1=0xFD;    //波特率 9600  11.0592MHZ 时候
 TL1=0XFD;
 TMOD=0X20;
 TR1=1;    
 }
void speakertest(void)//蜂鸣器程序
{
 unsigned char i;
  for(i=0;i<100;i++)
 {
  speaker=0;
  delayms(1);
  speaker=1;
  delayms(1);
  }
}
/*****************************************/
void keytest(void)  //按键测试程序
{
////////按键K1判断程序////////
  while(K1==0) 
  {
  delayms(100);//按键去抖
   if(K1==1) 
   {
   nRF2402_flag|=0x02; //按键标志位nRF2402_flag_bit1=1
   speakertest();
   nRF2402_Data[0]++;
   }
   else
   {;}
  }
/////////////////////////////
////////按键K2判断程序////////
  while(K2==0) 
  {
   delayms(100);//按键去抖
   if(K2==1) 
   {
   nRF2402_flag|=0x02; //按键标志位nRF2402_flag_bit1=1
   speakertest();
   nRF2402_Data[0]--;
   }
   else
   {nRF2402_flag&=0xfd; } //清除按键标志位nRF2402_flag_bit1=0
  }
/////////////////////////////
////////按键K3判断程序////////
  while(K3==0) 
  {
  delayms(100);//按键去抖
   if(K3==1) 
   {
   nRF2402_flag|=0x02; //按键标志位nRF2402_flag_bit1=1
   speakertest();
   nRF2402_Data[0]=0x00;
   }
   else
    {nRF2402_flag&=0xfd; } //清除按键标志位nRF2402_flag_bit1=0
  }
/////////////////////////////
////////按键K4判断程序////////
  while(K4==0) 
  {
  delayms(100);//按键去抖
   if(K4==1) 
   {
   nRF2402_flag|=0x02; //按键标志位nRF2402_flag_bit1=1
   speakertest();
   nRF2402_Data[0]=0xff;  
   }
   else
   {nRF2402_flag&=0xfd; } //清除按键标志位nRF2402_flag_bit1=0
  }

  if((nRF2402_flag&0x02)==0x02)//判断是否有按键按下
   {
   P0=~nRF2402_Data[0];
   nRF2402_Transmit_Mode();        //设置为发送模式
   nRF2402_Transmit_Data(nRF2402_Data); //发送数据
   nRF2402_flag&=0xfd; //清除按键标志位nRF2402_flag_bit1=0  
  }
  else
  {;}
   
}

 

void main(void)
{
    delayms(1000);//开机延时
 nRF2402_Data[0] = 0x55;
    init_rs232();  //串口初始化
    TI=1;          //串口发射有效
 nRF2402_config(); //nRF2402初始化配置
    delayms(100);
 speakertest();  //蜂鸣器叫一声

    nRF2402_Transmit_Mode();            //设置为发送模式
 nRF2402_Transmit_Data(nRF2402_Data);//发送测试数据
 SBUF=0x55; //串口输出0x55 测试是否有正确的串口数据
 delayms(100);
 while (1)
 { 
     keytest();  //调用按键子程序,无线发送数据
 }
}

///////////////////////////////////////////////////////////////////////////////////////////////

头文件:nRF2402.h

/*************************************************************/
/**********************中文版本*******************************/
/*****功能描述 :  nRF2402无线收发模块应用头文件          *****/
/*****调试平台 :  51单片机  11.0592M晶振                 *****/
/*****作  者   :  郑文(ClimberWin)                       *****/
/*****编写日期 :  2010年02月20日                          *****/
/*****版本信息 :  V1.0                                   *****/
/*****修改日期 :                                         *****/
/*************************************************************/
#ifndef __nRF2402_H__
#define __nRF2402_H__

#include
#include
#define uchar unsigned char
#define uint  unsigned int

sbit nRF2402_PWR_UP = P1^4;
sbit nRF2402_CE     = P1^5;
sbit nRF2402_CS     = P1^3;
//////////////////////
sbit nRF2402_CLK   = P1^6;
sbit nRF2402_DIN   = P1^2; 
//////////////////////
//Configuration Word       datasheet(page17 of 37)
//Reserved for testing
#define ADDR_W       2*8    //发送/接收地址宽度(单位:Bit) 
#define DATA1_W        28*8      //通道1 payload数据长度设置(bit)

                           //D31 MSB
#define PLL          0x00  // D19
#define UNUSED_bit18 0x01   //未定义 必须置1
#define PREAMBLE_bit17 0x01 //Logic 0: No generation of Preamble |Logic 1: Preamble generation enabled (default) 
#define UNUSED_bit16 0x01   //未定义 必须置1
#define CRC_L        0x01    //CRC 模式  0:8 位  1:16 位 
#define CRC_EN       0x01    //CRC 校验  0:禁用  1:启用

#define CM           0x01    //0:Direct mode   1:ShockBurst mode 
#define RFDR_SB      0x00    //传输速率0:250kbps 1:1Mbps(requires 16MHZ crystal)
#define XO_F         0x03    //晶振频率 D11-D9(000:4MHZ  001:8MHZ  010:12MHZ  011:16MHZ  100:20MHZ) 
#define RF_PWR       0x03    //发射模式的输出功率D8-D7(00:-20dBm  01:-10dBm  10:-5dBm  11:0dBm)

#define RF_CH        0x02    //Channel 发射频率设置Channel=2400MHz+RF_CH * 1.0MHz  datasheet(page22 of 37) 

uchar code nRF2402_Config_Word[4] =
{
0x00,0x07,0xe7,0x82
};

uchar code Channel_Addr[]={0x34,0x12,0x00,0x00,0x00};//设置通道1地址,发射和接收必须匹配
uchar nRF2402_Data[32]; //定义nRF2402数据发送接收临时存储地址
uchar nRF2402_flag;//定义标志位,bit7-bit2 暂时保留 | bit0:是否有接收数据标志位 1:有 0:无
                                                  //| bit1:是否有按键数据标志位 1:有 0:无
void delayms(uint count); //延时程序
uchar nRF2402_Read_Byte(void); //读字节
void nRF2402_Write_Byte(uchar Send_Byte);//写字节
void nRF2402_config(void);   //参数配置
void nRF2402_Transmit_Mode(void); //设置为发射模式
void nRF2402_Transmit_Data(uchar TxBuf[]);  //nRF2402发送数据子程序


/*************延时子程序start*****************/
void delayms(unsigned int count)
{
 unsigned int i,j;
 for(i=0;i  for(j=0;j<120;j++);
}
/**************延时子程序end****************/
/************读数据子程序***********/
uchar nRF2402_Read_Byte(void)
{
  uchar i,j,temp;
  temp=0x00;
  for (i=0;i<8;i++)
   {
      nRF2402_CLK=1;
      _nop_();
      if (nRF2402_DIN==1) j=1;
      else j=0;
      temp=(temp<<1)|j;
      nRF2402_CLK=0;
   }
  return temp;
}
/************写数据子程序***********/
void nRF2402_Write_Byte(uchar Send_Byte)
{
 uchar i;
 for (i=0;i<8;i++)
   {
      Send_Byte=Send_Byte<<1;
   nRF2402_DIN=CY; //读进位数据
      nRF2402_CLK=1;
      _nop_();   
      nRF2402_CLK=0;
   }
}


/*********配置参数子程序***********/
void nRF2402_config(void)
{
 uchar i; 
//////stand by///////////// 
 nRF2402_PWR_UP=1;
    nRF2402_CE=0;
    nRF2402_CS=0;
/////////////////////////////      datasheet(page24 of 37)
 delayms(3);// PWR_DWN -> ST_BY_mode | MAX 3ms | name: Tpd2sby | 
 nRF2402_CS=1;     //进入配置模式Configuration
////4个字节的配置字////////////// datasheet(page17 of 37)
 for (i=0;i<4;i++)
 {
     nRF2402_Write_Byte(nRF2402_Config_Word[i]);
 }
 delayms(1);
 nRF2402_CS=0;    //nRF2402_CS 置低使配置有效  datasheet(page26 of 37);
}

/*********设置发射模式子程序*********/
void nRF2402_Transmit_Mode(void)
{
 //设置为Active(Tx)模式 
 nRF2402_PWR_UP=1;
 nRF2402_CE=1;
 nRF2402_CS=0;
    delayms(1); 
}

/********发送数据子程序*********/
void nRF2402_Transmit_Data(uchar temp[]) //datasheet(page22 of 37);
{
 uchar i;
 nRF2402_CE=1;
 delayms(1);
 for (i=0;i<(ADDR_W/8);i++)//写入接收地址
 {
  nRF2402_Write_Byte(Channel_Addr[i]);
 }
 for (i=0;i<(DATA1_W/8);i++)//写入需要发送的数据
 {
  nRF2402_Write_Byte(temp[i]);
 }
 nRF2402_CE=0; //nRF2402_CE 置低使发送有效
 delayms(1);
}


#endif

关键字:2.4G  无线发射模块  nRF2402 引用地址:2.4G无线发射模块nRF2402应用

上一篇:PS/2处理C51头文件
下一篇:nRF2401学习板---AD采集无线发送

推荐阅读最新更新时间:2024-03-16 15:08

基于无线局域网络基频发射模块测试系统
近年来已有不少公司推出高速数据采集卡 (High Speed Data Acquisition Card), 并且声称可以应用在军用雷达信号分析、超声信号分析、数字广播信号分析,或是喷墨式墨盒系统测试等各个方面。仔细观察一下这些高速数据采集卡的规格: 20~100 MS/s 的采样频率,30~60MHz 的带宽,可以供多组模拟信号同时输入,同时模拟输入的范围可通过软件选择… 等等,的确是有条件可以胜任上述应用,可惜能在报章杂志上见到的应用实例并不多, 也因此无法一窥其中的症结与奥秘。基于此原因,本文拟以凌华科技最近推出的PXI-9820 高速数据采集卡为核心,设计一套成本低廉、 功能弹性且适于大量复制的WLAN发射模块实时误差
[测试测量]
基于<font color='red'>无线</font>局域网络基频<font color='red'>发射</font><font color='red'>模块</font>测试系统
基于wifi或者2.4G无线遥控的可调光调色温COB筒灯
作为新一代照明技术之一,LED照明正迎来全面普及期。为了提高最终产品的性能。深圳市华威世纪光电于 2013年4月开发出了具备基于wifi或者2.4G无线遥控器的可调光调色温功能的照明用COB筒灯系列。未来人们可以在商业气氛下也可享受到家庭般的舒适与惬意。    新产品的特点   新产品的最大特点是具备从白炽灯色(2700K)到自然白色(4500K)到冷白色(6500K)的调色温功能,并且能够随环境不同调节亮暗。而且这一功能是通过单个LED控制模块实现的,为业内首创。可实现2700K到6500K之间任意色温的调节。   而且,本产品在具备调光调色温功能的同时,还拥有以下四个特点。   1、 显色指数》80,光效》80
[模拟电子]
基于wifi或者<font color='red'>2.4G</font><font color='red'>无线</font>遥控的可调光调色温COB筒灯
在UIM卡上集成2.4G 有源RFID芯片实现刷卡考勤
    落实中国电信集团公司“聚焦客户信息化创新战略”,发挥中国电信综合信息服务提供商优势,结合枣矿集团信息化现状及应用需求,准确把握客户“关注安全生产信息化”的核心需求,按照枣矿集团领导“一卡在手,走遍矿区”、“一机在手,浏览世界”的指示精神,通过实施数字矿业信息化建设,从关注安全生产、企业整体出发规划信息化项目,各个子系统实现互联互通,增强移动管理信息化,整合企业信息化孤岛,研发了“矿安天翼”移动信息化应用系统并投入应用,成为枣矿集团信息化建设的有机组成部分,为建设“数字矿山”迈出了第一步。      “矿安天翼”移动信息化应用系统平台(一期)主要包含枣矿一卡通、移动协同办公、井上井下重点生产场所的移动视频监控、瓦斯数据远程移
[网络通信]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved