설명 없음
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

nrf24l01_definitions.h 4.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. #ifndef NRF24L01_DEFINITIONS_H
  2. #define NRF24L01_DEFINITIONS_H
  3. #define MAX_ADDRESS_LENGTH 5
  4. /* NRF24L01 register mnemonic definitions */
  5. #define CONFIG_ADDRESS 0x0
  6. #define EN_AA_ADDRESS 0x1
  7. #define EN_RXADDR_ADDRESS 0x2
  8. #define SETUP_AW_ADDRESS 0x3
  9. #define SETUP_RETR_ADDRESS 0x4
  10. #define RF_CH_ADDRESS 0x5
  11. #define RF_SETUP_ADDRESS 0x6
  12. #define STATUS_ADDRESS 0x7
  13. #define OBSERVE_TX_ADDRESS 0x8
  14. #define CD_ADDRESS 0x9
  15. #define RX_ADDR_P0_ADDRESS 0xA
  16. #define RX_ADDR_P1_ADDRESS 0xB
  17. #define RX_ADDR_P2_ADDRESS 0xC
  18. #define RX_ADDR_P3_ADDRESS 0xD
  19. #define RX_ADDR_P4_ADDRESS 0xE
  20. #define RX_ADDR_P5_ADDRESS 0xF
  21. #define TX_ADDR_ADDRESS 0x10
  22. #define RX_PW_P0_ADDRESS 0x11
  23. #define RX_PW_P1_ADDRESS 0x12
  24. #define RX_PW_P2_ADDRESS 0x13
  25. #define RX_PW_P3_ADDRESS 0x14
  26. #define RX_PW_P4_ADDRESS 0x15
  27. #define RX_PW_P5_ADDRESS 0x16
  28. #define FIFO_STATUS_ADDRESS 0x17
  29. #define DYNPD_ADDRESS 0x1C
  30. #define FEATURE_ADDRESS 0x1D
  31. /* Commands */
  32. #define FLUSH_TX_COMMAND 0xE1
  33. #define FLUSH_RX_COMMAND 0xE2
  34. #define W_TX_PAYLOAD_COMMAND 0xA0
  35. #define R_RX_PAYLOAD_COMMAND 0x61
  36. /* Register bits definitions */
  37. /* CONFIG*/
  38. typedef union
  39. {
  40. uint8_t byte;
  41. struct
  42. {
  43. uint8_t PRIM_RX : 1;
  44. uint8_t PWR_UP : 1;
  45. uint8_t CRCO : 1;
  46. uint8_t EN_CRC : 1;
  47. uint8_t MASK_MAX_RT : 1;
  48. uint8_t MASK_TX_DS : 1;
  49. uint8_t MASK_RX_DR : 1;
  50. uint8_t RESERVED : 1;
  51. }bits;
  52. }CONFIG_REGISTER;
  53. /*EN_AA */
  54. typedef union
  55. {
  56. uint8_t byte;
  57. struct
  58. {
  59. uint8_t ENAA_P0 : 1;
  60. uint8_t ENAA_P1 : 1;
  61. uint8_t ENAA_P2 : 1;
  62. uint8_t ENAA_P3 : 1;
  63. uint8_t ENAA_P4 : 1;
  64. uint8_t ENAA_P5 : 1;
  65. uint8_t RESERVED : 2;
  66. }bits;
  67. }EN_AA_REGISTER;
  68. /* EN_RXADDR */
  69. typedef union
  70. {
  71. uint8_t byte;
  72. struct
  73. {
  74. uint8_t ERX_P0 : 1;
  75. uint8_t ERX_P1 : 1;
  76. uint8_t ERX_P2 : 1;
  77. uint8_t ERX_P3 : 1;
  78. uint8_t ERX_P4 : 1;
  79. uint8_t ERX_P5 : 1;
  80. uint8_t RESERVED : 2;
  81. }bits;
  82. }EN_RXADDR_REGISTER;
  83. /* SETUP_AW */
  84. typedef union
  85. {
  86. uint8_t byte;
  87. struct
  88. {
  89. uint8_t AW : 2;
  90. uint8_t RESERVED : 6;
  91. }bits;
  92. }SETUP_AW_REGISTER;
  93. #define ADDRESS_WIDTH_3_BYTES 0x1
  94. #define ADDRESS_WIDTH_4_BYTES 0x2
  95. #define ADDRESS_WIDTH_5_BYTES 0x3
  96. /* SETUP_RETR */
  97. typedef union
  98. {
  99. uint8_t byte;
  100. struct
  101. {
  102. uint8_t ARC : 4;
  103. uint8_t ARD : 4;
  104. }bits;
  105. }SETUP_RETR_REGISTER;
  106. /* RF_CH */
  107. typedef union
  108. {
  109. uint8_t byte;
  110. struct
  111. {
  112. uint8_t RF_CH : 7;
  113. uint8_t RESERVED : 1;
  114. }bits;
  115. }RF_CH_REGISTER;
  116. /* RF_SETUP */
  117. typedef union
  118. {
  119. uint8_t byte;
  120. struct
  121. {
  122. uint8_t LNA_HCURR : 1;
  123. uint8_t RF_PWR : 2;
  124. uint8_t RF_DR : 1;
  125. uint8_t PLL_LOCK : 1;
  126. uint8_t RESERVED : 3;
  127. }bits;
  128. }RF_SETUP_REGISTER;
  129. #define RF_DATA_RATE_1MBPS 0x0
  130. #define RF_DATA_RATE_2MBPS 0x1
  131. #define RF_OUTPUT_POWER_MINUS_18DBM
  132. #define RF_OUTPUT_POWER_MINUS_12DBM
  133. #define RF_OUTPUT_POWER_MINUS_16DBM
  134. #define RF_OUTPUT_POWER_0DBM
  135. // TODO: change order of all bit fields!!!
  136. /* STATUS */
  137. typedef union
  138. {
  139. uint8_t byte;
  140. struct
  141. {
  142. uint8_t TX_FULL : 1;
  143. uint8_t RX_P_NO : 3;
  144. uint8_t MAX_RT : 1;
  145. uint8_t TX_DS : 1;
  146. uint8_t RX_DR : 1;
  147. uint8_t RESERVED : 1;
  148. }bits;
  149. }STATUS_REGISTER;
  150. #define RX_FIFO_EMPTY 0x7
  151. /* OBSERVE_TX */
  152. typedef union
  153. {
  154. uint8_t byte;
  155. struct
  156. {
  157. uint8_t ARC_CNT : 4;
  158. uint8_t PLOS_CNT : 4;
  159. }bits;
  160. }OBSERVE_TX_REGISTER;
  161. /* CD */
  162. typedef union
  163. {
  164. uint8_t byte;
  165. struct
  166. {
  167. uint8_t CD : 1;
  168. uint8_t RESERVED : 7;
  169. }bits;
  170. }CD_REGISTER;
  171. /* RX_PW_Pn */
  172. typedef union
  173. {
  174. uint8_t byte;
  175. struct
  176. {
  177. uint8_t RESERVED : 2;
  178. uint8_t RX_PW_Pn : 6;
  179. }bits;
  180. }RX_PW_Pn_REGISTER;
  181. /* FIFO_STATUS */
  182. typedef union
  183. {
  184. uint8_t byte;
  185. struct
  186. {
  187. uint8_t RX_EMPTY : 1;
  188. uint8_t RX_FULL : 1;
  189. uint8_t RESERVED1 : 2;
  190. uint8_t TX_EMPTY : 1;
  191. uint8_t TX_FULL : 1;
  192. uint8_t TX_REUSE : 1;
  193. uint8_t RESERVED0 : 1;
  194. }bits;
  195. }FIFO_STATUS_REGISTER;
  196. /* DYNPD */
  197. typedef union
  198. {
  199. uint8_t byte;
  200. struct
  201. {
  202. uint8_t DPL_P0 : 1;
  203. uint8_t DPL_P1 : 1;
  204. uint8_t DPL_P2 : 1;
  205. uint8_t DPL_P3 : 1;
  206. uint8_t DPL_P4 : 1;
  207. uint8_t DPL_P5 : 1;
  208. uint8_t RESERVED : 2;
  209. }bits;
  210. }DYNPD_REGISTER;
  211. /* FEATURE */
  212. typedef union
  213. {
  214. uint8_t byte;
  215. struct
  216. {
  217. uint8_t EN_DYN_ACK : 1;
  218. uint8_t EN_ACK_PAY : 1;
  219. uint8_t EN_DPL : 1;
  220. uint8_t RESERVED : 5;
  221. }bits;
  222. }FEATURE_REGISTER;
  223. #endif