nRF24L01.h


1
/*
2
    Copyright (c) 2007 Stefan Engelke <mbox@stefanengelke.de>
3
*/
4
5
/* Memory Map */
6
#define CONFIG      0x00
7
#define EN_AA       0x01
8
#define EN_RXADDR   0x02
9
#define SETUP_AW    0x03
10
#define SETUP_RETR  0x04
11
#define RF_CH       0x05
12
#define RF_SETUP    0x06
13
#define STATUS      0x07
14
#define OBSERVE_TX  0x08
15
#define CD          0x09
16
#define RX_ADDR_P0  0x0A
17
#define RX_ADDR_P1  0x0B
18
#define RX_ADDR_P2  0x0C
19
#define RX_ADDR_P3  0x0D
20
#define RX_ADDR_P4  0x0E
21
#define RX_ADDR_P5  0x0F
22
#define TX_ADDR     0x10
23
#define RX_PW_P0    0x11
24
#define RX_PW_P1    0x12
25
#define RX_PW_P2    0x13
26
#define RX_PW_P3    0x14
27
#define RX_PW_P4    0x15
28
#define RX_PW_P5    0x16
29
#define FIFO_STATUS 0x17
30
#define DYNPD       0x1C
31
32
/* Bit Mnemonics */
33
34
/* configuratio nregister */
35
#define MASK_RX_DR  6
36
#define MASK_TX_DS  5
37
#define MASK_MAX_RT 4
38
#define EN_CRC      3
39
#define CRCO        2
40
#define PWR_UP      1
41
#define PRIM_RX     0
42
43
/* enable auto acknowledgment */
44
#define ENAA_P5     5
45
#define ENAA_P4     4
46
#define ENAA_P3     3
47
#define ENAA_P2     2
48
#define ENAA_P1     1
49
#define ENAA_P0     0
50
51
/* enable rx addresses */
52
#define ERX_P5      5
53
#define ERX_P4      4
54
#define ERX_P3      3
55
#define ERX_P2      2
56
#define ERX_P1      1
57
#define ERX_P0      0
58
59
/* setup of address width */
60
#define AW          0 /* 2 bits */
61
62
/* setup of auto re-transmission */
63
#define ARD         4 /* 4 bits */
64
#define ARC         0 /* 4 bits */
65
66
/* RF setup register */
67
#define PLL_LOCK    4
68
#define RF_DR       3
69
#define RF_PWR      1 /* 2 bits */   
70
71
/* general status register */
72
#define RX_DR       6
73
#define TX_DS       5
74
#define MAX_RT      4
75
#define RX_P_NO     1 /* 3 bits */
76
#define TX_FULL     0
77
78
/* transmit observe register */
79
#define PLOS_CNT    4 /* 4 bits */
80
#define ARC_CNT     0 /* 4 bits */
81
82
/* fifo status */
83
#define TX_REUSE    6
84
#define FIFO_FULL   5
85
#define TX_EMPTY    4
86
#define RX_FULL     1
87
#define RX_EMPTY    0
88
89
/* dynamic length */
90
#define DPL_P0      0
91
#define DPL_P1      1
92
#define DPL_P2      2
93
#define DPL_P3      3
94
#define DPL_P4      4
95
#define DPL_P5      5
96
97
/* Instruction Mnemonics */
98
#define R_REGISTER    0x00 /* last 4 bits will indicate reg. address */
99
#define W_REGISTER    0x20 /* last 4 bits will indicate reg. address */
100
#define REGISTER_MASK 0x1F
101
#define R_RX_PAYLOAD  0x61
102
#define W_TX_PAYLOAD  0xA0
103
#define FLUSH_TX      0xE1
104
#define FLUSH_RX      0xE2
105
#define REUSE_TX_PL   0xE3
106
#define ACTIVATE      0x50 
107
#define R_RX_PL_WID   0x60
108
#define NOP           0xFF