原地址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. VMWare VSphere6.0的实验笔记

    在现有的一个vsphere6.0虚拟平台上环境下搭建一套VSphere环境平台. 任务1: 1.建立1个win2008主机,192.168.12.10.16Gram,40G硬盘1独立存储+150G硬盘 ...

  2. CSDN也有我的博客啦

    我的CSDN:https://blog.csdn.net/qq_40875849

  3. 非ECS阿里云安装插件,给阿里云云监控平台

    linux的init学习: https://blog.csdn.net/kunkliu/article/details/80942279 阿里云官方文档: https://help.aliyun.co ...

  4. SqlServer全表遍历

    DECLARE @temp TABLE ( , ) , ) ) DECLARE @tempId INT , ) INSERT INTO @temp VALUES ( 'a' ) INSERT INTO ...

  5. [UE4]在C++中使用中文变量和中文注释

    一.如果直接在C++中使用中文变量名称,在UE4中编译是会出错的,方法的中文注释也会在UE4中变成乱码 二.只要将h文件和cpp文件用记事本另存为utf-8编码就可以了. 也可以配置VS环境: 如何解 ...

  6. [UE4]制作按钮小技巧

    Normal和Pressed一样的图片和大小,Hovered也是一样的图片但是大小比Normal稍微大一点,这样点击按钮的时候就会产生按钮被按下去的感觉.

  7. Redis整合Spring实现分布式锁

    spring把专门的数据操作独立封装在spring-data系列中,spring-data-redis是对Redis的封装 <dependencies> <!-- 添加spring- ...

  8. DevExpress GridView删除行

    int[] rows = gridView1.GetSelectedRows(); ) { if (DialogHelper.YesNo(this, "确认删除该记录?", &qu ...

  9. html代码段

    添加icon<link rel="shortcut icon" href="img/100du.ico"/>

  10. Anatomy of a Program in Memory.剖析程序的内存布局

    原文标题:Anatomy of a Program in Memory 原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外高手的精彩文章翻译 ...