最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

HJH24R2模块说明书(1)

来源:动视网 责编:小OO 时间:2025-09-27 11:56:01
文档

HJH24R2模块说明书(1)

一、模块介绍(1)2.4Ghz全球开放ISM频段免许可证使用(2)最高工作速率2Mbps,高效GFSK调制,抗干扰能力强,特别适合工业控制场合(3)126频道,满足多点通信和跳频通信需要(4)内置硬件CRC检错和点对多点通信地址控制(5)低功耗1.9-3.6V工作,待机模式下状态为22uA;掉电模式下为900nA(6)内置2.4Ghz天线,体积小巧15mmX29mm(7)模块可软件设地址,只有收到本机地址时才会输出数据(提供中断指示),可直接接各种单片机使用,软件编程非常方便(8)内置专门稳压
推荐度:
导读一、模块介绍(1)2.4Ghz全球开放ISM频段免许可证使用(2)最高工作速率2Mbps,高效GFSK调制,抗干扰能力强,特别适合工业控制场合(3)126频道,满足多点通信和跳频通信需要(4)内置硬件CRC检错和点对多点通信地址控制(5)低功耗1.9-3.6V工作,待机模式下状态为22uA;掉电模式下为900nA(6)内置2.4Ghz天线,体积小巧15mmX29mm(7)模块可软件设地址,只有收到本机地址时才会输出数据(提供中断指示),可直接接各种单片机使用,软件编程非常方便(8)内置专门稳压
一、模块介绍

(1)2.4Ghz全球开放ISM频段免许可证使用

(2)最高工作速率2Mbps,高效GFSK调制,抗干扰能力强,特别适合工业控制场合

(3)126频道,满足多点通信和跳频通信需要

(4)内置硬件CRC检错和点对多点通信地址控制

(5)低功耗1.9-3.6V工作,待机模式下状态为22uA;掉电模

式下为900nA

(6)内置2.4Ghz天线,体积小巧15mm X29mm

(7)模块可软件设地址,只有收到本机地址时才会输出数据(提供中断指示),可直接接各种单片机使用,软件编程非常方便(8)内置专门稳压电路,使用各种电源包括DC/DC开关电源均有很好的通信效果

(9)2.54MM间距接口,DIP封装

(10)工作于Enhanced ShockBurst具有Automatic packet handling,Auto packet transaction handling,具有可选的内置包

应答机制,极大的降低丢包率。

(11)与51系列单片机P0口连接时候,需要加10K的上拉电阻,与其余口连接不需要。

(12)其他系列的单片机,如果是5V的,请参考该系列单片机IO口输出电流大小,如果超过10mA,需要串联

电阻分压,否则容易烧毁模块!如果是3.3V的,可以

直接和24R2模块的IO口线连接。比如AVR系列单片机如果是5V的,一般串接2K的电阻

二、接口电路

说明:

1)VCC脚接电压范围为1.9V~3.6V之间,不能在这个区间之外,超

过3.6V将会烧毁模块。推荐电压3.3V左右。

(2)除电源VCC和接地端,其余脚都可以直接和普通的5V单片机IO口

直接相连,无需电平转换。当然对3V左右的单片机更加适用了。

(3)硬件上面没有SPI的单片机也可以控制本模块,用普通单片机IO

口模拟SPI不需要单片机真正的串口介入,只需要普通的单片机IO口

就可以了,当然用串口也可以了。

(4)如果需要其他封装接口,比如密脚插针,或者其他形式的接口,可以

联系我们定做。

三、模块结构和引脚说明

HJH24R2模块使用好佳好公司的24R1芯片开发而成

四、工作方式

有工作模式有四种:收发模式

配置模式

空闲模式

关机模式

工作模式由PWR_UP register、PRIM_RX register和CE决定,详见下表

4.1收发模式

收发模式有Enhanced ShockBurstTM收发模式、ShockBurstTM收

发模式和直接收发模式三种,收发模式由器件配置字决定,具体配置

将在器件配置部分详细介绍。

4.1.1Enhanced ShockBurstTM收发模式

Enhanced ShockBurstTM收发模式下,使用片内的先入先出堆栈区,数据低速从微控制器送入,但高速(1Mbps)发射,这样可以尽量节能,因此,使用低速的微控制器也能得到很高的射频数据发射速率。与射

频协议相关的所有高速信号处理都在片内进行,这种做法有三大好处:尽量节能;低的系统费用(低速微处理器也能进行高速射频发射);数

据在空中停留时间短,抗干扰性高。Enhanced ShockBurstTM技术同时也减小了整个系统的平均工作电流。

在Enhanced ShockBurstTM收发模式下,自动处理字头

和CRC校验码。在接收数据时,自动把字头和CRC校验码移去。在发送数据时,自动加上字头和CRC校验码,在发送模式下,置CE为高,至

少10us,将时发送过程完成后。

4.1.1.1Enhanced ShockBurstTM发射流程

A.把接收机的地址和要发送的数据按时序送入;

B.配置CONFIG寄存器,使之进入发送模式。

C.微控制器把CE置高(至少10us),激发进行Enhanced ShockBurstTM发射;

D.

的Enhanced ShockBurstTM发射(1)给射频前端供电;(2)

射频数据打包(加字头、CRC校验码);(3)高速发射数据包;(4)

发射完成,进入空闲状态。4.1.1.2Enhanced ShockBurstTM 接收流程 A.配置本机地址和要接收的数据包大小;B.配置CONFIG

寄存器,使之进入接收模式,把CE置高。

C.130us后,进入监视状态,等待数据包的到来;

D.当接收到正确的数据包(正确的地址和CRC校验码),自动把字

头、地址和CRC校验位移去;

E.通过把STATUS寄存器的RX_DR置位(STATUS一般引起微控

制器中断)通知微控制器;F.微控制器把数据从NewMsg_RF2401读出;

G.所有数据读取完毕后,可以清除STATUS寄存器。可以进入四种主要的模式之一。

4.1.2ShockBurstTM收发模式

ShockBurstTM收发模式可以与Nrf2401a,02,E1及E2兼容,具体表述前看本公司的文档。

4.2空闲模式

的空闲模式是为了减小平均工作电流而设计,其最大的

优点是,实现节能的同时,缩短芯片的起动时间。在空闲模式下,部分片内晶振仍在工作,此时的工作电流跟外部晶振的频率有关。

4.4关机模式

在关机模式下,为了得到最小的工作电流,一般此时的工作电流为

900nA左右。关机模式下,配置字的内容也会被保持在24R2片内,这是该模式与断电状态最大的区别。

五、配置模块

的所有配置工作都是通过SPI完成,共有30字节的配置

字。

我们推荐工作于Enhanced ShockBurstTM收发模式,这

种工作模式下,系统的程序编制会更加简单,并且稳定性也会更高,

因此,下文着重介绍把配置为Enhanced ShockBurstTM收发模式的器件配置方法。

ShockBurstTM的配置字使能够处理射频协议,在配置完

成后,在工作的过程中,只需改变其最低一个字节中的内容,

以实现接收模式和发送模式之间切换。

ShockBurstTM的配置字可以分为以下四个部分:

数据宽度:声明射频数据包中数据占用的位数。这使得

能够区分接收数据包中的数据和CRC校验码;

地址宽度:声明射频数据包中地址占用的位数。这使得

能够区分地址和数据;

地址:接收数据的地址,有通道0到通道5的地址;

CRC:使能够生成CRC校验码和解码。

当使用片内的CRC技术时,要确保在配置字(CONFIG的EN_CRC)

中CRC校验被使能,并且发送和接收使用相同的协议。

配置字的CONFIG寄存器的位描述如下表所示。

CONFIG配置字描述

六、参考源代码

参考源代码

#include

//<24R2_Pins对应引脚>

sbit MISO=P1^3;

sbit MOSI=P1^4;

sbit SCK=P1^5;

sbit CE=P1^6;

sbit CSN=P3^7;

sbit IRQ=P1^2;

sbit LED2=P3^5;

sbit LED1=P3^4;

sbit KEY1=P3^0;

sbit KEY2=P3^1;

//SPI(24R1)commands

#define READ_REG0x00//Define read command to register

#define WRITE_REG0x20//Define write command to register

#define RD_RX_PLOAD0x61//Define RX payload register address

#define WR_TX_PLOAD0xA0//Define TX payload register address

#define FLUSH_TX0xE1//Define flush TX register command

#define FLUSH_RX0xE2//Define flush RX register command

#define REUSE_TX_PL0xE3//Define reuse TX payload register command #define NOP0xFF//Define No Operation,might be used to read status register //***************************************************//

//SPI(24R2)registers(addresses)

#define CONFIG0x00//'Config'register address

#define EN_AA0x01//'Enable Auto Acknowledgment'register address

#define EN_RXADDR0x02//'Enabled RX addresses'register address

#define SETUP_AW0x03//'Setup address width'register address

#define SETUP_RETR0x04//'Setup Auto.Retrans'register address

#define RF_CH0x05//'RF channel'register address

#define RF_SETUP0x06//'RF setup'register address

#define STATUS0x07//'Status'register address

#define OBSERVE_TX0x08//'Observe TX'register address

#define CD0x09//'Carrier Detect'register address

#define RX_ADDR_P00x0A//'RX address pipe0'register address

#define RX_ADDR_P10x0B//'RX address pipe1'register address

#define RX_ADDR_P20x0C//'RX address pipe2'register address

#define RX_ADDR_P30x0D//'RX address pipe3'register address

#define RX_ADDR_P40x0E//'RX address pipe4'register address

#define RX_ADDR_P50x0F//'RX address pipe5'register address

#define TX_ADDR0x10//'TX address'register address

#define RX_PW_P00x11//'RX payload width,pipe0'register address

#define RX_PW_P10x12//'RX payload width,pipe1'register address #define RX_PW_P20x13//'RX payload width,pipe2'register address #define RX_PW_P30x14//'RX payload width,pipe3'register address #define RX_PW_P40x15//'RX payload width,pipe4'register address #define RX_PW_P50x16//'RX payload width,pipe5'register address #define FIFO_STATUS0x17//'FIFO Status Register'register address //------------------------------------------------------------

//写一个字节到24R2,同时读出一个字节

uchar SPI_RW(uchar byte)

{

uchar bit_ctr;

for(bit_ctr=0;bit_ctr<8;bit_ctr++)//output8-bit

{

MOSI=(byte&0x80);//output'byte',MSB to MOSI

byte=(byte<<1);//shift next bit into MSB..

SCK=1;//Set SCK high..

byte|=MISO;//capture current MISO bit

SCK=0;//..then set SCK low again

}

return(byte);//return read byte

}

//向寄存器reg写一个字节,同时返回状态字节

uchar SPI_RW_Reg(BYTE reg,BYTE value)

{

uchar status;

CSN=0;//CSN low,init SPI transaction

status=SPI_RW(reg);//select register

SPI_RW(value);//..and write value to it..

CSN=1;//CSN high again

return(status);//return24R2status byte

}

//读出bytes字节的数据

uchar SPI_Read_Buf(BYTE reg,BYTE*pBuf,BYTE bytes)

{

uchar status,byte_ctr;

CSN=0;//Set CSN low,init SPI tranaction

status=SPI_RW(reg);//Select register to write to and read status byte for(byte_ctr=0;byte_ctrpBuf[byte_ctr]=SPI_RW(0);//

CSN=1;

return(status);//return24R2status byte

}

//写入bytes字节的数据

uchar SPI_Write_Buf(BYTE reg,BYTE*pBuf,BYTE bytes)

{

uchar status,byte_ctr;

CSN=0;

status=SPI_RW(reg);

for(byte_ctr=0;byte_ctrSPI_RW(*pBuf++);

CSN=1;//Set CSN high again

return(status);//

}

//接收函数,返回1表示有数据收到,否则没有数据接受到

unsigned char24R2_RxPacket(unsigned char*rx_buf)

{

unsigned char revale=0;

//set in RX mode

SPI_RW_Reg(WRITE_REG+CONFIG,0x0f);//Set PWR_UP bit,enable CRC(2bytes)& Prim:RX.RX_DR enabled..

CE=1;//Set CE pin high to enable RX device

dalay130us();

sta=SPI_Read(STATUS);//read register STATUS's value

if(RX_DR)//if receive data ready(RX_DR)interrupt

{

CE=0;//stand by mode

SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);//read receive payload from RX_FIFO buffer

revale=1;

}

SPI_RW_Reg(WRITE_REG+STATUS,sta);//clear RX_DR or TX_DS or MAX_RT interrupt flag

return revale;

}

//发送函数

void24R2_TxPacket(unsigned char*tx_buf)

{

CE=0;

//SPI_Write_Buf(WRITE_REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH);//Writes TX_Address to24R2

//SPI_Write_Buf(WRITE_REG+RX_ADDR_P0,TX_ADDRESS,TX_ADR_WIDTH);//

RX_Addr0same as TX_Adr for Auto.Ack

SPI_Write_Buf(WR_TX_PLOAD,tx_buf,TX_PLOAD_WIDTH);//Writes data to TX payload SPI_RW_Reg(WRITE_REG+CONFIG,0x0e);//Set PWR_UP bit,enable CRC(2bytes)& Prim:TX.MAX_RT&TX_DS enabled..

CE=1;

dalay10us();

CE=0;

}

//配置函数

void24R2_Config(void)

{

//initial io

CE=0;//chip enable

CSN=1;//Spi disable

SCK=0;//Spi clock line init high

CE=0;

SPI_RW_Reg(WRITE_REG+CONFIG,0x0f);//Set PWR_UP bit,enable CRC(2bytes)& Prim:RX.RX_DR enabled..

SPI_RW_Reg(WRITE_REG+EN_AA,0x01);

SPI_RW_Reg(WRITE_REG+EN_RXADDR,0x01);//Enable Pipe0

SPI_RW_Reg(WRITE_REG+SETUP_AW,0x02);//Setup address width=5bytes

SPI_RW_Reg(WRITE_REG+SETUP_RETR,0x1a);//500us+86us,10retrans...

SPI_RW_Reg(WRITE_REG+RF_CH,0);

SPI_RW_Reg(WRITE_REG+RF_SETUP,0x07);//TX_PWR:0dBm,Datarate:1Mbps, LNA:HCURR

SPI_RW_Reg(WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);

SPI_Write_Buf(WRITE_REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH);

SPI_Write_Buf(WRITE_REG+RX_ADDR_P0,TX_ADDRESS,TX_ADR_WIDTH);CE=1;// }

文档

HJH24R2模块说明书(1)

一、模块介绍(1)2.4Ghz全球开放ISM频段免许可证使用(2)最高工作速率2Mbps,高效GFSK调制,抗干扰能力强,特别适合工业控制场合(3)126频道,满足多点通信和跳频通信需要(4)内置硬件CRC检错和点对多点通信地址控制(5)低功耗1.9-3.6V工作,待机模式下状态为22uA;掉电模式下为900nA(6)内置2.4Ghz天线,体积小巧15mmX29mm(7)模块可软件设地址,只有收到本机地址时才会输出数据(提供中断指示),可直接接各种单片机使用,软件编程非常方便(8)内置专门稳压
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top