nrf24l01的收发信号资料.pdf

上传人:白大夫 文档编号:5402835 上传时间:2020-05-01 格式:PDF 页数:27 大小:404.54KB
返回 下载 相关 举报
nrf24l01的收发信号资料.pdf_第1页
第1页 / 共27页
nrf24l01的收发信号资料.pdf_第2页
第2页 / 共27页
nrf24l01的收发信号资料.pdf_第3页
第3页 / 共27页
nrf24l01的收发信号资料.pdf_第4页
第4页 / 共27页
nrf24l01的收发信号资料.pdf_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《nrf24l01的收发信号资料.pdf》由会员分享,可在线阅读,更多相关《nrf24l01的收发信号资料.pdf(27页珍藏版)》请在三一文库上搜索。

1、王晖 曹恒万东胜 物理与电子工程学院 2014 无线电电子设计大赛 题目:NRF24L01 的收发信号 队号:三个烙铁匠 队员:王晖 曹恒万东胜 王晖 曹恒万东胜 物理与电子工程学院 摘要 随着现代电子技术的飞速发展, 通信技术也取得了长足的进步。 在无线通信领域 , 越来越多的通信产品大量涌现出来。 但设计无线数据传输产品往往需要相当的无线电 专业知识和价格高昂的专业设备,因而影响了用户的使用和新产品的开发。nRF24L01 是一个为 433MHz ISM频段设计的无线收发芯片, 它为短距离无线数据传输应用提供 了较好的解决办法 , 使用 nRF24L01降低了开发难度,缩短了开发周期,使产

2、品能更 快地推向市场。 本文提出了一种应用于无线数据收发系统的设计思路及实现方案,给 出了基于无线射频芯片nRF24L01和STC89C52 单片机的无线数据传输模块的设计方法, 详细分析了各部分实现原理,并对系统的传输距离、传输数据的正确性进行了测试。 试验表明,该系统性能稳定,具有较强的抗干扰能力,有较强的实用价值。 关键词: 无线通信;无线数据传输模块;单片机;射频 Abstract With the rapid development of modern electronic technology, communication technology has also made grea

3、t progress. In the field of wireless communication, more and more communication products have sprung up in large quantities. But the design of wireless data transmission products often require considerable radio of the high price of professional knowledge and professional equipment, thus affecting t

4、he users use and development of new products. NRF24L01 is a designed for 433 MHZ ISM band wireless transceiver chip, it for the short distance wireless data transmission application provides a better solution, using nRF24L01 reduces the development difficulty, shorten the development cycle, can make

5、 the product to market faster. This paper puts forward a kind of applied to wireless data transceiver system design idea and implementation scheme, and is given based on wireless rf chip nRF24L01 and STC89C52 single-chip wireless data transmission module, the design method of the realization princip

6、le of each part are analyzed in detail, and the transmission distance of the system, the correctness of the data transmission was tested. Tests show that the system performance is stable, strong anti-interference ability, a strong practical value. Keywords:Wireless communication;Wireless data transm

7、ission module ;Single chip microcomputer;Radio frequency 王晖 曹恒万东胜 物理与电子工程学院 目录 前言1 1 系 统设计 1 1.1 系统设计2 1.2 实现过程2 2 系统组成3 2.1 射频收发控制模块3 2.1.1 无线收发芯片nRF24L01 介绍3 2.1.2 稳压部分5 2.2 单片机控制部分5 2.2.1 STC89C52RC功能介绍6 2.2.2 内部结构6 2.2.3 串口通信8 2.3 显示部分9 3 软件设计10 3.1 主程序流程图11 3.2 数据收发子程序流程图11 4 测试结果及分析12 4.1 硬件电路

8、测试13 4.2 系统测试13 4.2.1 测试方法13 4.2.2 功能测试及分析13 5 结论14 6 参考文献15 附录 1:无线发射系统电路图16 附录 2 :发送程序 17 王晖 曹恒万东胜 物理与电子工程学院 前言 伴随着短距离、 低功率无线数据传输技术的成熟,无线数据传输被越来越多地应 用到新的领域。 与有线通信方式相比, 无线通信以其不需铺设明线,使用便捷等一系 列优点,在现代通信领域占重要地位。 但以往的无线产品存在范围和方向上的局限。例如,一些无线产品在使用时, 无 法将信息反馈给控制者; 还有一些无线产品不能很好地显示参数或状态信息,如果能 在系统中增加一块小型液晶显示电

9、路,产品不仅能向用户显示其状态或状态的改变, 而且可以大大降低成本。正如人们所发现的,只要建立双向无线通信-双工通信并且 选无线数据传输模块基于微功耗单片射频收发器NRF24L01设计,采用 89C52单片机 完成数据的处理和控制择成本低的收发芯片,就会出现许多新应用。 本次设计主要是利用无线收发电路,加上单片机控制与发光二极管制成一简易的 信号收发系统。 考虑到目前市场上的一些需求,设计的主要要求是方案成本低,体积 小,低功耗,集成度高,尽量无需调外部元件,传输时间短,接口简单。 王晖 曹恒万东胜 物理与电子工程学院 第一章系统设计 1.1 系统设计 无线数据传输系统有点对点, 点对多点和多

10、点对多点三种。 本系统由于实际应用 的需要,接收器和数据终端之间的数据传输通过NRF24L01 进行,构成点对点无线数 据传输系统。 无线数据收发系统可以分为无线收发控制电路、单片机控制电路、 显示电路和按 键电路四部分组成,系统原理框如图1-1 所示: 图 1-1 无线数据收发系统原理图 1.2 实现过程 当我们需要发送数据时,使用按键来输入所需发送的信息。按键与单片机的 STC89C52RC 的 P1.0-P3.5口相接,单片机的P1.0 口控制信息的发送与接收,并且 TXD 端与收发器输入端相连,通过TXD 将数据传入收发器,收发器接收到数据后, 通过 FSK 调制,将信号发送出去;接收

11、端的收发器通过解调,将载波信号转换为数 字信号,完成信息传输过程; 收发器的输出端通过RXD 端将数字信号输入到单片机; 单片机将数据传送到显示器,这样就完成了一次数据发送与接收并显示的过程。 本系统采用的是半双工传送方式。所谓半双工就是通信的双方均具有发送和接 收信息的能力, 信道也具有双向传输性能, 但是,通信的任何一方都不能同时既发送 信息又接收信息, 即在指定的时刻, 只能沿某一个方向传送信息。 所以上述实现过程 只介绍了由一方传送到另一方的过程,而相反方向与其原理相同。 第二章系统组成 N R F 24 L 01 按 键 单 片 机 系 统 N R F 24 L 01 小 灯 单 片

12、 机 系 统 王晖 曹恒万东胜 物理与电子工程学院 2.1 射频收发控制模块 该模块主要由 NRF24L01 构成, RF24L01是一款工作在 2.42.5GHz 世界通用 ISM 频段的单片无线收发器芯片。无线收发器包括:频率发生器、增强型SchockBurst模 式控制器、功率放大器、晶体振荡器调制器、解调器。输出功率频道选择和协议的设 置可以通过 SPI接口进行设置 。 2.1.1 无线收发芯片 nRF24L01 介绍 1. 主要引脚功能 图 2-1NRF24L01 引脚图 表 2-1 NRF24L01 主要引脚说明表 接口电路管脚 说明管脚 名称管脚功能说明 1 GND 接地电源电源

13、地 2 VCC 接电源正电源正。范围在 1.9-3.6V。 3 CE 模块输入信号由 单 片 机 给 出 信 号 控 制 NRF24L01模块内部射频电路工 作与否 4 CSN 模块输入信号模块的片选信号,单片机发出信 号来控制允许向模块读或写数据 5 SCK 模块输入信号串行时钟信号。由单片机发出, 来控制模块的读或写的运作节拍 6 MOSI 模块输入信号是单片机向 NRF24L01发送数据 的接口 7 MISO 模块输出信号是NRF24L01模块向单片机送数 据的接口 8 IRQ 模块输出信号是NRF24L01产生中断信号发送 给单片机的接口 王晖 曹恒万东胜 物理与电子工程学院 2. 内

14、部结构 图 2-2NRF24L01 无线收发芯片内部结构图 3. NRF24L01 无线模块特点: (1)GFSK 调制: (2)硬件集成OSI 链路层; (3)具有自动应答和自动再发射功能; (4)片内自动生成报头和CRC 校验码; (5)数据传输率为l Mb/s 或2Mb/s; (6)SPI 速率为 0 Mb/s10 Mb/s; (7)125 个频道: (8)与其他 nRF24 系列射频器件相兼容; 4.GFSK 调制 本系统中的 NRF24L01 是具备 GFSK 调制的无线收发芯片。 GFSK 高斯频移键 控调制是把输入数据经高斯低通滤波器预调制滤波后,再进行FSK 调制的数字调制 方

15、式。它在保持恒定幅度的同时,能够通过改变高斯低通滤波器的3dB 带宽对已调信 号的频谱进行控制, 具有恒幅包络、 功率谱集中、 频谱较窄等无线通信系统所希望的 特性。因此,GFSK 调制解调技术被广泛地应用在移动通信、航空与航海通信等诸多领 域中。 王晖 曹恒万东胜 物理与电子工程学院 2.1.2 稳压部分 由于 NRF24L01 的 VCC 脚接电压范围为3.3V3.6V 之间, 不能在这个区间之外, 超过 3.6V 将会烧毁模块,因此选用3.3V 电压。 由于作品采用的是自制的稳压电源,输出端为5v,所以采用串联电阻的方式进 行分压对 nrf24l01 输入 3.3v 的电压,但在实际测试

16、中发现串联1k 欧姆的电阻后收发 芯片两端的电流会产生较大的误差,是芯片无法正常工作, 于是采用在稳压电源输出 端串联发光二极管的方法分去1.7v 的电压,达到对芯片提供3.3v 电压的效果 2.2 单片机控制部分 控制电路主要组成部分为单片机STC89C52RC, 通过两个单片机最小系统用其控 制 NRF24L01 的工作模式和 SPI输入输出,从而调整收发状态。 2.2.1 STC89C52RC功能介绍 STC89C52 是一种低功耗、高性能CMOS8 位微控制器,具有8K 在系统可编程 Flash 存储器。 STC89C52 使用经典的 MCS-51 内核,但做了很多的改进使得芯片具 有

17、传统 51 单片机不具备的功能。在单芯片上,拥有灵巧的8 位 CPU 和在系统可编 程 Flash,使得 STC89C52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方 案。 具有以下标准功能:8k 字节 Flash,512字节 RAM , 32 位 I/O 口线,看门狗 定时器,内置 4KB EEPROM,MAX810 复位电路, 3 个 16 位定时器 /计数器,4 个外 部中断,一个 7 向量 4 级中断结构 (兼容传统 51 的 5 向量 2 级中断结构),全双工串 行口。另外STC89C52 可降至 0Hz 静态逻辑操作,支持2 种软件可选择节电模式。 空闲模式下, CPU 停

18、止工作,允许RAM 、定时器 /计数器、串口、中断继续工作。 掉电保护方式下, RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下 一个中断或硬件复位为止。最高运作频率35MHz,6T/12T 可选。 2.2.2 内部结构 STC89C52RC单片机包含中央处理器、程序存储器(ROM)、数据存储器 (RAM) 、 定时器 /计数器、并行 I/O 口、串行 I/O 口和中断系统等几大单元以及数据总线、地址 总线和控制总线三大总线构成。 王晖 曹恒万东胜 物理与电子工程学院 图 2-4 STC89C52RC芯片引脚图 (1) 电源和晶振 VCC:供电电压。 GND:接地。 XTAL1 :

19、反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2 :来自反向振荡器的输出。 (2) I/O 口 P0口 P0 口的字节地址为 80H, 位地址为 80H87H。 P0口既可以作为通用I/O 口使用, 也可以作为单片机系统的地址/数据线使用。当作为输出口使用时,由于输出电路是 漏极开路,必须外接上拉电阻才能有高电平输出。 P1口 P1 口的字节地址为 90H,位地址为 90H97H。P1口只能作为通用 I/O 口使用。 当作为输出口使用时, 已能对外提供推拉电流负载, 外电路无需再接上拉电阻; 当作 为输入口使用时,应先向其锁存器写入“1” ,使输出驱动电路的FET 截止。 P2口 P

20、2 口的字节地址为0A0H,位地址为 0A0H0A7H。P2 口用于为系统提供高位 地址,但只作为地址线使用而不作为数据线使用。此外,P2 口也可作为通用I/O 口 使用。 P3口 P3 口的字节地址为0B0H,位地址为 0B0H0B7H。P3 口可以作为通用I/O 口 使用,但在实际应用中它的第二功能信号更为重要。 P3.0 RXD(串行输入口) p1.0 1 p1.1 2 p1.2 3 p1.3 4 p1.4 5 p1.5 6 p1.6 7 p1.7 8 RST/VPD 9 RXD/P3.0 10 TXD/P3.1 11 INT0/P3.2 12 INT1/P3.3 13 T0/P3.4

21、14 T1/P3.5 15 WR/P3.6 16 RD/P3.7 17 XTAL2 18 XTAL1 19 GND 20 P2.0 21 P2.1 22 P2.2 23 P2.3 24 P2.4 25 P2.5 26 P2.6 27 P2.7 28 PSEN 29 ALE/PROG 30 EA/VPP 31 P0.7 32 P0.6 33 P0.5 34 P0.4 35 P0.3 36 P0.2 37 P0.1 38 P0.0 39 VCC 40 王晖 曹恒万东胜 物理与电子工程学院 P3.1 TXD(串行输出口) P3.2 /INT0(外部中断 0) P3.3 /INT1(外部中断 1) P

22、3.4 T0(计时器 0 外部输入) P3.5 T1(计时器 1 外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) (3) 4 根控制线 RST:复位信号。保持RST 脚两个机器周期以上的高电平,就可以完成CPU 系 统复位操作,使系统的一些单元内容回到规定值。 /PSEN:外部程序存储器读选通信号。在读外部ROM 时,/PSEN 有效(低电平), 以实现外部 ROM 单元的读操作。 /EA/VPP:访问程序存储器控制信号。当/EA 信号为低电平时,对ROM 的读操作 限定在外部程序存储器;而当/EA 为高电平时,则对ROM 的读操作是从内部程序存

23、 储器开始,并可延续至外部程序存储器。 ALE/PROG:地址锁存控制信号。在系统扩展时,ALE 用于控制 P0 口输出的低 8 位地址送入锁存器锁存起来,以实现低位地址和数据的分时传送。此外由于ALE 是 以六分之一晶振频率的固定频率输出的正脉冲,因此也可作为外部时钟或外部定时脉 冲使用。 2.2.3 串口通信 通信主要有两种方式: 并行通信和串行通信。 并行通信是在传送数据过程中每个 字节的各位同时进行传送的通信方式, 而串行通信 14是指每个字节的各位分别进行传 送的通信方式。 1 串口通信方式 STC89C52 串行口可设置四种工作方式,可有8 位、10 位和 11 位帧格式。本系 统

24、中,STC89C52RC采用串行口工作于方式1,即每帧 10 位的异步通信格式: 1 位起 始位, 8 位数据位(低位在前),1 位停止位。当 SM0=0,SM1=1 时,串行口选择方 式 1。其帧格式为: 图 2-5 帧格式图 停止起始 D6 D7 D0 D1 D2D3 D4 D5 王晖 曹恒万东胜 物理与电子工程学院 2 串行通信控制寄存器 (1) 串行控制寄存器 (SCON) SCON 的地址为 98H,用于选择串行口的工作方式和指示串行口的工作状态。 各位含义如下: SM0、SM1:串行口工作方式选择位。 SM2:多机通信选择位。 REN:串行口允许接收位。 1时允许接收,0时禁止接收

25、。 TI: 串行口发送中断标志位。在方式1 中,于发送停止位之前,由硬件置位。因 此 TI=1,表示帧发送结束。 RI: 串行口接收中断标志位。 在方式 1 中,当接收到停止位时, 该位由硬件置位。 RI=1,表示帧接收结束。 (2) 串行数据缓冲器 (SBUF) 串行数据缓冲器SBUF 的地址为 99 H,用来存放需发送和接收的数据,它由两 个独立的寄存器组成, 一个是发送缓冲器, 另一个是接收缓冲器, 它们占用同一地址 (99H) 。当执行写 SBUF 指令时,数据写入到串行口发送缓冲器中,读SBUF 就是 读串行口接收缓冲器。 (3) 电源控制寄存器 (PCON) PCON 的地址为 8

26、7H,该寄存器的最高位( SMOD)是串行口波特率的倍增位, 当 SMOD=1 时,串行口波特率加倍。系统复位时,SMOD=0。 (4) 中断允许寄存器( IE) 在 IE 中,ES位为串行中断允许控制位。ES=0时禁止串行中断, ES=1时允许串 行中断。 3 数据发送与接收 (1) 数据发送 在不发送数据时, TXD 端保持高电平。当执行写SBUF 的指令时,便启动一次 发送过程;发送数据时,先发送一个起始位,该位通知接收端开始接收,也使发送和 接收过程同步。接下来发送8 位数据,先发送低位,最后发送的是高电平的停止位。 (2) 数据接收 REN=1,CPU 允许串行口接收数据,接收数据开

27、始于检测到RXD(P3.0)端发 生一个“ 1”到“ 0”的跳变。先接收起始位,然后依次将采样RXD 端并将数据移入 王晖 曹恒万东胜 物理与电子工程学院 移位寄存器中。 若满足条件 RI=0 且 SM2=0 或接收到停止位,则将前 8 位数据送入 SBUF 并置位 RI;如果上述条件不满足,则数据丢失。 (3) 波特率的设定 串口方式 1 的波特率是可变的,由定时器T1 的溢出率决定: 其中, SMOD 为 PCON 寄存器最高位的值。 溢出率为溢出周期的倒数,假定计数初值为X,则计数溢出周期为 其中, fosc 为晶振频率。 则波特率计算公式为: 由波特率算出计数初值,以便进行定时器的初始

28、化。初值X 确定如下: 2.3 显示部分 考虑到成本的节约和作品的体积, 该部分由单片机最小系统上的测试小灯进行显 示。 溢出率定时器波特率1 32 2 T SMOD (2.2 ) )256( 12 X fosc 溢出周期(2.3 ) X fosc SMOD 2561232 2 波特率(2.4 ) 波特率 384 2 256 SMOD fosc X (2.5 ) 王晖 曹恒万东胜 物理与电子工程学院 第三章软件设计 无线数据传输主要由无线数据收发器NRF24L01、STC89C52RC单片机、显示器 和按键组成,收发器与STC89C52RC 间用串行口通信。整个系统的各个部分都是服 务于无线数

29、据传输这个目的。所以,在整个系统的软件设计中, 无线数据的传输是最 为重要的。这里使用C 语言编写单片机控制程序。 3.1 主程序流程图 当单片机上电开始执行之后, 对液晶和单片机寄存器进行初始化,同时设置串口 控制字及波特率, 接着进入键盘扫描程序和接收程序。若有某个按键按下, 则执行相 应的键盘子程序;若单片机判断接收到数据,则开始进行CRC 校验,如果数据正确 就通过液晶显示传送的信息。主程序流程图见图3-1。 开始 初始化 设置串口工作方式 N Y N N 判 断 是 否 有 按键按下 执行相应的程序 判 断 是 否 接 收到数据 CRC校 验 是 否正确 数据处理 送入显示 扫描键盘

30、,同时判断是否有数据接收 Y Y 王晖 曹恒万东胜 物理与电子工程学院 图 3-1 主程序流程图 3.2 数据收发子程序流程图 单片机 STC89C52 控制 nRF2401 的收发状态、完成编解码等工作。nRF2401 芯 片 “PWR-UP” 端接高电平 ,“FREQ” 端接低电平,分别表示系统在上电后始终处 于 “正常工作模式”和“工作频道为通道1” 。单片机 STC89C52控制 nRF2401,使 其一直为接收状态。当按键4 按下时, STC89C52接收到输入的低电平信号,从脚送 出高电平至 P1.0脚,使 nRF24L01 进入发射状态。数据收发子程序流程图见图3-2。 图 3-

31、2 数据收发子程序流程图 入口 置 nRF24L01 为接收状 态 判断按键 4 是 否按下 置 Nrf24L01 为发射状 态 数据发射 Y N 键盘扫描 王晖 曹恒万东胜 物理与电子工程学院 第四章测试结果及分析 4.1 硬件电路测试 本设计中将控制模块和无线射频模式分开设计,控制模块通过一只单排7 脚的接 口控制射频模块,测试的步骤如下: (1) 将控制模块和无线射频模块焊好,检查确认无虚焊、粘焊; (2) 先对控制模块上电进行测试,主要是测试控制模块的串口能否收发数据,测试方 法是将控制模块的串口与PC机的串口通过 RS232标准相连接,并将串口的程序写到 STC89C52上,然后用串

32、口测试软件测试,如果串口能收发数据,便可开始对无线射 频模块进行测试; (3) 将无线收发模块与控制模块连接起来,上电进行测试,按照程序,上电时处于接 收状态,看是否与程序吻合; (4) 确认射频模块上电处于接收状态后,可测试nRF2401 的第 4 管脚是否为 1.1V 左 右,如果是,则说明VCO 电感设计合理,否则要重新设计PCB 板,此外, nRF401 在没有数据接收时 ,仍会自动从 DOUT 发送随机数据,使用万用表进行测试时,该引 脚电压应为 2.5V 左右。 4.2 系统测试 4.2.1 测试方法 (1) 首先让电路正常工作,把接收器放在一定的位置,将发射器从远处逐渐靠近接收

33、器,可测到传送的最远距离。 (2) 在距离接收器一定的距离时,间隔一段时间就发送数据信息,可测出接收器的接 收灵敏度。 (3) 比较发射器和接收器的数据显示是否相同,以测试传输数据的正确性。 4.2.2 功能测试及分析 由于无线通信环境的不确定性, 各种环境下的传输效果是不尽相同的, 路径损耗、 建筑物影响、 人体影响、 外界干扰、 多径现象和周围环境的吸收等都会对传输的距离 产生一定的影响, 只能在一个给定的条件下进行测试和评估。因此,分别选择了不同 王晖 曹恒万东胜 物理与电子工程学院 的试验场地来进行实验。 (1) 当建筑物很多的时候,数传模块两端均离地面1.5m(2.0m)高时,能够达

34、到的最 佳通信距离为 510m;接收灵敏度为23 秒;当发送端发送MESSAGE 时,接收 端能准确显示 MESSAGE 这段英文字符。 (2) 在空旷场地,数传模块两端均离地面1.5m 高时,最远的通信距离能够达到50m; 接收灵敏度为 35 秒;当发送端发送字母A 时,接收端能准确显示。 通过对系统数据传输能力的测试,该系统发送和接收数据正确、可靠,各元件工 作正常。在硬件连接正确的基础上,利用nRF2401 进行串行数据接收及发送,收到 了较好效果。 王晖 曹恒万东胜 物理与电子工程学院 结论 此次设计将应用于无线通信领域, 并且针对当前市场上无线产品的不足进行了改 进。本文根据 nRF

35、2401的特点,提出了一种将其应用无线数据收发系统的实现方案。 此方案采用了较完善的软硬件设计和抗干扰措施,保证了系统工作的安全性和可靠 性,是一种较好的设计思路,具有通用性,便于投入实际应用。并且只要稍作改动就 可以应用到小区传呼、工业数据采集、自动读表、警报和安全系统、无线键盘、无线 操纵杆、家庭自动化、 遥测和玩具等其他一些短距离无线通信领域,实现无线数据的 双向传输,具有较好的市场应用价值。 王晖 曹恒万东胜 物理与电子工程学院 参考文献 1 黄智伟 .无线数字收发电路设计,第2 版,电子工业出版社, 2004年,253-269. 2 童诗白等 .模拟电子技术基础 .高等教育出版社,

36、2000 3 郭天祥,新概念 51 单片机 C 语言教程 4 康华光,邹寿彬 .电子技术基础,第1 版,高等教育出版社, 2002年,191-197. 5 黄智伟,王彦,陈文光等 .全国大学生电子设计竞赛训练教程,第1 版,电子工业 出版社, 2004 年,73-80. 王晖 曹恒万东胜 物理与电子工程学院 附录 1 无线发射系统电路图 王晖 曹恒万东胜 物理与电子工程学院 附录 2 发送程序 #include #include typedef unsigned char uchar; typedef unsigned char uint; /*NRF24L01端口定义 * sbit MISO

37、 =P13; sbit MOSI =P14; sbit SCK =P12; sbit CE =P11; sbit CSN =P32; sbit IRQ =P33; /*按键 * sbit KEY=P20; /* sbit led=P21; /*NRF24L01* * #define TX_ADR_WIDTH 5 / 5 uints TX address width #define RX_ADR_WIDTH 5 / 5 uints RX address width #define TX_PLOAD_WIDTH 20 / 20 uints TX payload #define RX_PLOAD_W

38、IDTH 20 / 20 uints TX payload uint const TX_ADDRESSTX_ADR_WIDTH= 0x34,0x43,0x10,0x10,0x01; /本地地址 uint const RX_ADDRESSRX_ADR_WIDTH= 0x34,0x43,0x10,0x10,0x01; /接收地址 /*NRF24L01寄存器指令 * #define READ_REG 0x00 / 读寄存器指令 #define WRITE_REG 0x20 / 写寄存器指令 #define RD_RX_PLOAD 0x61 / 读取接收数据指令 #define WR_TX_PLOAD

39、 0xA0 / 写待发数据指令 #define FLUSH_TX 0xE1 / 冲洗发送FIFO 指令 #define FLUSH_RX 0xE2 / 冲洗接收FIFO 指令 #define REUSE_TX_PL 0xE3 / 定义重复装载数据指令 #define NOP 0xFF / 保留 /*SPI(nRF24L01)寄存器地址 * #define CONFIG 0x00 / 配置收发状态,CRC 校验模式以及收发状态响应方式 王晖 曹恒万东胜 物理与电子工程学院 #define EN_AA 0x01 / 自动应答功能设置 #define EN_RXADDR 0x02 / 可用信道设置

40、#define SETUP_AW 0x03 / 收发地址宽度设置 #define SETUP_RETR 0x04 / 自动重发功能设置 #define RF_CH 0x05 / 工作频率设置 #define RF_SETUP 0x06 / 发射速率、功耗功能设置 #define STATUS 0x07 / 状态寄存器 #define OBSERVE_TX 0x08 / 发送监测功能 #define CD 0x09 / 地址检测 #define RX_ADDR_P0 0x0A / 频道 0接收数据地址 #define RX_ADDR_P1 0x0B / 频道 1接收数据地址 #define RX

41、_ADDR_P2 0x0C / 频道 2接收数据地址 #define RX_ADDR_P3 0x0D / 频道 3 接收数据地址 #define RX_ADDR_P4 0x0E / 频道 4 接收数据地址 #define RX_ADDR_P5 0x0F / 频道 5 接收数据地址 #define TX_ADDR 0x10 / 发送地址寄存器 #define RX_PW_P0 0x11 / 接收频道0 接收数据长度 #define RX_PW_P1 0x12 / 接收频道0 接收数据长度 #define RX_PW_P2 0x13 / 接收频道0 接收数据长度 #define RX_PW_P3

42、0x14 / 接收频道0 接收数据长度 #define RX_PW_P4 0x15 / 接收频道0 接收数据长度 #define RX_PW_P5 0x16 / 接收频道0 接收数据长度 #define FIFO_STATUS 0x17 / FIFO 栈入栈出状态寄存器设置 /* * void Delay(unsigned int s); void inerDelay_us(unsigned char n); void init_NRF24L01(void); uint SPI_RW(uint uchar); uchar SPI_Read(uchar reg); void SetRX_Mode

43、(void); uint SPI_RW_Reg(uchar reg, uchar value); uint SPI_Read_Buf(uchar reg, uchar *pBuf, uchar uchars); uint SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars); unsigned char nRF24L01_RxPacket(unsigned char* rx_buf); void nRF24L01_TxPacket(unsigned char * tx_buf); /*长延时 * void Delay(unsigned int

44、s) unsigned int i; for(i=0; i0;n-) _nop_(); /* * /*NRF24L01 初始化 /* */ void init_NRF24L01(void) inerDelay_us(100); CE=0; / chip enable CSN=1; / Spi disable SCK=0; / SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); / 写本地 地址 SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); / 写接收 端地址 SPI_RW_Reg(WRITE_REG + EN_AA, 0x01); / 频道 0 自动ACK 应答允许 SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); / 允许接收地址只有频道0, 如果需要 多频道可以参考Page21 SPI_RW_Reg(WRITE_REG

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

当前位置:首页 > 其他


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