1 /*-------------------------------------------------------------------------
2 cc2510fx.h - Register Declarations for Chipcon CC2510Fx/CC2511Fx
3 (Based on CC2510Fx/CC2511Fx PRELIMINARY Data Sheet (Rev. 1.2) SWRS055A)
5 Copyright (C) 2006, Jesus Calvino-Fraga / jesusc at ece.ubc.ca
7 This library is free software; you can redistribute it and/or modify it
8 under the terms of the GNU General Public License as published by the
9 Free Software Foundation; either version 2, or (at your option) any
12 This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this library; see the file COPYING. If not, write to the
19 Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
22 As a special exception, if you link this library with other files,
23 some of which are compiled with SDCC, to produce an executable,
24 this library does not by itself cause the resulting executable to
25 be covered by the GNU General Public License. This exception does
26 not however invalidate any other reasons why the executable file
27 might be covered by the GNU General Public License.
28 -------------------------------------------------------------------------*/
30 #ifndef REG_CC2510FX_H
31 #define REG_CC2510FX_H
36 #define RFTXRX_VECTOR 0 // RF TX done / RX ready
37 #define ADC_VECTOR 1 // ADC end of conversion
38 #define URX0_VECTOR 2 // USART0 RX complete
39 #define URX1_VECTOR 3 // USART1 RX complete (I2S RX complete)
40 #define ENC_VECTOR 4 // AES encryption/decryption complete
41 #define ST_VECTOR 5 // Sleep Timer compare
42 #define P2INT_VECTOR 6 // Port 2 inputs (Also used for USB on CC2511Fx)
43 #define UTX0_VECTOR 7 // USART0 TX complete
44 #define DMA_VECTOR 8 // DMA transfer complete
45 #define T1_VECTOR 9 // Timer 1 (16-bit) capture/Compare/overflow
46 #define T2_VECTOR 10 // Timer 2 (MAC Timer) overflow
47 #define T3_VECTOR 11 // Timer 3 (8-bit) capture/compare/overflow
48 #define T4_VECTOR 12 // Timer 4 (8-bit) capture/compare/overflow
49 #define P0INT_VECTOR 13 // Port 0 inputs (Note: USB Resume from suspend interrupt on P0_7 on CC2511Fx )
50 #define UTX1_VECTOR 14 // USART1 TX complete (I2S TX complete)
51 #define P1INT_VECTOR 15 // Port 1 inputs
52 #define RF_VECTOR 16 // RF general interrupts
53 #define WDT_VECTOR 17 // Watchdog overflow in timer mode
55 //Shared Interrupt Vectors (I2S and USB)
56 #define I2SRX_VECTOR 3 //I2S RX complete
57 #define I2STX_VECTOR 14 //I2S TX complete
58 #define USB_VECTOR 6 //USB Interrupt pending ( CC2511Fx )
60 // SFR Registers and BITs
62 SFR(P0
, 0x80); // Port 0
63 SBIT(P0_0
, 0x80, 0); // Port 0 bit 0
64 SBIT(P0_1
, 0x80, 1); // Port 0 bit 1
65 SBIT(P0_2
, 0x80, 2); // Port 0 bit 2
66 SBIT(P0_3
, 0x80, 3); // Port 0 bit 3
67 SBIT(P0_4
, 0x80, 4); // Port 0 bit 4
68 SBIT(P0_5
, 0x80, 5); // Port 0 bit 5
69 SBIT(P0_6
, 0x80, 6); // Port 0 bit 6
70 SBIT(P0_7
, 0x80, 7); // Port 0 bit 7
71 SFR(SP
, 0x81); // Stack Pointer
72 SFR(DPL0
, 0x82); // Data Pointer 0 Low Byte
73 SFR(DPH0
, 0x83); // Data Pointer 0 High Byte
74 SFR(DPL1
, 0x84); // Data Pointer 1 Low Byte
75 SFR(DPH1
, 0x85); // Data Pointer 1 High Byte
76 SFR(U0CSR
, 0x86); // USART 0 Control and Status
77 SFR(PCON
, 0x87); // Power Mode Control
78 SFR(TCON
, 0x88); // Interrupt Flag
79 SBIT(IT0
, 0x88, 0); // reserved (must always be set to 1)
80 SBIT(RFTXRXIF
, 0x88, 1); // RF TX/RX FIFO Interrupt Flag
81 SBIT(IT1
, 0x88, 2); // reserved (must always be set to 1)
82 SBIT(URX0IF
, 0x88, 3); // USART0 RX Interrupt Flag
83 SBIT(ADCIF
, 0x88, 5); // ADC Interrupt Flag
84 SBIT(URX1IF
, 0x88, 7); // USART1 RX Interrupt Flag
85 SBIT(I2SRXIF
, 0x88, 7); // I2S RX interrupt flag (same loc as URX1IF)
86 SFR(P0IFG
, 0x89); // Port 0 Interrupt Status Flag
87 SFR(P1IFG
, 0x8A); // Port 1 Interrupt Status Flag
88 SFR(P2IFG
, 0x8B); // Port 2 Interrupt Status Flag
89 SFR(PICTL
, 0x8C); // Port Interrupt Control
90 SFR(P1IEN
, 0x8D); // Port 1 Interrupt Mask
91 SFR(P0INP
, 0x8F); // Port 0 Input Mode
92 SFR(P1
, 0x90); // Port 1
93 SBIT(P1_0
, 0x90, 0); // Port 1 bit 0
94 SBIT(P1_1
, 0x90, 1); // Port 1 bit 1
95 SBIT(P1_2
, 0x90, 2); // Port 1 bit 2
96 SBIT(P1_3
, 0x90, 3); // Port 1 bit 3
97 SBIT(P1_4
, 0x90, 4); // Port 1 bit 4
98 SBIT(P1_5
, 0x90, 5); // Port 1 bit 5
99 SBIT(P1_6
, 0x90, 6); // Port 1 bit 6
100 SBIT(P1_7
, 0x90, 7); // Port 1 bit 7
101 SFR(RFIM
, 0x91); // RF Interrupt Mask
102 SFR(DPS
, 0x92); // Data Pointer Select
103 SFR(MPAGE
, 0x93); // Memory Page Select
104 SFR(_XPAGE
, 0x93); // Memory Page Select under the name SDCC needs it
105 SFR(ENDIAN
, 0x95); // USB Endianess Control (CC2511Fx)
106 SFR(S0CON
, 0x98); // Interrupt Flag 2
107 SBIT(ENCIF_0
, 0x98, 0); // AES Interrupt Flag 0
108 SBIT(ENCIF_1
, 0x98, 1); // AES Interrupt Flag 1
109 SFR(IEN2
, 0x9A); // Interrupt Enable 2 Register
110 SFR(S1CON
, 0x9B); // Interrupt Flag 3
111 SFR(T2CT
, 0x9C); // Timer 2 Count
112 SFR(T2PR
, 0x9D); // Timer 2 Prescaler
113 SFR(T2CTL
, 0x9E); // Timer 2 Control
114 SFR(P2
, 0xA0); // Port 2
115 SBIT(P2_0
, 0xA0, 0); // Port 2 bit 0
116 SBIT(P2_1
, 0xA0, 1); // Port 2 bit 1
117 SBIT(P2_2
, 0xA0, 2); // Port 2 bit 2
118 SBIT(P2_3
, 0xA0, 3); // Port 2 bit 3
119 SBIT(P2_4
, 0xA0, 4); // Port 2 bit 4
120 SBIT(P2_5
, 0xA0, 5); // Port 2 bit 5
121 SBIT(P2_6
, 0xA0, 6); // Port 2 bit 6
122 SBIT(P2_7
, 0xA0, 7); // Port 2 bit 7
123 SFR(WORIRQ
, 0xA1); // Sleep Timer Interrupt Control
124 SFR(WORCTL
, 0xA2); // Sleep Timer Control
125 SFR(WORCTRL
, 0xA2); // Sleep Timer Control (typo in datasheet?)
126 SFR(WOREVT0
, 0xA3); // Sleep Timer Event0 Timeout Low
127 SFR(WOREVT1
, 0xA4); // Sleep Timer Event0 Timeout High
128 SFR(WORTIME0
, 0xA5); // Sleep Timer Low Byte
129 SFR(WORTIME1
, 0xA6); // Sleep Timer High Byte
130 SFR(IEN0
, 0xA8); // Interrupt Enable 0 Register
131 SBIT(RFTXRXIE
, 0xA8, 0); // RF TX/RX done interrupt enable
132 SBIT(ADCIE
, 0xA8, 1); // ADC Interrupt Enable
133 SBIT(URX0IE
, 0xA8, 2); // USART0 RX Interrupt Enable
134 SBIT(URX1IE
, 0xA8, 3); // USART1 RX Interrupt Enable
135 SBIT(I2SRXIE
, 0xA8, 3); // I2S RX interrupt enable (Same loc as URX1IE)
136 SBIT(ENCIE
, 0xA8, 4); // AES Encryption/Decryption Interrupt Enable
137 SBIT(STIE
, 0xA8, 5); // Sleep Timer Interrupt Enable
138 SBIT(EA
, 0xA8, 7); // Global Interrupt Enable
139 SFR(IP0
, 0xA9); // Interrupt Priority 0
140 SFR(FWT
, 0xAB); // Flash Write Timing
141 SFR(FADDRL
, 0xAC); // Flash Address Low Byte
142 SFR(FADDRH
, 0xAD); // Flash Address High Byte
143 SFR(FCTL
, 0xAE); // Flash Control
144 SFR(FWDATA
, 0xAF); // Flash Write Data
145 SFR(ENCDI
, 0xB1); // Encryption Input Data
146 SFR(ENCDO
, 0xB2); // Encryption Output Data
147 SFR(ENCCS
, 0xB3); // Encryption Control and Status
148 SFR(ADCCON1
, 0xB4); // ADC Control 1
149 SFR(ADCCON2
, 0xB5); // ADC Control 2
150 SFR(ADCCON3
, 0xB6); // ADC Control 3
151 SFR(IEN1
, 0xB8); // Interrupt Enable 1 Register
152 SBIT(DMAIE
, 0xB8, 0); // DMA Transfer Interrupt Enable
153 SBIT(T1IE
, 0xB8, 1); // Timer 1 Interrupt Enable
154 SBIT(T2IE
, 0xB8, 2); // Timer 2 Interrupt Enable
155 SBIT(T3IE
, 0xB8, 3); // Timer 3 Interrupt Enable
156 SBIT(T4IE
, 0xB8, 4); // Timer 4 Interrupt Enable
157 SBIT(P0IE
, 0xB8, 5); // Port 0 Interrupt Enable
158 SFR(IP1
, 0xB9); // Interrupt Priority 1
159 SFR(ADCL
, 0xBA); // ADC Data Low
160 SFR(ADCH
, 0xBB); // ADC Data High
161 SFR(RNDL
, 0xBC); // Random Number Generator Data Low Byte
162 SFR(RNDH
, 0xBD); // Random Number Generator Data High Byte
163 SFR(SLEEP
, 0xBE); // Sleep Mode Control
164 SFR(IRCON
, 0xC0); // Interrupt Flag 4
165 SBIT(DMAIF
, 0xC0, 0); // DMA Complete Interrupt Flag
166 SBIT(T1IF
, 0xC0, 1); // Timer 1 Interrupt Flag
167 SBIT(T2IF
, 0xC0, 2); // Timer 2 Interrupt Flag
168 SBIT(T3IF
, 0xC0, 3); // Timer 3 Interrupt Flag
169 SBIT(T4IF
, 0xC0, 4); // Timer 4 Interrupt Flag
170 SBIT(P0IF
, 0xC0, 5); // Port 0 Interrupt Flag
171 SBIT(STIF
, 0xC0, 7); // Sleep Timer Interrupt Flag
172 SFR(U0DBUF
, 0xC1); // USART 0 Receive/Transmit Data Buffer
173 SFR(U0BAUD
, 0xC2); // USART 0 Baud Rate Control
174 SFR(U0UCR
, 0xC4); // USART 0 UART Control
175 SFR(U0GCR
, 0xC5); // USART 0 Generic Control
176 SFR(CLKCON
, 0xC6); // Clock Control
177 SFR(MEMCTR
, 0xC7); // Memory Arbiter Control
178 SFR(WDCTL
, 0xC9); // Watchdog Timer Control
179 SFR(T3CNT
, 0xCA); // Timer 3 Counter
180 SFR(T3CTL
, 0xCB); // Timer 3 Control
181 SFR(T3CCTL0
, 0xCC); // Timer 3 Channel 0 Capture/Compare Control
182 SFR(T3CC0
, 0xCD); // Timer 3 Channel 0 Capture/Compare Value
183 SFR(T3CCTL1
, 0xCE); // Timer 3 Channel 1 Capture/Compare Control
184 SFR(T3CC1
, 0xCF); // Timer 3 Channel 1 Capture/Compare Value
185 SFR(PSW
, 0xD0); // Program Status Word
186 SBIT(P
, 0xD0, 0); // Parity Flag
187 SBIT(F1
, 0xD0, 1); // User-Defined Flag
188 SBIT(OV
, 0xD0, 2); // Overflow Flag
189 SBIT(RS0
, 0xD0, 3); // Register Bank Select 0
190 SBIT(RS1
, 0xD0, 4); // Register Bank Select 1
191 SBIT(F0
, 0xD0, 5); // User-Defined Flag
192 SBIT(AC
, 0xD0, 6); // Auxiliary Carry Flag
193 SBIT(CY
, 0xD0, 7); // Carry Flag
194 SFR(DMAIRQ
, 0xD1); // DMA Interrupt Flag
195 SFR(DMA1CFGL
, 0xD2); // DMA Channel 1-4 Configuration Address Low Byte
196 SFR(DMA1CFGH
, 0xD3); // DMA Channel 1-4 Configuration Address High Byte
197 SFR(DMA0CFGL
, 0xD4); // DMA Channel 0 Configuration Address Low Byte
198 SFR(DMA0CFGH
, 0xD5); // DMA Channel 0 Configuration Address High Byte
199 SFR(DMAARM
, 0xD6); // DMA Channel Arm
200 SFR(DMAREQ
, 0xD7); // DMA Channel Start Request and Status
201 SFR(TIMIF
, 0xD8); // Timers 1/3/4 Interrupt Mask/Flag
202 SBIT(T3OVFIF
, 0xD8, 0); // Timer 3 overflow interrupt flag 0:no pending 1:pending
203 SBIT(T3CH0IF
, 0xD8, 1); // Timer 3 channel 0 interrupt flag 0:no pending 1:pending
204 SBIT(T3CH1IF
, 0xD8, 2); // Timer 3 channel 1 interrupt flag 0:no pending 1:pending
205 SBIT(T4OVFIF
, 0xD8, 3); // Timer 4 overflow interrupt flag 0:no pending 1:pending
206 SBIT(T4CH0IF
, 0xD8, 4); // Timer 4 channel 0 interrupt flag 0:no pending 1:pending
207 SBIT(T4CH1IF
, 0xD8, 5); // Timer 4 channel 1 interrupt flag 0:no pending 1:pending
208 SBIT(OVFIM
, 0xD8, 6); // Timer 1 overflow interrupt mask
209 SFR(RFD
, 0xD9); // RF Data
210 SFR(T1CC0L
, 0xDA); // Timer 1 Channel 0 Capture/Compare Value Low
211 SFR(T1CC0H
, 0xDB); // Timer 1 Channel 0 Capture/Compare Value High
212 SFR(T1CC1L
, 0xDC); // Timer 1 Channel 1 Capture/Compare Value Low
213 SFR(T1CC1H
, 0xDD); // Timer 1 Channel 1 Capture/Compare Value High
214 SFR(T1CC2L
, 0xDE); // Timer 1 Channel 2 Capture/Compare Value Low
215 SFR(T1CC2H
, 0xDF); // Timer 1 Channel 2 Capture/Compare Value High
216 SFR(ACC
, 0xE0); // Accumulator
217 SBIT(ACC_0
, 0xE0, 0); // Accumulator bit 0
218 SBIT(ACC_1
, 0xE0, 1); // Accumulator bit 1
219 SBIT(ACC_2
, 0xE0, 2); // Accumulator bit 2
220 SBIT(ACC_3
, 0xE0, 3); // Accumulator bit 3
221 SBIT(ACC_4
, 0xE0, 4); // Accumulator bit 4
222 SBIT(ACC_5
, 0xE0, 5); // Accumulator bit 5
223 SBIT(ACC_6
, 0xE0, 6); // Accumulator bit 6
224 SBIT(ACC_7
, 0xE0, 7); // Accumulator bit 7
225 SFR(RFST
, 0xE1); // RF Strobe Commands
226 SFR(T1CNTL
, 0xE2); // Timer 1 Counter Low
227 SFR(T1CNTH
, 0xE3); // Timer 1 Counter High
228 SFR(T1CTL
, 0xE4); // Timer 1 Control and Status
229 SFR(T1CCTL0
, 0xE5); // Timer 1 Channel 0 Capture/Compare Control
230 SFR(T1CCTL1
, 0xE6); // Timer 1 Channel 1 Capture/Compare Control
231 SFR(T1CCTL2
, 0xE7); // Timer 1 Channel 2 Capture/Compare Control
232 SFR(IRCON2
, 0xE8); // Interrupt Flag 5
233 SBIT(P2IF
, 0xE8, 0); // Port 2 Interrupt Flag
234 SBIT(USBIF
, 0xE8, 0); // USB Interrupt Flag (same bit as P2IF)
235 SBIT(UTX0IF
, 0xE8, 1); // USART0 TX Interrupt Flag
236 SBIT(UTX1IF
, 0xE8, 2); // USART1 TX Interrupt Flag
237 SBIT(I2STXIF
, 0xE8, 2); // I2S TX Interrupt Flag (same bit as UTX1FIF)
238 SBIT(P1IF
, 0xE8, 3); // Port 1 Interrupt Flag
239 SBIT(WDTIF
, 0xE8, 4); // Watchdog Timer Interrupt Flag
240 SFR(RFIF
, 0xE9); // RF Interrupt Flags
241 SFR(T4CNT
, 0xEA); // Timer 4 Counter
242 SFR(T4CTL
, 0xEB); // Timer 4 Control
243 SFR(T4CCTL0
, 0xEC); // Timer 4 Channel 0 Capture/Compare Control
244 SFR(T4CC0
, 0xED); // Timer 4 Channel 0 Capture/Compare Value
245 SFR(T4CCTL1
, 0xEE); // Timer 4 Channel 1 Capture/Compare Control
246 SFR(T4CC1
, 0xEF); // Timer 4 Channel 1 Capture/Compare Value
247 SFR(B
, 0xF0); // B Register
248 SBIT(B_0
, 0xF0, 0); // Register B bit 0
249 SBIT(B_1
, 0xF0, 1); // Register B bit 1
250 SBIT(B_2
, 0xF0, 2); // Register B bit 2
251 SBIT(B_3
, 0xF0, 3); // Register B bit 3
252 SBIT(B_4
, 0xF0, 4); // Register B bit 4
253 SBIT(B_5
, 0xF0, 5); // Register B bit 5
254 SBIT(B_6
, 0xF0, 6); // Register B bit 6
255 SBIT(B_7
, 0xF0, 7); // Register B bit 7
256 SFR(PERCFG
, 0xF1); // Peripheral Control
257 SFR(ADCCFG
, 0xF2); // ADC Input Configuration
258 SFR(P0SEL
, 0xF3); // Port 0 Function Select
259 SFR(P1SEL
, 0xF4); // Port 1 Function Select
260 SFR(P2SEL
, 0xF5); // Port 2 Function Select
261 SFR(P1INP
, 0xF6); // Port 1 Input Mode
262 SFR(P2INP
, 0xF7); // Port 2 Input Mode
263 SFR(U1CSR
, 0xF8); // USART 1 Control and Status
264 SBIT(ACTIVE
, 0xF8, 0); // USART transmit/receive active status 0:idle 1:busy
265 SBIT(TX_BYTE
, 0xF8, 1); // Transmit byte status 0:Byte not transmitted 1:Last byte transmitted
266 SBIT(RX_BYTE
, 0xF8, 2); // Receive byte status 0:No byte received 1:Received byte ready
267 SBIT(ERR
, 0xF8, 3); // UART parity error status 0:No error 1:parity error
268 SBIT(FE
, 0xF8, 4); // UART framing error status 0:No error 1:incorrect stop bit level
269 SBIT(SLAVE
, 0xF8, 5); // SPI master or slave mode select 0:master 1:slave
270 SBIT(RE
, 0xF8, 6); // UART receiver enable 0:disabled 1:enabled
271 SBIT(MODE
, 0xF8, 7); // USART mode select 0:SPI 1:UART
272 SFR(U1DBUF
, 0xF9); // USART 1 Receive/Transmit Data Buffer
273 SFR(U1BAUD
, 0xFA); // USART 1 Baud Rate Control
274 SFR(U1UCR
, 0xFB); // USART 1 UART Control
275 SFR(U1GCR
, 0xFC); // USART 1 Generic Control
276 SFR(P0DIR
, 0xFD); // Port 0 Direction
277 SFR(P1DIR
, 0xFE); // Port 1 Direction
278 SFR(P2DIR
, 0xFF); // Port 2 Direction
280 // From table 68: xdata RF registers
282 SFRX(SYNC1
, 0xDF00); // Sync word, high byte
283 SFRX(SYNC0
, 0xDF01); // Sync word, low byte
284 SFRX(PKTLEN
, 0xDF02); // Packet length
285 SFRX(PKTCTRL1
, 0xDF03); // Packet automation control
286 SFRX(PKTCTRL0
, 0xDF04); // Packet automation control
287 SFRX(ADDR
, 0xDF05); // Device address
288 SFRX(CHANNR
, 0xDF06); // Channel number
289 SFRX(FSCTRL1
, 0xDF07); // Frequency synthesizer control
290 SFRX(FSCTRL0
, 0xDF08); // Frequency synthesizer control
291 SFRX(FREQ2
, 0xDF09); // Frequency control word, high byte
292 SFRX(FREQ1
, 0xDF0A); // Frequency control word, middle byte
293 SFRX(FREQ0
, 0xDF0B); // Frequency control word, low byte
294 SFRX(MDMCFG4
, 0xDF0C); // Modem configuration
295 SFRX(MDMCFG3
, 0xDF0D); // Modem configuration
296 SFRX(MDMCFG2
, 0xDF0E); // Modem configuration
297 SFRX(MDMCFG1
, 0xDF0F); // Modem configuration
298 SFRX(MDMCFG0
, 0xDF10); // Modem configuration
299 SFRX(DEVIATN
, 0xDF11); // Modem deviation setting
300 SFRX(MCSM2
, 0xDF12); // Main Radio Control State Machine configuration
301 SFRX(MCSM1
, 0xDF13); // Main Radio Control State Machine configuration
302 SFRX(MCSM0
, 0xDF14); // Main Radio Control State Machine configuration
303 SFRX(FOCCFG
, 0xDF15); // Frequency Offset Compensation configuration
304 SFRX(BSCFG
, 0xDF16); // Bit Synchronization configuration
305 SFRX(AGCCTRL2
, 0xDF17); // AGC control
306 SFRX(AGCCTRL1
, 0xDF18); // AGC control
307 SFRX(AGCCTRL0
, 0xDF19); // AGC control
308 SFRX(FREND1
, 0xDF1A); // Front end RX configuration
309 SFRX(FREND0
, 0xDF1B); // Front end TX configuration
310 SFRX(FSCAL3
, 0xDF1C); // Frequency synthesizer calibration
311 SFRX(FSCAL2
, 0xDF1D); // Frequency synthesizer calibration
312 SFRX(FSCAL1
, 0xDF1E); // Frequency synthesizer calibration
313 SFRX(FSCAL0
, 0xDF1F); // Frequency synthesizer calibration
314 SFRX(PA_TABLE7
, 0xDF27); // PA output power setting
315 SFRX(PA_TABLE6
, 0xDF28); // PA output power setting
316 SFRX(PA_TABLE5
, 0xDF29); // PA output power setting
317 SFRX(PA_TABLE4
, 0xDF2A); // PA output power setting
318 SFRX(PA_TABLE3
, 0xDF2B); // PA output power setting
319 SFRX(PA_TABLE2
, 0xDF2C); // PA output power setting
320 SFRX(PA_TABLE1
, 0xDF2D); // PA output power setting
321 SFRX(PA_TABLE0
, 0xDF2E); // PA output power setting
322 SFRX(IOCFG2
, 0xDF2F); // GDO2 output pin configuration
323 SFRX(IOCFG1
, 0xDF30); // GDO1 output pin configuration
324 SFRX(IOCFG0
, 0xDF31); // GDO0 output pin configuration
325 SFRX(PARTNUM
, 0xDF36); // Chip Identifier
326 SFRX(VERSION
, 0xDF37); // Configuration
327 SFRX(FREQEST
, 0xDF38); // Frequency Offset Estimate
328 SFRX(LQI
, 0xDF39); // Link Quality Indicator
329 SFRX(RSSI
, 0xDF3A); // Received Signal Strength Indication
330 SFRX(MARCSTATE
, 0xDF3B); // Main Radio Control State
331 SFRX(PKTSTATUS
, 0xDF3C); // Packet status
332 SFRX(VCO_VC_DAC
, 0xDF3D); // PLL calibration current
336 SFRX(I2SCFG0
, 0xDF40); // I2S Configuration Register 0
337 SFRX(I2SCFG1
, 0xDF41); // I2S Configuration Register 1
338 SFRX(I2SDATL
, 0xDF42); // I2S Data Low Byte
339 SFRX(I2SDATH
, 0xDF43); // I2S Data High Byte
340 SFRX(I2SWCNT
, 0xDF44); // I2S Word Count Register
341 SFRX(I2SSTAT
, 0xDF45); // I2S Status Register
342 SFRX(I2SCLKF0
, 0xDF46); // I2S Clock Configuration Register 0
343 SFRX(I2SCLKF1
, 0xDF47); // I2S Clock Configuration Register 1
344 SFRX(I2SCLKF2
, 0xDF48); // I2S Clock Configuration Register 2
346 // Common USB Registers
348 SFRX(USBADDR
, 0xDE00); // Function Address
349 SFRX(USBPOW
, 0xDE01); // Power/Control Register
350 SFRX(USBIIF
, 0xDE02); // IN Endpoints and EP0 Interrupt Flags
351 SFRX(USBOIF
, 0xDE04); // OUT Endpoints Interrupt Flags
352 SFRX(USBCIF
, 0xDE06); // Common USB Interrupt Flags
353 SFRX(USBIIE
, 0xDE07); // IN Endpoints and EP0 Interrupt Enable Mask
354 SFRX(USBOIE
, 0xDE09); // Out Endpoints Interrupt Enable Mask
355 SFRX(USBCIE
, 0xDE0B); // Common USB Interrupt Enable Mask
356 SFRX(USBFRML
, 0xDE0C); // Current Frame Number (Low byte)
357 SFRX(USBFRMH
, 0xDE0D); // Current Frame Number (High byte)
358 SFRX(USBINDEX
, 0xDE0E); // Selects current endpoint.
360 // Indexed Endpoint Registers
362 SFRX(USBMAXI
, 0xDE10); // Max. packet size for IN endpoint
363 SFRX(USBCS0
, 0xDE11); // EP0 Control and Status (USBINDEX = 0)
364 SFRX(USBCSIL
, 0xDE11); // IN EP{1-5} Control and Status Low
365 SFRX(USBCSIH
, 0xDE12); // IN EP{1-5} Control and Status High
366 SFRX(USBMAXO
, 0xDE13); // Max. packet size for OUT endpoint
367 SFRX(USBCSOL
, 0xDE14); // OUT EP{1-5} Control and Status Low
368 SFRX(USBCSOH
, 0xDE15); // OUT EP{1-5} Control and Status High
369 SFRX(USBCNT0
, 0xDE16); // Number of received bytes in EP0 FIFO (USBINDEX = 0)
370 SFRX(USBCNTL
, 0xDE16); // Number of bytes in OUT FIFO Low
371 SFRX(USBCNTH
, 0xDE17); // Number of bytes in OUT FIFO High
373 // Endpoint FIFO Registers
375 SFRX(USBF0
, 0xDE20); // Endpoint 0 FIFO
376 SFRX(USBF1
, 0xDE22); // Endpoint 1 FIFO
377 SFRX(USBF2
, 0xDE24); // Endpoint 2 FIFO
378 SFRX(USBF3
, 0xDE26); // Endpoint 3 FIFO
379 SFRX(USBF4
, 0xDE28); // Endpoint 4 FIFO
380 SFRX(USBF5
, 0xDE2A); // Endpoint 5 FIFO
382 // SFRs also accesible through XDATA space
384 SFRX(X_U0CSR
, 0xDF86); // USART 0 Control and Status
385 SFRX(X_P0IFG
, 0xDF89); // Port 0 Interrupt Status Flag
386 SFRX(X_P1IFG
, 0xDF8A); // Port 1 Interrupt Status Flag
387 SFRX(X_P2IFG
, 0xDF8B); // Port 2 Interrupt Status Flag
388 SFRX(X_PICTL
, 0xDF8C); // Port Pins Interrupt Mask and Edge
389 SFRX(X_P1IEN
, 0xDF8D); // Port 1 Interrupt Mask
390 SFRX(X_P0INP
, 0xDF8F); // Port 0 Input Mode
391 SFRX(X_RFIM
, 0xDF91); // RF Interrupt Mask
392 SFRX(X_MPAGE
, 0xDF93); // Memory Page Select
393 SFRX(X_T2CT
, 0xDF9C); // Timer 2 Control
394 SFRX(X_T2PR
, 0xDF9D); // Timer 2 Prescaler
395 SFRX(X_T2CTL
, 0xDF9E); // Timer 2 Control
396 SFRX(X_WORIRQ
, 0xDFA1); // Timer Sleep Timer Interrupts
397 SFRX(X_WORCTL
, 0xDFA2); // Sleep Timer Control
398 SFRX(X_WOREVT0
, 0xDFA3); // Timer Sleep Timer Event 0 Timeout Low Byte
399 SFRX(X_WOREVT1
, 0xDFA4); // Timer Sleep Timer Event 0 Timeout High Byte
400 SFRX(X_WORTIME0
, 0xDFA5); // Sleep Timer Value 0
401 SFRX(X_WORTIME1
, 0xDFA6); // Sleep Timer Value 1
402 SFRX(X_FWT
, 0xDFAB); // Flash Write Timing
403 SFRX(X_FADDRL
, 0xDFAC); // Flash Address Low
404 SFRX(X_FADDRH
, 0xDFAD); // Flash Address High
405 SFRX(X_FCTL
, 0xDFAE); // Flash Control
406 SFRX(X_FWDATA
, 0xDFAF); // Flash Write Data
407 SFRX(X_ENCDI
, 0xDFB1); // Encryption/Decryption Input Data
408 SFRX(X_ENCDO
, 0xDFB2); // Encryption/Decryption Output Data
409 SFRX(X_ENCCS
, 0xDFB3); // Encryption/Decryption Control and Status
410 SFRX(X_ADCCON1
, 0xDFB4); // ADC Control 1
411 SFRX(X_ADCCON2
, 0xDFB5); // ADC Control 2
412 SFRX(X_ADCCON3
, 0xDFB6); // ADC Control 3
413 SFRX(X_ADCL
, 0xDFBA); // ADC Data Low
414 SFRX(X_ADCH
, 0xDFBB); // ADC Data High
415 SFRX(X_RNDL
, 0xDFBC); // Random Number Generator Data Low
416 SFRX(X_RNDH
, 0xDFBD); // Random Number Generator Data High
417 SFRX(X_SLEEP
, 0xDFBE); // Flash Write Timing
418 SFRX(X_U0DBUF
, 0xDFC1); // USART 0 Receive/Transmit Data Buffer
419 SFRX(X_U0BAUD
, 0xDFC2); // USART 0 Baud Rate Control
420 SFRX(X_U0UCR
, 0xDFC4); // USART 0 UART Control
421 SFRX(X_U0GCR
, 0xDFC5); // USART 0 Generic Control
422 SFRX(X_CLKCON
, 0xDFC6); // Clock Control
423 SFRX(X_MEMCTR
, 0xDFC7); // Memory System Control
424 SFRX(X_WDCTL
, 0xDFC9); // Watchdog Timer Control
425 SFRX(X_T3CNT
, 0xDFCA); // Timer 3 Counter
426 SFRX(X_T3CTL
, 0xDFCB); // Timer 3 Control
427 SFRX(X_T3CCTL0
, 0xDFCC); // Timer 3 Channel 0 Capture/Compare Control
428 SFRX(X_T3CC0
, 0xDFCD); // Timer 3 Channel 0 Capture/Compare Value
429 SFRX(X_T3CCTL1
, 0xDFCE); // Timer 3 Channel 1 Capture/Compare Control
430 SFRX(X_T3CC1
, 0xDFCF); // Timer 3 Channel 1 Capture/Compare Value
431 SFRX(X_DMAIRQ
, 0xDFD1); // DMA Interrupt Flag
432 SFRX(X_DMA1CFGL
, 0xDFD2); // DMA Channel 1-4 Configuration Address Low Byte
433 SFRX(X_DMA1CFGH
, 0xDFD3); // DMA Channel 1-4 Configuration Address High Byte
434 SFRX(X_DMA0CFGL
, 0xDFD4); // DMA Channel 0 Configuration Address Low Byte
435 SFRX(X_DMA0CFGH
, 0xDFD5); // DMA Channel 0 Configuration Address High Byte
436 SFRX(X_DMAARM
, 0xDFD6); // DMA Channel Arm
437 SFRX(X_DMAREQ
, 0xDFD7); // DMA Channel Start Request and Status
438 SFRX(X_TIMIF
, 0xDFD8); // Timers 1/3/4 Joint Interrupt Mask/Flags
439 SFRX(X_RFD
, 0xDFD9); // RF Data
440 SFRX(X_T1CC0L
, 0xDFDA); // Timer 1 Channel 0 Capture/Compare Value Low
441 SFRX(X_T1CC0H
, 0xDFDB); // Timer 1 Channel 0 Capture/Compare Value High
442 SFRX(X_T1CC1L
, 0xDFDC); // Timer 1 Channel 1 Capture/Compare Value Low
443 SFRX(X_T1CC1H
, 0xDFDD); // Timer 1 Channel 1 Capture/Compare Value High
444 SFRX(X_T1CC2L
, 0xDFDE); // Timer 1 Channel 2 Capture/Compare Value Low
445 SFRX(X_T1CC2H
, 0xDFDF); // Timer 1 Channel 2 Capture/Compare Value High
446 SFRX(X_RFST
, 0xDFE1); // RF Strobe Commands
447 SFRX(X_T1CNTL
, 0xDFE2); // Timer 1 Counter Low
448 SFRX(X_T1CNTH
, 0xDFE3); // Timer 1 Counter High
449 SFRX(X_T1CTL
, 0xDFE4); // Timer 1 Control and Status
450 SFRX(X_T1CCTL0
, 0xDFE5); // Timer 1 Channel 0 Capture/Compare Control
451 SFRX(X_T1CCTL1
, 0xDFE6); // Timer 1 Channel 1 Capture/Compare Control
452 SFRX(X_T1CCTL2
, 0xDFE7); // Timer 1 Channel 2 Capture/Compare Control
453 SFRX(X_RFIF
, 0xDFE9); // RF Interrupt flags
454 SFRX(X_T4CNT
, 0xDFEA); // Timer 4 Counter
455 SFRX(X_T4CTL
, 0xDFEB); // Timer 4 Control
456 SFRX(X_T4CCTL0
, 0xDFEC); // Timer 4 Channel 0 Capture/Compare Control
457 SFRX(X_T4CC0
, 0xDFED); // Timer 4 Channel 0 Capture/Compare Value
458 SFRX(X_T4CCTL1
, 0xDFEE); // Timer 4 Channel 1 Capture/Compare Control
459 SFRX(X_T4CC1
, 0xDFEF); // Timer 4 Channel 1 Capture/Compare Value
460 SFRX(X_PERCFG
, 0xDFF1); // Peripheral I/O Control
461 SFRX(X_ADCCFG
, 0xDFF2); // ADC Input Configuration
462 SFRX(X_P0SEL
, 0xDFF3); // Port 0 Function Select
463 SFRX(X_P1SEL
, 0xDFF4); // Port 1 Function Select
464 SFRX(X_P2SEL
, 0xDFF5); // Port 2 Function Select
465 SFRX(X_P1INP
, 0xDFF6); // Port 1 Input Mode
466 SFRX(X_P2INP
, 0xDFF7); // Port 2 Input Mode
467 SFRX(X_U1CSR
, 0xDFF8); // USART 1 Control and Status
468 SFRX(X_U1DBUF
, 0xDFF9); // USART 1 Receive/Transmit Data Buffer
469 SFRX(X_U1BAUD
, 0xDFFA); // USART 1 Baud Rate Control
470 SFRX(X_U1UCR
, 0xDFFB); // USART 1 UART Control
471 SFRX(X_U1GCR
, 0xDFFC); // USART 1 Generic Control
472 SFRX(X_P0DIR
, 0xDFFD); // Port 0 Direction
473 SFRX(X_P1DIR
, 0xDFFE); // Port 1 Direction
474 SFRX(X_P2DIR
, 0xDFFF); // Port 2 Direction
476 #endif //REG_CC2510FX_H