浅谈nRF51822和NRF24LE1/NRF24LU1/NRF24L01经典2.4G模块无线通信配置与流程
转载:https://www.cnblogs.com/zjutlitao/p/5760295.html
前言:
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 )
使能动态数据长度
ESB:Enhanced ShockBurst,增强型突发模式。
Enhanced ShockBurstTM 模式比ShockBurst 模式多了一个确认数据传输的信号,保证数据传输的可靠性。EnhancedShockBurst 收发模式下,使用片内的先入先出堆栈区,数据低速从微控制器送入,但高速(1Mbps)发射,这样可以尽量节能与射频协议相关的所有高速信号处理都在片内进行,这种做法有三大好处:
- 尽量节能。
- 低的系统费用(低速微处理器也能进行高速射频发射)。
- 数据在空中停留时间短,降低了碰撞几率,提供了抗干扰性能。
后记:nRF51822运行在传统2.4G模式下可以和之前的一些2.4G模块兼容,从而做出更个性化的通信网络。但更多的时候nRF51822用在BLE领域,比如bong手环、百度手环等一些设备上。但是其运行在BLE模式下需要搭载BLE协议栈,其复杂程度要比跑在经典2.4G模式下发杂得多。
浅谈nRF51822和NRF24LE1/NRF24LU1/NRF24L01经典2.4G模块无线通信配置与流程相关推荐
- [nRF51822] 13、浅谈nRF51822和NRF24LE1/NRF24LU1/NRF24L01经典2.4G模块无线通信配置与流程...
前言: nRF51可以支持基于2.4G的互相通信.与NRF24LE1的通信.与NRF24LU1的通信.与NRF24L01的通信. 一.nRF51822基于2.4G和nRF51822通信 其中nRF5 ...
- 浅谈4.X内核和5.X内核LSM模块初始化差异
最近在帮同事解一个LSM子模块的问题的时候,发现4.X内核和5.X内核的初始化流程存在较大的差异.借此问题,我也研究了一下两个大版本内核的LSM模块,最终有所获.先是在网上查找资料,然而目前网上很少有 ...
- JDK与JRE的关系和path的作用浅谈
JDK与JRE的关系和path的作用浅谈 摘要:JDK与JRE的关系以及path的配置对于初学者是要明白的问题,那么具体的JDK与JRE的关系是什么呢?那么本文讲给你简单介绍. 标签:JDK与JRE关 ...
- 浅谈Spring定时任务
浅谈Spring定时任务 三种定时任务基于原理 多定时任务并发配置 动态定时任务 定时任务Demo 三种定时任务基于原理 SpringBoot配置定时任务主要有Spring Schedule.JDK自 ...
- 【瑞数5】浅谈某普期刊JS逆向的环境检测点
[瑞数5]浅谈某普期刊JS逆向的环境检测点 前言 JS加载流程 第一个JS 第二个JS 第三个JS AST简单解混淆 环境检测 前奏 异步执行JS流程 高潮 运行结果 总结 鸣谢 前言 这几天把某期刊 ...
- Exchange server 2010系列教程之五 浅谈Outlook 2010新功能
Exchange server 2010系列教程之五 浅谈Outlook 2010新功能 前面我们讲了outlook的配置事项,也说了exchange server 2010的正确卸载方法.下面简要 ...
- 【经典论文精读】浅谈神经网络的万能近似定理(下)
上篇文章我们介绍了神经网络强大的根本:万能近似定理的一些证明思路,今天这篇文章我们继续来聊一聊它,并给出若干定义,以及定理的简要证明和一些理解. 原文链接:https://doi.org/10.10 ...
- 有关《家》的经典歌曲_浅谈艺术歌曲《家》的演唱
龙源期刊网 http://www.qikan.com.cn 浅谈艺术歌曲<家>的演唱 作者:张赞 来源:<音乐时空> 2015 年第 10 期 摘要:<家>是我国著 ...
- 浅谈python后端面试(附一些经典项目源码)
python面试指南 金九银十即将到来,求职套路多,浅谈下这几年我的面试过程. 前言/背景 我于2017年毕业,至今工作五年,疫情三年,正是往事不重提,再提泪决堤. 从毕业校招到如今一份稳定的工作,虽 ...
最新文章
- python【力扣LeetCode算法题库】66-加一
- c++vector替换元素_从发展来看Vector与Hashtable的淘汰
- linux c程序中获取shell脚本输出
- 前端学习(2646):vue3.0初识
- jquery 查找表格里的input_jquery获取input表单值的代码
- AI算法工程师 | 01人工智能基础-快速入门
- 基于matlab的简单人脸识别程序代码
- 职场潜规则:非985院校的简历,一律扔进垃圾桶
- 1.6 Go语言适合做什么
- 混合云的那些事,如何做到让公有云和私有云实现1+12
- Ubuntu 安装字体
- 电脑是怎样执行编程语言的
- android陀螺仪方向,android – 如何使用罗盘读数和陀螺仪读数获取手机的方位角?...
- java测试模块耗时,性能测试技巧:java程序cpu耗时分析
- L2-3 清点代码库【STL】
- GPU与CPU比较,GPU为什么更适合深度学习?
- Tiled地图编辑器 Tiled Map Editor 的使用(二)动画效果
- 用 Electron 打造 Win/Mac 应用,从「代码」到可下载的「安装包」,可能比你想得麻烦一点...
- c语言中?:是什么意思?
- 第19天:WEB攻防-.NET项目DLL反编译