RF.H 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. //===================================================================================//
  2. // * @file RF.H
  3. // * @author droplin
  4. // * @version V1.1
  5. // * @date 2020/12/16
  6. // * @brief Main program body
  7. // * @modify user: droplin
  8. // * @modify date: 2019/12/19
  9. //===================================================================================//
  10. #ifndef _RF_H_
  11. #define _RF_H_
  12. #include "board.h"
  13. #include "stdbool.h"
  14. #include "stdint.h"
  15. ////////////////////////////////////////////////////////////////////////////////
  16. // 以下为声明部分,不建议修改 //
  17. ////////////////////////////////////////////////////////////////////////////////
  18. /******************** 指令寄存器 ********************/
  19. #define R_REGISTER 0x00 //SPI read RF data
  20. #define W_REGISTER 0x20 //SPI write RF data
  21. #define R_RX_PAYLOAD 0x61 //Read RX Payload
  22. #define W_TX_PAYLOAD 0xA0 //Write TX Payload
  23. #define FLUSH_TX 0xE1 //Flush RX FIFO
  24. #define FLUSH_RX 0xE2 //Flush TX FIFO
  25. #define REUSE_TX_PL 0xE3 //Reuse TX Payload
  26. #define ACTIVATE 0x50 //ACTIVATE
  27. #define DEACTIVATE 0x50 //DEACTIVATE
  28. #define R_RX_PL_WID 0x60 //Read width of RX data
  29. #define W_ACK_PAYLOAD 0xA8 //Data with ACK
  30. #define W_TX_PAYLOAD_NOACK 0xB0 //TX Payload no ACK Request
  31. #define CE_FSPI_ON 0xFD // CE HIGH
  32. #define CE_FSPI_OFF 0xFC // CE LOW
  33. #define RST_FSPI 0x53 // RESET
  34. #define NOP_N 0xFF
  35. /****************** 控制寄存器 *******************/
  36. #define CONFIG 0x00
  37. #define EN_AA 0x01
  38. #define EN_RXADDR 0x02
  39. #define SETUP_AW 0x03
  40. #define SETUP_RETR 0x04
  41. #define RF_CH 0x05
  42. #define RF_SETUP 0x06
  43. #define STATUS 0x07
  44. #define OBSERVE_TX 0x08
  45. #define RPD 0x09
  46. #define RX_ADDR_P0 0x0A
  47. #define RX_ADDR_P1 0x0B
  48. #define RX_ADDR_P2 0x0C
  49. #define RX_ADDR_P3 0x0D
  50. #define RX_ADDR_P4 0x0E
  51. #define RX_ADDR_P5 0x0F
  52. #define TX_ADDR 0x10
  53. #define RX_PW_P0 0x11
  54. #define RX_PW_P1 0x12
  55. #define RX_PW_P2 0x13
  56. #define RX_PW_P3 0x14
  57. #define RX_PW_P4 0x15
  58. #define RX_PW_P5 0x16
  59. #define FIFO_STATUS 0x17
  60. #define DEM_CAL 0x19
  61. #define RF_CAL2 0x1A
  62. #define DEM_CAL2 0x1B
  63. #define DYNPD 0x1C
  64. #define FEATURE 0x1D
  65. #define RF_CAL 0x1E
  66. #define BB_CAL 0x1F
  67. /****************** 功率档位 *******************/
  68. #define RF13dBm 0x3f // 13dBm
  69. #define RF10dBm 0X17 // 10dBm
  70. #define RF8dBm 0x15 // 8dbm
  71. #define RF7dBm 0x07 // 7dbm
  72. #define RF5dBm 0x2c // 5dbm
  73. #define RF4dBm 0x06 // 4dbm
  74. #define RF2dBm 0x05 // 2dbm
  75. #define RF0dBm 0X0B // 0dBm
  76. #define RF_3dBm 0x04 // -3dBm
  77. #define RF_6dBm 0x0A // -6dBm
  78. #define RF_10dBm 0x02 // -10dBm
  79. #define RF_18dBm 0x01 // -18dBm
  80. #define RF_30dBm 0x00 // -30dBm
  81. /****************** 传输类型 *******************/
  82. #define TRANS_ENHANCE_MODE 1 //增强模式
  83. #define TRANS_BURST_MODE 2 //普通模式
  84. /**************** 状态标志 ********************/
  85. #define RX_DR_FLAG 0X40 // 接收中断标志位
  86. #define TX_DS_FLAG 0X20 // 发送完成中断标志位
  87. #define RX_TX_FLAG 0X60 // 发送接收完成中断标志位,ack_payload 模式下使用
  88. #define MAX_RT_FLAG 0X10 // 发送重传超时中断标志位
  89. /**************** 传输速率 ********************/
  90. #define DR_1M 0X00 //通信速率 1Mbps
  91. #define DR_2M 0X40 //通信速率 2Mbps
  92. #define DR_250K 0XC0 //通信速率 2Mbps
  93. /**************** CE 控制模式 ********************/
  94. #define CE_MODE_HARD 1 // CE由硬件IO口控制
  95. #define CE_MODE_SOFT 2 // CE由软件命令控制
  96. /**************** SPI控制模式 ********************/
  97. #define SPI_3_LINE_MODE 1 // 3线SPI SOP8封装使用
  98. #define SPI_4_LINE_MODE 2 // 4线SPI SQFN20封装/合封芯片使用
  99. ///////////////////////////////////////////////////////////////////////////////
  100. // 根据用户应用,以下部分可能需要修改 //
  101. ///////////////////////////////////////////////////////////////////////////////
  102. /****************** 用户自定义参数 **********************/
  103. #define DEFAULT_CHANNEL 0 //初始化时的频率: 2478 MHz (实际频点为2400+DEFAULT_CHANNEL)
  104. #define PAYLOAD_WIDTH 15 //Payload宽度: 8bytes
  105. #define TRANSMIT_TYPE TRANS_BURST_MODE // TRANS_BURST_MODE TRANS_ENHANCE_MODE
  106. #define DATA_RATE DR_1M //通信速率2Mbps DR_250K DR_2M DR_1M
  107. #define RF_POWER (RF13dBm |DATA_RATE) //发射功率8dBm
  108. #define CE_MODE CE_MODE_SOFT //IO控制CE信号
  109. #define SPI_MODE SPI_3_LINE_MODE //4线SPI
  110. #if(TRANSMIT_TYPE == TRANS_ENHANCE_MODE)
  111. #define EN_DYNPLOAD 0
  112. #define EN_ACK_PAYLOAD 1
  113. #define ACK_PAYLOAD_WIDTH PAYLOAD_WIDTH
  114. #endif
  115. /******************* Function declare *******************/
  116. void RF_Init(void);
  117. void RF_Reset(void);
  118. void RF_TxMode(void);
  119. void RF_RxMode(void);
  120. uint8_t RF_GetStatus(void);
  121. void RF_ClearStatus(void);
  122. void RF_ClearFIFO(void);
  123. void RF_SetChannel( uint8_t Channel);
  124. void RF_TxData( uint8_t *ucPayload, uint8_t length);
  125. uint8_t RF_DumpRxData( uint8_t *ucPayload, uint8_t length);
  126. void RF_Carrier( uint8_t ucChannel_Set);
  127. void RF_TX_CheckResult(uint8_t *ucAckPayload, uint8_t length);
  128. void RF_ReadBuf(uint8_t reg, unsigned char *pBuf, uint8_t length);
  129. #endif
  130. /****************************************end of file********************************************/