nRF24L01_API.h 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #ifndef _NRF24L01_API_H_
  2. #define _NRF24L01_API_H_
  3. #include "Common.h"
  4. #include "Delay.h"
  5. /********** NRF24L01寄存器操作命令 ***********/
  6. #define READ_REG 0x00 //读配置寄存器,低5位为寄存器地址
  7. #define WRITE_REG 0x20 //写配置寄存器,低5位为寄存器地址
  8. #define RD_RX_PLOAD 0x61 //读RX有效数据,1~32字节
  9. #define WR_TX_PLOAD 0xA0 //写TX有效数据,1~32字节
  10. #define FLUSH_TX 0xE1 //清除TX FIFO寄存器.发射模式下用
  11. #define FLUSH_RX 0xE2 //清除RX FIFO寄存器.接收模式下用
  12. #define REUSE_TX_PL 0xE3 //重新使用上一包数据,CE为高,数据包被不断发送.
  13. #define NOP 0xFF //空操作,可以用来读状态寄存器
  14. /********** NRF24L01寄存器地址 *************/
  15. #define CONFIG 0x00 //配置寄存器地址
  16. #define EN_AA 0x01 //使能自动应答功能
  17. #define EN_RXADDR 0x02 //接收地址允许
  18. #define SETUP_AW 0x03 //设置地址宽度(所有数据通道)
  19. #define SETUP_RETR 0x04 //建立自动重发
  20. #define RF_CH 0x05 //RF通道
  21. #define RF_SETUP 0x06 //RF寄存器
  22. #define STATUS 0x07 //状态寄存器
  23. #define OBSERVE_TX 0x08 // 发送检测寄存器
  24. #define CD 0x09 // 载波检测寄存器
  25. #define RX_ADDR_P0 0x0A // 数据通道0接收地址
  26. #define RX_ADDR_P1 0x0B // 数据通道1接收地址
  27. #define RX_ADDR_P2 0x0C // 数据通道2接收地址
  28. #define RX_ADDR_P3 0x0D // 数据通道3接收地址
  29. #define RX_ADDR_P4 0x0E // 数据通道4接收地址
  30. #define RX_ADDR_P5 0x0F // 数据通道5接收地址
  31. #define TX_ADDR 0x10 // 发送地址寄存器
  32. #define RX_PW_P0 0x11 // 接收数据通道0有效数据宽度(1~32字节)
  33. #define RX_PW_P1 0x12 // 接收数据通道1有效数据宽度(1~32字节)
  34. #define RX_PW_P2 0x13 // 接收数据通道2有效数据宽度(1~32字节)
  35. #define RX_PW_P3 0x14 // 接收数据通道3有效数据宽度(1~32字节)
  36. #define RX_PW_P4 0x15 // 接收数据通道4有效数据宽度(1~32字节)
  37. #define RX_PW_P5 0x16 // 接收数据通道5有效数据宽度(1~32字节)
  38. #define FIFO_STATUS 0x17 // FIFO状态寄存器
  39. /*————————————————————————————————————————————————————————————————————*/
  40. /****** STATUS寄存器bit位定义 *******/
  41. #define MAX_TX 0x10 //达到最大发送次数中断
  42. #define TX_OK 0x20 //TX发送完成中断
  43. #define RX_OK 0x40 //接收到数据中断
  44. /*——————————————————————————————————————————————————*/
  45. /********* 24L01发送接收数据宽度定义 ***********/
  46. #define TX_ADR_WIDTH 5 //5字节地址宽度
  47. #define RX_ADR_WIDTH 5 //5字节地址宽度
  48. #define TX_PLOAD_WIDTH 32 //32字节有效数据宽度
  49. #define RX_PLOAD_WIDTH 32 //32字节有效数据宽度
  50. #if 0
  51. sbit NRF_CE = P1 ^ 6;
  52. sbit NRF_CSN = P1 ^ 7;
  53. sbit NRF_SCK = P1 ^ 2;
  54. sbit NRF_MOSI = P1 ^ 5;
  55. sbit NRF_MISO = P1 ^ 0;
  56. sbit NRF_IRQ = P1 ^ 1;
  57. #else
  58. #define NRF_CE P11
  59. #define NRF_CSN P15
  60. #define NRF_SCK P10
  61. #define NRF_MOSI P00
  62. #define NRF_MISO P01
  63. #define NRF_IRQ P03
  64. #endif
  65. typedef unsigned char uchar;
  66. extern uchar NRF24L01_Check ( void );
  67. extern void NRF24L01_RT_Init ( uchar PLOAD_WIDTH, uchar *TX_ADR, uchar TX_ADDR_WIDTH, uchar *RX_ADR, uchar RX_ADDR_WIDTH, uchar RATE );
  68. extern uchar NRF24L01_RxPacket ( uchar *rxbuf );
  69. extern uchar NRF24L01_TxPacket ( uchar *txbuf );
  70. extern uchar SEND_BUF ( uchar *buf );
  71. #endif