説明なし
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

nrf24l01_definitions.h 4.0KB

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