原地址https://devzone.nordicsemi.com/b/blog/posts/intro-to-shockburstenhanced-shockburst

Wireless PC accessories (the ones that shipped with a dongle in the box) overwhelmingly adopted 2.4GHz radios because these radios offered an attractive trade-off between power consumption, throughput, and range. Nordic Semiconductor's devices were very successful during that time and, as a result, many devices still use the legacy ShockBurst (SB) packet format that Nordic introduced sometime around 2004. This isn't too surprising because SB is just as useful today as it was then; low-level access to the radio offers performance and flexibility that protocols such as Bluetooth Low Energy (BLE) cannot match. Not only is SB compatible with the same radio as BLE, contemporary Nordic devices allow the firmware to use BLE and SB concurrently.

Here is an overview of the radio:

  • GFSK modulation
  • 2.4GHz ISM band
  • 250kbps, 1Mbps, or 2Mbps baud rates
  • Up to 20dBm transmit power (typically not more than 4dBm)

Comprehensive SB documentation can be found in the data sheets of legacy Nordic devices.

The Packet

The SB packet format looks like this:

Although this format uses the radio very efficiently, it doesn't provide any extra features. For example, both sides of the link need to be configured to use the same payload length before transmitting anything because the payload length is not specified anywhere in the packet.

Enhance!

Changes were soon made to the original SB packet format in order to allow the hardware to do some additional processing. The new format is referred to as Enhanced ShockBurst (ESB):

In addition to making the CRC field mandatory, a Packet Control Field (PCF) was introduced:

The new payload length field, packet ID, and an acknowledge bit mean that payload lengths can be dynamic, packets can be acknowledged by the receiver, and unacknowledged packets can be automatically retried. If an acknowledgement is required then it can contain a payload in order facilitate bidirectional communication. Note that acknowledgement payloads must be preloaded; it is not possible for a transmitter to send a command and receive a direct response to that command in the acknowledgement. Instead, the response would have to be preloaded so it could be sent as the acknowledgement for the next command that is received. Preloaded acknowledgement payloads are required in order to guarantee that acknowledgement timing is deterministic.

Timing

The amount of on-air time that is required to send a particular packet is primarily determined by the packet's length and the baud rate that is being used. Additionally, radios have a ramp-up time that is required whenever the radio switches mode (e.g. from disabled mode to RX mode). The nominal ramp-up time for SB is 130us. This means that when an ESB transmitter requires an acknowledgment it must wait 130us after the packet is sent; during this time it switches to RX mode and the receiving device switches to TX mode. Presumably, both devices would then spend another 130us switching back to their original modes after the acknowledgement is sent.

Going Forward

Prior to the nRF51 series the ESB acknowledgement process was performed in hardware without CPU intervention. However, the increased flexibility that was required for BLE also forced the hardware to give up this optimization. The micro-esb library has been created by the Nordic support team as an example of emulating SB and ESB on the nRF51. [Update: Formal, source-level ESB support was added to the nRF5x SDK. See the nrf_esb module for more details.]

On the other hand, the improved radios on the nRF51 and nRF52 devices allow payload lengths to be expanded. On the nRF51, the maximum SB payload length is 254 bytes and the maximum ESB payload length is 252 bytes (2 bytes are lost to the PCF). The nRF52 is capable of 255-byte payloads in both SB and ESB modes. Throughput is greatly improved when larger payloads are used; As an example, 1.28mbps throughput is possible on the nRF51 when using five address bytes, two bytes of CRC, 2mbps baud rate, 252-byte payloads, and empty acknowledgement payloads.

Furthermore, the radio that is used by the nRF52 series requires only 40us to switch between RX and TX modes. This means that two nRF52 devices can transmit a packet, transmit the acknowledgement, and then switch back to their original modes 180us faster than previous devices could.

Lastly, the nRF52 no longer supports the 250kbps baud rate. Unfortunately, this means that the nRF52 will not be able to communicate with some existing devices.

Conclusion

The SB and ESB protocols allow low-level access to the radio and should be considered any time maximum throughput or flexibility is required between two Nordic devices. Although SB packets themselves are simple, it's possible to build arbitrarily-sophisticated protocols on top of them. And, via the Multiprotocol Timeslot API, many devices are now leveraging the strengths of SB networks at the same time that they use BLE to communicate with smart devices.

【转】Intro to ShockBurst/Enhanced ShockBurst的更多相关文章

  1. nRF24L01P的ShockBurst与Enhance ShockBurst

    nRF24L01P的数据手册里讲到了两个两种发射模式ShockBurst Mode和Enhanced ShockBurst Mode.但是呢,手册里着重的一直在讲Enhanced ShockBurst ...

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

    前言:  nRF51可以支持基于2.4G的互相通信.与NRF24LE1的通信.与NRF24LU1的通信.与NRF24L01的通信. 一.nRF51822基于2.4G和nRF51822通信 其中nRF5 ...

  3. GnuRadio Hacking②:使用SDR嗅探北欧芯片无线键盘鼠标数据包

    0×00 前言 上半年的时候安全公司Bastille Networks(巴士底狱)安全研究员发现大多数无线鼠标和接收器之间的通信信号是不加密的,黑客可对一两百米范围内存在漏洞的无线键鼠进行嗅探甚至劫持 ...

  4. 如何为编程爱好者设计一款好玩的智能硬件(十)——无线2.4G通信模块研究·一篇说完

    六.温湿度传感器DHT11驱动封装(下):如何为编程爱好者设计一款好玩的智能硬件(六)——初尝试·把温湿度给收集了(下)! 七.点阵字符型液晶显示模块LCD1602驱动封装(上):如何为编程爱好者设计 ...

  5. 四轴飞行器1.7 NRF24L01P无线通讯和改进型环形缓冲

    原创文章,欢迎转载,转载请注明出处 这次花了10多天了才再次写blog,一是中秋优点小活动,二是这次完成了不少东西.. 终于接近完成了,这次完成了NRF的通讯,并且用了改进的环形缓冲和简单的通讯协议规 ...

  6. 24L01/SI24R1调试笔记

    1.SPI MSB优先,8Bit寄存器地址与内容: 2.寄存器结构与之前使用的LT8900不同,分为R.W寄存器与特殊功能寄存器: 3.特别注意:在TX.RX.RT中断或者轮询后置1,必须写1清零与清 ...

  7. nrf2401 - 最廉价的2.4G无线通信方案

    所有的使用Arduino 的朋友大多都会知道大名鼎鼎的XBee 这个土豪级的ZigBee 的通信模块.我们是做产品开发的,对于XBee这个产品可谓是又爱又恨,不得不承认他确实是一个好货,从做工到功能都 ...

  8. NRF24L01注意点

    nrf24L01被设置为接收模式后,可通过6个不同的数据通道(data pipe)接收数据. 每个数据通道都有一个唯一的地址但是各数据通道的频率是相同的.这意味着可以有6个被配置成发送状态的nRF24 ...

  9. nRF24L01无线模块笔记

    nRF24L01模块 官网链接: https://www.nordicsemi.com/Products/nRF24-series 常见的无线收发模块, 工作在2.4GHz频段, 适合近距离遥控和数据 ...

随机推荐

  1. VBA Dumper v0.1.4.2, 提取office文档中的VBA代码,监查宏病毒恢复代码(演示版

    http://club.excelhome.net/thread-970051-1-1.html VBA Dumper 0.1.4.2更新,填补国内同类程序空白 此程序为演示版,可以在无office的 ...

  2. windows cmd下ssh连接免密码问题解决

    windows 7 cmd下 ssh -T username@serverip 免密码连接成功 有的同学在windows下开发,并且在windows下安装了git for windows,这些资源已经 ...

  3. PyQt训练BP模型时,显示waiting动图(多线程)

    1.实现效果 2.相关代码 实现BP训练模型的线程类 class WorkThread(QtCore.QThread): finish_trigger = QtCore.pyqtSignal() # ...

  4. 开启Unity3D之旅

    圣典知识目录http://game.ceeger.com/Manual/ NGUI http://www.taikr.com/course/34泰课课程 http://tieba.baidu.com/ ...

  5. tarroni music

    1,tarroni http://www.tarronishoes.it/audio.php 2, <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1 ...

  6. 模拟远程SSH执行命令的编解码说明

    模拟一个SSH“远程”执行命令并获取命令结果的一个程序: 1.在C/S架构下,当客户端与服务器建立连接(这里以TCP为例)后,二者可以不断的进行数据交互.SSH远程可以实现的效果是客户端输入命令可以在 ...

  7. 去中心化存储的QoS是什么?

    我的前面一篇文章讲到如何做去中化存储,文其中提到了QoS (Quality of Service),那么QoS是什么?为什么QoS那么重要?下面将详细描述. 什么是QoS? 提到QoS,就要先了解Qo ...

  8. Jmeter(二十三)Jmeter-Question之“批量造数据”

    日常工作中,无论是在做功能测试.接口测试还是性能测试,经常会有这么一个场景出现,“那个谁谁谁,帮我加几条订单”,“那个某某某,给购物车增添几个产品”,“在数据库加几百条数据”...等等,通常少数量,或 ...

  9. mysql命令行批量插入100条数据命令

    先介绍一个关键字的使用: delimiter 定好结束符为"$$",(定义的时候需要加上一个空格) 然后最后又定义为";", MYSQL的默认结束符为" ...

  10. [VS工具]如何让#region...#endregion在ashx文件页面上折叠

    工具--->选项-->文本编辑器|文件扩展名, 添加后缀名为ashx的文件即可