{"id":16148912,"url":"https://github.com/erriez/errieznrf24l01debug","last_synced_at":"2026-04-28T11:06:07.897Z","repository":{"id":85067608,"uuid":"113760466","full_name":"Erriez/ErriezNRF24L01Debug","owner":"Erriez","description":"Arduino library to print Nordic nRF24L01(+) registers and bitfields for debugging","archived":false,"fork":false,"pushed_at":"2020-08-28T12:51:40.000Z","size":37,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-13T03:27:30.892Z","etag":null,"topics":["arduino","clion","cmakelists","debug","development","diagnostics","dump","library","nrf24l01","register-bitfields","registers","serial","tools","uno"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Erriez.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-12-10T15:20:55.000Z","updated_at":"2020-08-28T12:51:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"4f260f1a-8d29-4faf-84d8-549a19da8fff","html_url":"https://github.com/Erriez/ErriezNRF24L01Debug","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Erriez%2FErriezNRF24L01Debug","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Erriez%2FErriezNRF24L01Debug/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Erriez%2FErriezNRF24L01Debug/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Erriez%2FErriezNRF24L01Debug/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Erriez","download_url":"https://codeload.github.com/Erriez/ErriezNRF24L01Debug/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247554314,"owners_count":20957590,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","clion","cmakelists","debug","development","diagnostics","dump","library","nrf24l01","register-bitfields","registers","serial","tools","uno"],"created_at":"2024-10-10T00:35:14.452Z","updated_at":"2026-04-28T11:06:07.862Z","avatar_url":"https://github.com/Erriez.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Arduino nRF24L01 debug library.\n\nThis library prints nRF24L01(+) registers to the first serial port which is \nuseful for debug purposes.\n\nThis library is compatible with the Nordic nRF24L01 and nRF24L01+ SPI \ntransceivers.\n\n## Installation\n1. Start the Arduino IDE.\n2. Download the latest version from:  \n   https://github.com/Erriez/ErriezNRF24L01Debug/archive/master.zip\n3. Click Sketch | Include Library | Add .ZIP Library... and select this ZIP.\n5. Run the example.\n\n## Library dependencies\n* git clone https://github.com/Erriez/ErriezNRF24L01Debug\n* git clone https://github.com/Erriez/ErriezNRF24L01Iface\n* git clone https://github.com/Erriez/ErriezPrintf\n\n### Example\n\nExamples | nRF24L01(+) Debug | [DumpRegisters](https://github.com/Erriez/ErriezNRF24L01Debug/blob/master/examples/DumpRegisters/DumpRegisters.ino)\n\n```c++\n#include \u003cArduino.h\u003e\n#include \u003cnRF24L01Debug.h\u003e\n#include \u003cprintf.h\u003e\n  \n// SPI chip-select pin\n#define CSN_PIN     8\n  \n// SPI clock\n#define SPI_CLOCK   1000000UL\n  \n// Initialize nRF24L01 diagnostics library\nnRF24L01Debug nRF24Debug(SPI_CLOCK, CSN_PIN);\n  \nvoid setup() \n{\n  // Initialize serial port\n  Serial.begin(115200);\n  Serial.println(F(\"nRF24L01(+) dump registers example\"));\n  \n  // Initialize printf\n  printfBegin();\n  \n  // Print all registers without bitfields after RF24 initialization\n  nRF24Debug.printAllRegisters();\n  \n  // Print all nRF24L01 registers with bitfields after RF24 configuration\n  nRF24Debug.printAllRegisters(true);\n}\n  \nvoid loop() \n{\n  // Print one single register without bitfields\n  nRF24Debug.printRegister(REG_STATUS, false);\n  \n  delay(5000);\n}\n```\n\n### Serial output\n```\nnRF24L01 registers:\n    0x00: 0x0E (CONFIG)\n    0x01: 0x3F (EN_AA)\n    0x02: 0x03 (EN_RXADDR)\n    0x03: 0x03 (SETUP_AW)\n    0x04: 0x5F (SETUP_RETR)\n    0x05: 0x4C (RF_CH)\n    0x06: 0x07 (RF_SETUP)\n    0x07: 0x0E (NRF_STATUS)\n    0x08: 0x00 (OBSERVE_TX)\n    0x09: 0x00 (CD/RPD)\n    0x0A: E7 E7 E7 E7 E7 (RX_ADDR_P0)\n    0x0B: C2 C2 C2 C2 C2 (RX_ADDR_P1)\n    0x0C: 0xC3 (RX_ADDR_P2)\n    0x0D: 0xC4 (RX_ADDR_P3)\n    0x0E: 0xC5 (RX_ADDR_P4)\n    0x0F: 0xC6 (RX_ADDR_P5)\n    0x10: E7 E7 E7 E7 E7 (TX_ADDR)\n    0x11: 0x00 (RX_PW_P0)\n    0x12: 0x00 (RX_PW_P1)\n    0x13: 0x00 (RX_PW_P2)\n    0x14: 0x00 (RX_PW_P3)\n    0x15: 0x00 (RX_PW_P4)\n    0x16: 0x00 (RX_PW_P5)\n    0x17: 0x11 (FIFO_STATUS)\n    0x1C: 0x00 (DYNPD)\n    0x1D: 0x00 (FEATURE)\n  \nnRF24L01 registers:\n    0x00: 0x0E (CONFIG)\n        MASK_RX_DR[6]  = 0\n        MASK_TX_DS[5]  = 0\n        MASK_MAX_RT[4] = 0\n        EN_CRC[3]      = 1\n        CRCO[2]        = 1\n        PWR_UP[1]      = 1\n        PRIM_RX[0]     = 0\n    0x01: 0x3F (EN_AA)\n        ENAA_P5[5]     = 1\n        ENAA_P4[4]     = 1\n        ENAA_P3[3]     = 1\n        ENAA_P2[2]     = 1\n        ENAA_P1[1]     = 1\n        ENAA_P0[0]     = 1\n    0x02: 0x03 (EN_RXADDR)\n        ERX_P5[5]      = 0\n        ERX_P4[4]      = 0\n        ERX_P3[3]      = 0\n        ERX_P2[2]      = 0\n        ERX_P1[1]      = 1\n        ERX_P0[0]      = 1\n    0x03: 0x03 (SETUP_AW)\n        AW[1:0]        = 3 (5 bytes)\n    0x04: 0x5F (SETUP_RETR)\n        ARD[7:4]       = 5 (1500 us)\n        ARC[3:0]       = 15 (retries)\n    0x05: 0x4C (RF_CH)\n        RF_CH[6:0]     = 76\n    0x06: 0x07 (RF_SETUP)\n        CONT_WAVE[7]   = 0\n        RF_DR_LOW[5]   = 0\n        PLL_LOCK[4]    = 0\n        RF_DR_HIGH[3]  = 0\n        RF_PWR[2:1]    = 3 (0dBm=MAX)\n    0x07: 0x0E (NRF_STATUS)\n        RX_DR[6]       = 0\n        TX_DS[5]       = 0\n        MAX_RT[4]      = 0\n        RX_P_NO[3:1]   = 7\n        TX_FULL[0]     = 0\n    0x08: 0x00 (OBSERVE_TX)\n        PLOS_CNT[7:4]  = 0\n        ARC_CNT[3:0]   = 0\n    0x09: 0x00 (CD/RPD)\n        RPD[0]         = 0\n    0x0A: E7 E7 E7 E7 E7 (RX_ADDR_P0)\n    0x0B: C2 C2 C2 C2 C2 (RX_ADDR_P1)\n    0x0C: 0xC3 (RX_ADDR_P2)\n    0x0D: 0xC4 (RX_ADDR_P3)\n    0x0E: 0xC5 (RX_ADDR_P4)\n    0x0F: 0xC6 (RX_ADDR_P5)\n    0x10: E7 E7 E7 E7 E7 (TX_ADDR)\n    0x11: 0x00 (RX_PW_P0)\n        RX_PW_P0[5:0] = 0\n    0x12: 0x00 (RX_PW_P1)\n        RX_PW_P1[5:0] = 0\n    0x13: 0x00 (RX_PW_P2)\n        RX_PW_P2[5:0] = 0\n    0x14: 0x00 (RX_PW_P3)\n        RX_PW_P3[5:0] = 0\n    0x15: 0x00 (RX_PW_P4)\n        RX_PW_P4[5:0] = 0\n    0x16: 0x00 (RX_PW_P5)\n        RX_PW_P5[5:0] = 0\n    0x17: 0x11 (FIFO_STATUS)\n        TX_REUSE[6]    = 0\n        TX_FULL[5]     = 0\n        TX_EMPTY[4]    = 1\n        RX_FULL[1]     = 0\n        RX_EMPTY[0]    = 1\n    0x1C: 0x00 (DYNPD)\n        DPL_P5[5]      = 0\n        DPL_P4[4]      = 0\n        DPL_P3[3]      = 0\n        DPL_P2[2]      = 0\n        DPL_P1[1]      = 0\n        DPL_P0[0]      = 0\n    0x1D: 0x00 (FEATURE)\n        EN_DPL[2]      = 0\n        EN_ACK_PAY[1]  = 0\n        EN_DYN_ACK[0]  = 0\n```\n\n## Usage\n1. Add #include ```\u003cnRF24L01Debug.h\u003e``` to your application.\n2. Add #include ```\u003cprintf.h\u003e```\n3. Add ```printfBegin()``` call to ```setup()```.\n3. Initialize the nRF24L01 debug library with SPI clock speed and ```CSN``` pin.\n\n**Print a single register:**\n```c++\n  printRegister(uint8_t registerAddress, bool printBitfields);\n```\n\n**Read a register:**\n```c++\n  uint8_t readRegister(uint8_t reg);\n```\n\n**Read an address register:**\n```c++\n  uint8_t readRegister(uint8_t reg, uint8_t* buf, uint8_t len);\n```\n\n**Print all registers with/without register bitfields in your application:**\n```c++\n  printAllRegisters(bool printBitfields);\n```\n\nA macro ```USE_BITFIELDS``` is enabled by default to print register bitfields. Disable\nthis macro in ```nRF24L01Debug.cpp``` to save flash and RAM.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferriez%2Ferrieznrf24l01debug","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferriez%2Ferrieznrf24l01debug","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferriez%2Ferrieznrf24l01debug/lists"}