nRF24L01无线通信模块使用手册12要点.pdf

上传人:tbuqq 文档编号:5197654 上传时间:2020-02-19 格式:PDF 页数:25 大小:1.40MB
返回 下载 相关 举报
nRF24L01无线通信模块使用手册12要点.pdf_第1页
第1页 / 共25页
nRF24L01无线通信模块使用手册12要点.pdf_第2页
第2页 / 共25页
nRF24L01无线通信模块使用手册12要点.pdf_第3页
第3页 / 共25页
nRF24L01无线通信模块使用手册12要点.pdf_第4页
第4页 / 共25页
nRF24L01无线通信模块使用手册12要点.pdf_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《nRF24L01无线通信模块使用手册12要点.pdf》由会员分享,可在线阅读,更多相关《nRF24L01无线通信模块使用手册12要点.pdf(25页珍藏版)》请在三一文库上搜索。

1、深圳市德普施科技有限公司 1 nRF24L01 无线通信模块使用手册 一、模块简介 该射频模块集成了NORDIC 公司生产的无线射频芯片nRF24L01: 1支持 2.4GHz 的全球开放ISM 频段,最大发射功率为0dBm 22Mbps,传输速率高 3功耗低,等待模式时电流消耗仅22uA 4多频点( 125 个) ,满足多点通信及跳频通信需求 5在空旷场地,有效通信距离:25m(外置天线) 、10m(PCB 天线) 6工作原理简介: 发射数据时, 首先将 nRF24L01 配置为发射模式, 接着把地址TX_ADDR 和数据 TX_PLD 按照时序由SPI 口写入nRF24L01缓存区, TX

2、_PLD必须在CSN 为低时连续写入,而 TX_ADDR在发射时写入一次即可,然后CE 置为高电平并保持至少10s,延迟 130s 后 发射数据;若自动应答开启,那么nRF24L01 在发射数据后立即进入接收模式,接收应答信 号。如果收到应答, 则认为此次通信成功,TX_DS 置高, 同时 TX_PLD 从发送堆栈中清除; 若未收到应答,则自动重新发射该数据(自动重发已开启),若重发次数( ARC_CNT )达到 上限, MAX_RT置高, TX_PLD 不会被清除;MAX_RT或 TX_DS 置高时,使IRQ 变低, 以便通知MCU 。最后发射成功时,若CE 为低,则 nRF24L01 进入

3、待机模式1;若发送堆栈 中有数据且CE 为高,则进入下一次发射;若发送堆栈中无数据且CE 为高,则进入待机模 式 2。 接收数据时,首先将nRF24L01 配置为接收模式,接着延迟130s 进入接收状态等待 数据的到来。当接收方检测到有效的地址和CRC 时,就将数据包存储在接收堆栈中,同时 中断标志位RX_DR 置高, IRQ 变低,以便通知MCU 去取数据。若此时自动应答开启,接 收方则同时进入发射状态回传应答信号。最后接收成功时,若CE 变低,则 nRF24L01 进入 空闲模式1。 二、模块电气特性 参数数值单位 供电电压5 V 最大发射功率0 dBm 最大数据传输率2 Mbps 电流消

4、耗(发射模式,0dBm)11.3 mA 电流消耗(接收模式,2Mbps)12.3 mA 电流消耗(掉电模式)900 nA 温度范围-40+85 三、模块引脚说明 管脚符号功能方向 1 GND 电源地 2 IRQ 中断输出O 3 MISO SPI 输出O 4 MOSI SPI 输入I 5 SCK SPI 时钟I 6 NC 空 深圳市德普施科技有限公司 2 7 NC 空 8 CSN 芯片片选信号I 9 CE 工作模式选择I 10 +5V 电源 四、模块与AT89S52 单片机接口电路 注:上图为示意连接,可根据自己实际需求进行更改;使用AT89S52MCU 模块时,请将Nrf24L01 通 讯模块

5、每个端口(MOSI 、SCK、CSN 和 CE)接 4.7K 的排阻上拉到VCC 增强其驱动能力(如下图: ) 。若 使用其它单片机与Nrf24L01 通讯模块相连时请串联2K 电阻。 VCC P1.0 P1.1 CN CN P1.2 P1.3 P1.4 P3.2 GND AT89S52MCU 模块 +5V CE CSN CN CN SCK MOSI MISO IRQ GND Nrf24L01 通讯模块 深圳市德普施科技有限公司 3 五、工作模式控制 工作模式由CE 和 PWR_UP、PRIM_RX两寄存器共同控制: 模式PWR_UP PRIM_RX CE FIFO 寄存器状态 接收模式1 1

6、 1 - 发射模式1 0 1 1 数据存储在FIFO 寄存器中, 发射所有数据 发射模式1 0 012 数据存储在FIFO 寄存器中, 发射一个数据 待机模式II 1 0 1 TX FIFO 为空 待机模式I 1 - 0 无正在传输的数据 掉电模式0 - - - 注 1:进入此模式后,只要CSN 置高,在FIFO 中的数据就会立即发射出去,直到所有数据数据发射 完毕,之后进入待机模式II 。 注 2:正常的发射模式, CE 端的高电平应至少保持10us。24L01 将发射一个数据包,之后进入待机模 式 I。 六、数据和控制接口 通过以下六个引脚,可实现模块的所有功能: IRQ(低电平有效,中断

7、输出) CE(高电平有效,发射或接收模式控制) CSN(SPI 信号) SCK(SPI 信号) MOSI (SPI 信号) MISO (SPI 信号) 通过 SPI 接口,可激活在数据寄存器FIFO 中的数据;或者通过SPI 命令( 1 个字节长 度)访问寄存器。 在待机或掉电模式下,单片机通过SPI 接口配置模块; 在发射或接收模式下,单片机通 过 SPI 接口接收或发射数据。 1SPI 指令 所有的 SPI 指令均在当CSN 由低到高开始跳变时执行;从 MOSI 写命令的同时, MISO 实时返回24L01 的状态值; SPI 指令由命令字节和数据字节两部分组成。 SPI 命令字节表 指令

8、名称指令格式 (二进制) 字节数操作说明 R_REGISTER 000A AAAA 15 读寄存器。 AAAAA表示寄存器地址。 W_REGISTER 001A AAAA 15 写寄存器。 AAAAA表示寄存器地址,只 能在掉电或待机模式下操作。 R_RX_PAYLOAD 0110 0001 132 在接收模式下读132 字节 RX 有效断气。 从字节 0 开始,数据读完后,FIFO 寄存器 清空。 W_TX_PAYLOA D 1010 0000 132 在发射模式下写131 字节 TX 有效数据。 从字节 0 开始。 FLUSH_TX 1110 0001 0 在发射模式下,清空TX FIFO

9、 寄存器。 深圳市德普施科技有限公司 4 FLUSH_RX 1110 0010 0 在接收模式下,清空RX FIFO 寄存器。在 传输应答信号时不应执行此操作,否则不 能传输完整的应答信号。 REUSE_TX_PL 1110 0011 0 应用于发射端。重新使用上一次发射的有 效数据,当CE=1 时,数据将不断重新发 射。在发射数据包过程中,应禁止数据包 重用功能。 NOP 1111 1111 0 空操作。可用于读状态寄存器。 2SPI 时序 SPI读写时序见下面两图。在写寄存器之前,一定要进入待机模式或掉电模式。其中, Cn SPI 指令位; Sn状态寄存器位;Dn数据位(低字节在前,高字节

10、在后;每 个字节中高位在前) SPI 读时序 SPI 写时序 七、寄存器内容及说明 地址 (十六进制) 寄存器位复位值类型说明 00 CONFIG 配置寄存器 Reserved 7 0 R/W 默认为 0 MASK_RX_DR 6 0 R/W 可屏蔽中断RX_RD 1:中断产生时对IRQ 没影响 0:RX_RD 中断产生时, IRQ 引脚为低 MASK_TX_DS 5 0 R/W 可屏蔽中断TX_RD 1:中断产生时对IRQ 没影响 0:TX_RD 中断产生时, IRQ 引脚为低 MASK_MAX_ RT 4 0 R/W 可屏蔽中断MAX_RT 1:中断产生时对IRQ 没影响 0: MAX_R

11、T 中断产生时, IRQ 引脚为低 深圳市德普施科技有限公司 5 EN_CRC 3 1 R/W CRC 使能。如果 EN_AA 中任 意一位为高,则EN_CRC 为 高。 CRCO 2 0 R/W CRC 校验值: 0:1 字节 1:2 字节 PWR_UP 1 0 R/W 0:掉电1:上电 PRIM_RX 0 0 R/W 0:发射模式1:接收模式 01 EN_AA Enhanced ShockBurst? 使能“自动应答”功能 Reserved 7:6 00 R/W 默认为 00 ENAA_P5 5 1 R/W 数据通道5 自动应答使能位 ENAA_P4 4 1 R/W 数据通道4 自动应答使

12、能位 ENAA_P3 3 1 R/W 数据通道3 自动应答使能位 ENAA_P2 2 1 R/W 数据通道2 自动应答使能位 ENAA_P1 1 1 R/W 数据通道1 自动应答使能位 ENAA_P0 0 1 R/W 数据通道0 自动应答使能位 02 EN_RXADDR 接收地址允许 Reserved 7:6 00 R/W 默认为 00 ERX _P5 5 0 R/W 数据通道5 接收数据使能位 ERX _P4 4 0 R/W 数据通道4 接收数据使能位 ERX _P3 3 0 R/W 数据通道3 接收数据使能位 ERX _P2 2 0 R/W 数据通道2 接收数据使能位 ERX _P1 1

13、1 R/W 数据通道1 接收数据使能位 ERX _P0 0 1 R/W 数据通道0 接收数据使能位 03 SETUP_AW 设置地址宽度(所有数据通 道) Reserved 7:2 000000 R/W 默认为 00000 AW 1:0 11 R/W 接收 /发射地址宽度: 00:无效 01: 3 字节 10: 4 字节 11:5 字节 04 SETUP_RETR 自动重发 ARD 7:4 0000 R/W 自动重发延时时间: 0000:250us 0001:500us 1111:4000us ARC 3:0 0011 R/W 自动重发计数: 0000:禁止自动重发 0001:自动重发1 次

14、深圳市德普施科技有限公司 6 1111:自动重发15 次 05 RF_CH 射频通道 Reserved 7 0 R/W 默认为 0 RF_CH 6:0 0000010 R/W 设置工作通道频率 06 RF_SETUP 射频寄存器 Reserved 7:5 000 R/W 默认为 000 PLL_LOCK 4 0 R/W 锁相环使能,测试下使用 RF_DR 3 1 R/W 数据传输率: 0:1Mbps 1:2Mbps RF_PWR 2:1 11 R/W 发射功率: 00: -18dBm 01: -12dBm 10: -6dBm 11: 0dBm LNA_HCURR 0 1 R/W 低噪声放大器增

15、益 07 STATUS 状态寄存器 Reserved 7 0 R/W 默认值为0 RX_DR 6 0 R/W 接收数据中断位。 当收到有效 数据包后置1。 写 1清除中断 TX_DS 5 0 R/W 发送数据中断。 如果工作在自 动应答模式下, 只有当接收到 应答信号后置1。 写 1 清除中断 MAX_RT 4 0 R/W 重发次数溢出中断。 写 1清除中断。 如果 MAX_RT中断产生,则 必须清除后才能继续通讯 RX_P_NO 3:1 111 R 接收数据通道号: 000-101:数据通道号 110:未使用 111:RX FIFO 寄存器为空 TX_FULL 0 0 R TX FIFO 寄

16、存器满标志位 08 OBSERVE_TX 发送检测寄存器 PLOS_CNT 7:4 0 R 数 据 包 丢 失 计 数 器 。 当 写 RF_CH寄存器时,此寄存器 复位。当丢失 15 个数据包后, 此寄存器重启。 ARC_CNT 3:0 0 R 重发计数器。 当发送新数据包 时,此寄存器复位。 09 CD 载波检测 Reserved 7:1 000000 R 深圳市德普施科技有限公司 7 CD 0 0 R 0A RX_ADDR_P0 39: 0 E7E7E7E 7E7 R/W 数据通道0 接收地址。 最大长 度为 5 个字节。 0B RX_ADDR_P1 39: 0 C2C2C2 C2C2

17、R/W 数据通道1 接收地址。 最大长 度为 5 个字节。 0C RX_ADDR_P2 7:0 C3 R/W 数据通道2 接收地址。 最低字 节 可 设 置 , 高 字 节 必 须 与 RX_ADDR_P139:8 相等 0D RX_ADDR_P3 7:0 C4 R/W 数据通道3 接收地址。 最低字 节 可 设 置 , 高 字 节 必 须 与 RX_ADDR_P139:8 相等 0E RX_ADDR_P4 7:0 C5 R/W 数据通道4 接收地址。 最低字 节 可 设 置 , 高 字 节 必 须 与 RX_ADDR_P139:8 相等 0F RX_ADDR_P5 7:0 C6 R/W 数据

18、通道5 接收地址。 最低字 节 可 设 置 , 高 字 节 必 须 与 RX_ADDR_P139:8 相等 10 TX_ADDR 39: 0 E7E7E7E 7E7 R/W 发送地址。在ShockBurst TM 模式,设置RX_ADDR_P0与 此地址相等来接收应答信号 11 RX_PW_P0 Reserved 7:6 00 R/W 默认为 00 RX_PW_P0 5:0 0 R/W 数据通道0 接收数据有效宽 度: 0:无效 1:1 个字节 32: 32 个字节 12 RX_PW_P1 Reserved 7:6 00 R/W 默认为 00 RX_PW_P1 5:0 0 R/W 数据通道1

19、接收数据有效宽 度: 0:无效 1:1 个字节 32: 32 个字节 13 RX_PW_P2 Reserved 7:6 00 R/W 默认为 00 RX_PW_P2 5:0 0 R/W 数据通道2 接收数据有效宽 度: 0:无效 1:1 个字节 32: 32 个字节 深圳市德普施科技有限公司 8 14 RX_PW_P3 Reserved 7:6 00 R/W 默认为 00 RX_PW_P3 5:0 0 R/W 数据通道3 接收数据有效宽 度: 0:无效 1:1 个字节 32: 32 个字节 15 RX_PW_P4 Reserved 7:6 00 R/W 默认为 00 RX_PW_P4 5:0

20、0 R/W 数据通道4 接收数据有效宽 度: 0:无效 1:1 个字节 32: 32 个字节 16 RX_PW_P5 Reserved 7:6 00 R/W 默认为 00 RX_PW_P5 5:0 0 R/W 数据通道5 接收数据有效宽 度: 0:无效 1:1 个字节 32: 32 个字节 17 FIFO_STATUS FIFO 状态寄存器 Reserved 7 0 R/W 默认为 0 TX_REUSE 6 0 R 若 TX_REUSE=1 , 则当 CE 置 高时,不断发送上一数据包。 TX_REUSE通 过SPI 指 令 REUSE_TX_PL设置;通过 W_TX_PALOAD 或 FLU

21、SH_TX 复位 TX_FULL 5 0 R TX_FIFO 寄存器满标志 1:寄存器满 0:寄存器未满,有可用空间 TX_EMPTY 4 1 R TX_FIFO 寄存器空标志 1:寄存器空 0:寄存器非空 Reserved 3:2 00 R/W 默认为 00 RX_FULL 1 0 R RX FIFO 寄存器满标志 1:寄存器满 0:寄存器未满,有可用空间 深圳市德普施科技有限公司 9 RX_EMPTY 0 1 R RX FIFO 寄存器空标志 1:寄存器空 0:寄存器非空 N/A TX_PLD 255 :0 X W N/A RX_PLD 255 :0 X R 八、模块编程控制 1Shock

22、Burst TM 发射模式 深圳市德普施科技有限公司 10 设置 PRIM_RX 为低。 通过 SPI 接口,将接收节点地址(TX_ADDR )和有效数据(TX_PLD )写入模块, 写 TX_PLD 时, CSN 必须一直置低。 置 CE 为高,启动发射。CE 高电平持续时间至少为10us。 ShockBurst TM 发射模式: 深圳市德普施科技有限公司 11 系统上电 启动内部16MHz 时钟 数据打包 数据发射 若启动了自动应答模式(ENAA_P0=1 ) ,则模块立即进入接收模式(NO_ACK已设 置) 。如果接收到应答信号,则表示发射成功,TX_DS 置高且TX FIFO 中的有效

23、数据被移 出;如果没有接收到应答信号,则自动重发(自动重发已设置);如果自动重发次数超过最 大值( ARC) ,MAX_RT置高,在TX FIFO 中的数据不被移出。当MAX_RT 和 TX_DS 置 高时, IRQ 激活。只有重新写状态寄存器(STATUS)才能关闭IRQ。如果重发次数达到最 大后,仍没有接收到应答信号,在MAX_RT中断清除之前,不会再发射数据。PLOS_CNT 计数器会增加,每当有一个MAX_RT 中断产生。 如果 CE 置低,则系统进行待机模式I,否则发送TX FIFO 寄存器中的下一个数据包。 当 TX FIFO 中的数据发射完,CE 仍为高时,系统进入待机模式II。

24、 在待机模式II 下, CE 置低,则进入待机模式I。 2ShockBurst TM 接收模式 设置 PRIM_RX 为高,配置接收数据通道 (EN_RXADDR ) 、 自动应答寄存器 (EN_AA ) 和有效数据宽度寄存器(RX_PW_PX ) 。 置 CE 为高,启动接收模式。 130us 后,模块检测空中信号, 接收到有效的数据包后(地址匹配、 CRC 检验正确), 数据储存在RX FIFO 中, RX_DR 置高。 如果启动了自动应答功能,则发送应答信号。 MCU 置 CE 为低,进入先机模式I。 MCU 可通过 SPI 接口将数据读出 模块准备好进入发射模式或接收模式或待机模式。

25、深圳市德普施科技有限公司 12 深圳市德普施科技有限公司 13 九、 RF 通道频率 RF 通道频率指的是nRF24L01所使用的中心频率,该频率范围从2.400GHz到 2.525GHz ,以 1MHz 区分一个频点,故有125 个频点可使用。 由参数 RF_CH 确定,公式为:F0 = 2400 + RF_CH ( MHz ) 十、示例程序 接收模块与发射模块大部分程序代码相同,如下: 1SPI 命令和寄存器配置头文件API.h (根据第六、七两点编写) #ifndef _BYTE_DEF_ #define _BYTE_DEF_ typedef unsigned char BYTE; #e

26、ndif / SPI 命令 #define READ_REG 0x00 /读第 0 个寄存器 #define WRITE_REG 0x20 /写第 0 个寄存器 #define RD_RX_PLOAD 0x61 /在接收模式下使用 ,读有效数据 #define WR_TX_PLOAD 0xA0 /在发送模式下使用,写有效数据 #define FLUSH_TX 0xE1 /在发送模式下使用,清 TX FIFO 寄存器 #define FLUSH_RX 0xE2 /在接收模式下使用,清 RX FIFO 寄存器 #define REUSE_TX_PL 0xE3 /发送方使用 ,重复发送最后的数据 #

27、define NOP 0xFF /空操作 ,用于读状态寄存器STATUS 的值 / nRF24L01 寄存器地址 #define CONFIG 0x00 /配置寄存器 ,8bit #define EN_AA 0x01 /自动应答设置寄存器,8bit #define EN_RXADDR 0x02 /接收地址设置寄存器,8bit #define SETUP_AW 0x03 /地址宽度设置寄存器,8bit #define SETUP_RETR 0x04 /自动重复发送设置寄存器,8bit #define RF_CH 0x05 /RF 通道寄存器 ,8bit #define RF_SETUP 0x06

28、 /RF 设置寄存器 ,8bit #define STATUS 0x07 /状态寄存器 ,8bit #define OBSERVE_TX 0x08 /发送观测寄存器 ,8bit #define CD 0x09 /载波检测寄存器 ,8bit, #define RX_ADDR_P0 0x0A /接收地址数据通道0,40bit #define RX_ADDR_P1 0x0B #define RX_ADDR_P2 0x0C #define RX_ADDR_P3 0x0D #define RX_ADDR_P4 0x0E #define RX_ADDR_P5 0x0F #define TX_ADDR 0x

29、10 /发送地址 .发送方使用 ,40bit #define RX_PW_P0 0x11 /通道 0 接收的有效数据字节长度(1-32 字节 ),8bit #define RX_PW_P1 0x12 #define RX_PW_P2 0x13 深圳市德普施科技有限公司 14 #define RX_PW_P3 0x14 #define RX_PW_P4 0x15 #define RX_PW_P5 0x16 #define FIFO_STATUS 0x17 /FIFO 状态寄存器 ,8bit 2SPI 操作头文件 (与单片机的接口设置在此头文件中) #define uchar unsigned c

30、har #define TX_ADR_WIDTH 5 /地址长度为 5 个字节 #define TX_PLOAD_WIDTH 20 /数据长度为 20 个字节 uchar const TX_ADDRESSTX_ADR_WIDTH = 0xE7,0xE7,0xE7,0xE7,0xE7; char rx_bufTX_PLOAD_WIDTH; /接收缓冲区 uchar flag; /标志位 int test12; #define CE P0_0 /芯片使能 :Chip Enable #define CSN P0_1 /片选信号 :Chip Select Not #define SCK P1_2 /串

31、行时钟信号 :Serial Clock #define MOSI P0_3 /主发从收 :Master In Slave Out #define MISO P0_4 /主收从发 :Master Out Slave In #define IRQ P3_2 /中断查询 :Interrupt Request uchar bdata sta; sbit RX_DR = sta6; sbit TX_DS = sta5; sbit MAX_RT = sta4; uchar SPI_RW(uchar byte)/写一个字节到nRF24L01,并返回此时 nRF24L01 的状态及数据 uchar bit_c

32、tr; for(bit_ctr=0;bit_ctr #define uint unsigned int #define uchar unsigned char /nRF24L01的数据宽度,地址宽度,以及数据定义 #define TX_ADR_WIDTH 4 #define RX_PLOAD_WIDTH 4 #define TX_PLOAD_WIDTH 4 uchar TX_ADDRESS=0xe7,0xe7,0xe7,0xe7; uchar data4=“zhou“; uchar rx_buf4; /引脚定义 2274 #define CSN_HIGH P3OUT|=BIT1/P3.1控制

33、SPI 使能 #define CSN_LOW P3OUT /*/SPI 初始化程序2274 void SPI_INIT() UCA0CTL0 |=UCMSB + UCMST + UCSYNC;/ 3-pin, 8-bit SPI master UCA0CTL1 |= UCSSEL_1; / ACLK UCA0BR0 |= 0x03;/ 波特率 9600 UCA0BR1 = 0; UCA0MCTL = 0X91; UCA0CTL1 P3SEL|=BIT0+BIT4+BIT5; /正宗 SPI 写一字节数据到24L01, 同时返回一个自己的数据2274 uchar SPI_RW(uchar byt

34、e) while (!(IFG2 UCA0TXBUF=byte; delay_us(200); return UCA0RXBUF; */ /模拟 SPI 方式 uchar SPI_RW(uchar byte) 深圳市德普施科技有限公司 22 uchar bit_ctr; uchar a,b; for(bit_ctr=0;bit_ctr8;bit_ctr+) a=(byte if(a!=0) MOSI_HIGH; else MOSI_LOW; byte=(byte1); SCK_HIGH; b=“P3IN“ if(b!=0) byte+=1; else; SCK_LOW; return byte

35、; /向寄存器写一字节的数据,同时返回状态字 uchar SPI_RW_Reg(uchar reg,uchar value) uchar status; CSN_LOW; status=“SPI“_RW(reg); SPI_RW(value); CSN_HIGH; return(status); /向寄存器读出一字节的数据 uchar SPI_Read(uchar reg) uchar byte; CSN_LOW; SPI_RW(reg); byte=“SPI“_RW(0x00);/写入一个 0x00, 读出数据 CSN_HIGH; return byte; /读出 bytes 字节的数据 u

36、char SPI_Read_Buf(uchar reg,uchar *pBuf,uchar bytes) uchar status,byte_ctr; 深圳市德普施科技有限公司 23 CSN_LOW; status=“SPI“_RW(reg);/选择寄存器,并返回状态 for(byte_ctr=0;byte_ctrbytes;byte_ctr+) pBufbyte_ctr=SPI_RW(0); CSN_HIGH; return(status); /写入 bytes 字节的数据 uchar SPI_RW_Buf(uchar reg,uchar *pBuf,uchar bytes) uchar s

37、tatus,byte_ctr; CSN_LOW; status=“SPI“_RW(reg); for(byte_ctr=0;byte_ctrbytes;byte_ctr+) SPI_RW(*pBuf+); CSN_HIGH; return(status); /接收函数,接收返回1 表示有数据收到 uchar nRF24L01_RxPacket(uchar *rx_buf) uchar sta; uchar revale=“0“; SPI_RW_Reg(WRITE_REG+CONFIG,0X0F); CE_HIGH; delay_us(130); sta=“SPI“_Read(READ_REG+

38、STATUS); while(sta/ 进入闲置模式 SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);/*数据宽度未定义 */ revale=“0xff“;/ 如果有数据收到,则点亮led SPI_RW_Reg(WRITE_REG+STATUS,sta); return revale; /发送函数 void nRF24L01_TxPacket(uchar *tx_buf) /stand by 模式 CE_LOW; /给发送寄存器写入地址,宽度为TX_ADR_WIDTH SPI_RW_Buf(WRITE_REG+TX_ADDR,TX_ADDRESS

39、,TX_ADR_WIDTH); /给接收寄存器写入地址,宽度也为TX_ADR_WIDTH 深圳市德普施科技有限公司 24 SPI_RW_Buf(WRITE_REG+RX_ADDR_P0,TX_ADDRESS,TX_ADR_WIDTH); SPI_Read_Buf(RX_ADDR_P0,rx_buf,TX_ADR_WIDTH); /向发送寄存器写入TX_PLOAD_WIDTH宽度的数据, SPI_RW_Buf(WR_TX_PLOAD,tx_buf,TX_PLOAD_WIDTH); /配置为 PWR_UP 位,使能 CRC ,16 位校验,发送模式 SPI_RW_Reg(WRITE_REG+CON

40、FIG,0X0E); CE_HIGH; delay_us(10); CE_LOW; /nRF24L01的配置函数 void nRF24L01_Config() CE_LOW;/ 芯片使能 CSN_HIGH;/SPI复位 /使能接收模式 SPI_RW_Reg(WRITE_REG+CONFIG,0X0F); SPI_Read(CONFIG); /数据通道 0 自动应答 SPI_RW_Reg(WRITE_REG+EN_AA,0X01); SPI_Read(EN_AA); /通道 0 允许 SPI_RW_Reg(WRITE_REG+EN_RXADDR,0X01); /设置地址宽度为4 字节 SPI_R

41、W_Reg(WRITE_REG+SETUP_AW,0X02); /建立自动重发, 500+86us ,10 次重发 SPI_RW_Reg(WRITE_REG+SETUP_RETR,0X1A); /设置工作通道频率 SPI_RW_Reg(WRITE_REG+RF_CH,0x02); /设置工作通道传输速率为1Mbps ,发射功率为0dBm SPI_RW_Reg(WRITE_REG+RF_SETUP,0X03); /设置通道 0 有效数据宽度RX_PLOAD_WIDTH SPI_RW_Reg(WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH); void IO_INIT() P3DIR|=BIT0+BIT1+BIT2+BIT4; void main() uchar sta; WDTCTL=“WDTPW“+WDTHOLD; 深圳市德普施科技有限公司 25 IO_INIT(); / SPI_INIT(); nRF24L01_Config(); while(1) nRF24L01_TxPacket(data); sta=“SPI“_Read(READ_REG+STATUS); if(sta SPI_RW_Reg(WRITE_REG+STATUS,sta); delay_us(10000);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1