[nRF51822] 13、浅谈nRF51822和NRF24LE1/NRF24LU1/NRF24L01经典2.4G模块无线通信配置与流程

本文涉及的产品
云解析DNS-重点域名监控,免费拨测 20万次(价值200元)
简介:


 

 

前言: 

  nRF51可以支持基于2.4G的互相通信、与NRF24LE1的通信、与NRF24LU1的通信、与NRF24L01的通信。

 

一、nRF51822基于2.4G和nRF51822通信

  其中nRF51互相通信和之前用51操作nRF24L01很像,涉及到的只有几个核心的函数:

    • nrf_esb_init---初始化ESB
    • nrf_esb_enable---使能ESB
    • nrf_esb_add_packet_to_tx_fifo---将数据送入发送队列

  如果想知道发送是否成功等状态可以用:

    • void nrf_esb_tx_success(uint32_t tx_pipe, int32_t rssi)// If an ACK was received, we send another packet.
    • void nrf_esb_tx_failed(uint32_t tx_pipe)
    • void nrf_esb_rx_data_ready(uint32_t rx_pipe, int32_t rssi)
    • void nrf_esb_disabled(void)

  整个架构比较简单:

 

 

二、NRF51822和NRF24LE1/NRF24LU1/NRF24L01通信

  其中nrf51和其他三种类型的2.4G模块通信类似,比其自身通信稍微复杂,其配置流程如下:

  • bool nrf_esb_set_enabled_prx_pipes(uint32_t pipes)

用于使能接收通道,第0位对应通道1,依次类推,可同时使能多个通道

  • bool nrf_esb_set_crc_length (nrf_esb_crc_length_t length)

设置CRC校验,务必使发送方和接收方一致

  • bool nrf_esb_set_output_power(nrf_esb_output_power_t power)

设置发送功率,可选功率从4~-20,4为步数

  • bool nrf_esb_set_channel (uint32_t channel )

设置无线通讯频率。无线频率=(2400 + channel) MHz,0 <= channel <= 125。

  • bool nrf_esb_set_datarate(nrf_esb_datarate_t datarate)

设置通信速率:可选250Kbps,1M,2M

  • NRF51822 2.4G 通讯比较麻烦的就是地址设置,和NRF24LXX 系列的无线芯片的地址有所不同,NRF51822 2.4G 通讯地址是由两部分组成,配置地址时需要设置BASEn 和PREFIXn 寄存器,同时要指定BASEn 中地址长度。另外,NRF51822 的地址每个字节内的位必须首位对调才能和NRF24LXX 系列的一致。

NRF24LE1 端地址设置:

uint8_t TX_ADDRESS[5] = {0xE5,0xE4,0xE3,0xE2,0xE1}; //地址定义

hal_nrf_set_address(HAL_NRF_TX,TX_ADDRESS); //设置NRF24LE1 发射地址

 

NRF51822 端地址设置:

(void)nrf_esb_set_address_prefix_byte(0,0xE5);

(void)nrf_esb_set_base_address_0(0xE1E2E3E4);

(void)nrf_esb_set_base_address_length(NRF_ESB_BASE_ADDRESS_LENGTH_4B);

  • void nrf_esb_enable_dyn_ack (void )

使能动态数据长度

 


 ESBEnhanced ShockBurst,增强型突发模式。

Enhanced ShockBurstTM 模式比ShockBurst 模式多了一个确认数据传输的信号,保证数据传输的可靠性。EnhancedShockBurst 收发模式下,使用片内的先入先出堆栈区,数据低速从微控制器送入,但高速(1Mbps)发射,这样可以尽量节能与射频协议相关的所有高速信号处理都在片内进行,这种做法有三大好处:

  • 尽量节能。
  • 低的系统费用(低速微处理器也能进行高速射频发射)。
  • 数据在空中停留时间短,降低了碰撞几率,提供了抗干扰性能。

 

 

后记:nRF51822运行在传统2.4G模式下可以和之前的一些2.4G模块兼容,从而做出更个性化的通信网络。但更多的时候nRF51822用在BLE领域,比如bong手环、百度手环等一些设备上。但是其运行在BLE模式下需要搭载BLE协议栈,其复杂程度要比跑在经典2.4G模式下发杂得多。

 

 

@nRF51822基础实验系列:


[nRF51822] 7、基础实验代码解析大全(前十)

[nRF51822] 8、基础实验代码解析大全 · 实验11 - PPI

[nRF51822] 9、基础实验代码解析大全 · 实验12 - ADC

[nRF51822] 10、基础实验代码解析大全 · 实验15 - RTC

[nRF51822] 11、基础实验代码解析大全 · 实验16 - 内部FLASH读写

[nRF51822] 12、基础实验代码解析大全 · 实验19 - PWM



本文转自beautifulzzzz博客园博客,原文链接:http://www.cnblogs.com/zjutlitao/p/5760295.html,如需转载请自行联系原作者

相关文章
|
存储 传感器 定位技术
【NI Multisim 14.0原理图设计基础——元器件分类】
一、元器件分类 NI Multisim 14.0不仅提供了数量众多的元器件符号图形,而且还设计了元器件的模型,并分门类地存储在各个元器件库中。下面按照元器件库的命名不同详细介绍常用的元器件。 1.电源库 单击“元器件”工具栏中的“放置源” 按钮,Sources 库的“系列”栏包括以下几种,如图所示: 电源(POWER-SOURCES):包括常用的交直流电源、数字地、地线、星形或三角形连接的三相电源、VCC、VDD、VEE、VSS 电压源,其元器件”栏下内容如图所示: 电压信号源(SIGNAL-VOLTAG…):包括交流电压、时钟电压、脉冲电压、指数电压、FM、AM等多种形式的电压信号,其“元器
18567 3
【NI Multisim 14.0原理图设计基础——元器件分类】
|
10月前
|
存储 算法 数据挖掘
数据降维技术研究:Karhunen-Loève展开与快速傅里叶变换的理论基础及应用
本文探讨了Karhunen-Loève展开(KLE)和快速傅里叶变换(FFT)在数据降维与压缩中的应用。KLE通过最优正交基函数系统分解随机过程,适用于高维随机场的降维;FFT则将时域信号转换为频域表示,擅长处理周期性信号。两者结合可实现多尺度数据分析,在气象、工程等领域有广泛应用。
338 16
数据降维技术研究:Karhunen-Loève展开与快速傅里叶变换的理论基础及应用
|
搜索推荐 测试技术
对淘宝购物车进行测试用例设计
对淘宝购物车进行测试用例设计
895 0
|
编译器 调度
FreeRTOS任务的创建(动态方法和静态方法)
FreeRTOS任务的创建(动态方法和静态方法)
2554 0
|
监控 Java API
谷粒商城笔记+踩坑(25)——整合Sentinel实现流控和熔断降级
先简单介绍熔断、降级等核心概念,然后阐述SpringBoot整合Sentinel的实现方式,最后介绍Sentinel在本项目中的应用。
谷粒商城笔记+踩坑(25)——整合Sentinel实现流控和熔断降级
|
Java API 网络架构
Spring Cloud Gateway的高级配置与实践
Spring Cloud Gateway的高级配置与实践
|
存储 固态存储 数据可视化
|
监控 算法 Java
怎么用JDK自带工具进行JVM内存分析
JVM内存分析工具,如`jps`、`jcmd`、`jstat`、`jstack`和`jmap`,是诊断和优化Java应用的关键工具。`jps`列出Java进程,`jcmd`执行诊断任务,如查看JVM参数和线程堆栈,`jstat`监控内存和GC,`jstack`生成线程堆栈信息,而`jmap`则用于生成堆转储文件。这些工具帮助排查内存泄漏、优化内存配置、性能调优和异常分析。例如,`jmap -dump:file=heapdump.hprof &lt;PID&gt;`生成堆转储文件,之后可以用Eclipse Memory Analyzer (MAT)等工具分析。
603 0
|
存储 Linux 存储控制器
BootLoader这个玩意
BootLoader这个玩意
302 0
循环队列中的求队列长度公式怎么来的?【数学角度】
循环队列中的求队列长度公式怎么来的?【数学角度】
1371 0