nRF24 / RF24

OSI Layer 2 driver for nRF24L01 on Arduino & Raspberry Pi/Linux Devices
https://nrf24.github.io/RF24
GNU General Public License v2.0
2.2k stars 1.01k forks source link

Transmissions slow after deep sleep #521

Closed Alkerion closed 3 years ago

Alkerion commented 4 years ago

Hello !

I'm using Lib 1.3.3 with a nRF24+ module from Sparkfun on an Adafruit ItsyBitsy 32u4 8Mht board.

After a deep sleep the RF transmission become slow.

Video: https://youtu.be/DRIaGC7TSno

Forum thread with full code : https://forum.arduino.cc/index.php?topic=633321.new

Regards

2bndy5 commented 3 years ago

Description of linked Youtube video and first post on the linked Arduino forums say

It's not 100% reproducible, most of the time the speed is OK on wake up.

Transmission time is not directly controlled by this library, especially since your code uses write() and not startWrite() (which might help your program perform faster but READ THE DOCS). The nRF24L01(+) Integrated Circuit (IC for short) employs a Nordic Semiconductors proprietary protocol name Enhanced Shockburst (ESB for short). This protocol operates semi-autonomously to send (and receive) data, and apply the many features that the nRF24L01 IC breakout boards boast. This library merely coordinates control of these features via the SPI bus, and it also manipulates the CE pin which physically tells the ESB protocol when to start transmitting (or receiving). The "slow" behavior is likely an issue with the SparkFun breakout board in the way they designed the power regulation circuit. Your reference to "deep sleep" is a function of the MCU (ItsyBitsy 32u4); it has nothing to do with the nRF24L01's "power down" mode (controlled by powerUp() and powerDown() functions). I'm closing this issue since it seems you found a workaround in your final post on the linked Arduino forums, and this issue is essentially not a problem that can be addressed in the RF24 library.