Added the HALT preprocessor directive so that these files may be used directly.
[goodfet] / shellcode / chipcon / cc1110 / cc1110-ext.h
1 /******************************************************************************\r
2     Filename: ioCCxx10_bitdef.h\r
3 \r
4     This file contains the bit definitions of registers in CCxx10\r
5 \r
6     Copyright 2008 Texas Instruments, Inc.\r
7 ******************************************************************************/\r
8 #ifndef _IOCCXX10_BITDEF_H\r
9 #define _IOCCXX10_BITDEF_H\r
10 \r
11 \r
12 //Added by Travis Goodspeed\r
13 #define HALT __asm \\r
14   .byte 0xA5 \\r
15   __endasm;\r
16 \r
17 \r
18 /* SEE DATA SHEET FOR DETAILS ABOUT THE FOLLOWING BIT MASKS */\r
19 \r
20 \r
21 \r
22 /*******************************************************************************\r
23  * Memory Control Registers\r
24  */\r
25 \r
26 // MPAGE (0x93) - Memory Page Select\r
27 \r
28 // MEMCTR (0xC7) - Memory Arbiter Control\r
29 #define MEMCTR_CACHD                      0x02\r
30 #define MEMCTR_PREFD                      0x01\r
31 \r
32 \r
33 /*******************************************************************************\r
34  * CPU Registers\r
35  */\r
36 \r
37 // DPH0 (0x83) - Data Pointer 0 High Byte\r
38 \r
39 // DPL0 (0x82) - Data Pointer 0 Low Byte\r
40 \r
41 // DPH1 (0x85) - Data Pointer 1 High Byte\r
42 \r
43 // DPL1 (0x84) - Data Pointer 1 Low Byte\r
44 \r
45 // DPS (0x92) - Data Pointer Select\r
46 #define DPS_VDPS                          0x01\r
47 \r
48 \r
49 // PSW (0xD0) - Progrttus Word - bit accessible SFR register\r
50 \r
51 // ACC (0xE0) - Accumulator - bit accessible SFR register\r
52 \r
53 // B (0xF0) - B Register - bit accessible SFR register\r
54 \r
55 // SP (0x81) - Stack Pointer\r
56 \r
57 \r
58 /*******************************************************************************\r
59  * Interrupt Control Registers\r
60  */\r
61 \r
62 // IEN0 (0xA8) - Interrupt Enable 0 Register - bit accessible SFR register\r
63 \r
64 // IEN1 (0xB8) - Interrupt Enable 1 Register - bit accessible SFR register\r
65 \r
66 // IEN2 (0x9A) - Interrupt Enable 2 Register\r
67 #define IEN2_WDTIE                        0x20\r
68 #define IEN2_P1IE                         0x10\r
69 #define IEN2_UTX1IE                       0x08\r
70 #define IEN2_I2STXIE                      0x08\r
71 #define IEN2_UTX0IE                       0x04\r
72 #define IEN2_P2IE                         0x02\r
73 #define IEN2_USBIE                        0x02\r
74 #define IEN2_RFIE                         0x01\r
75 \r
76 \r
77 // TCON (0x88) - CPU Interrupt Flag 1 - bit accessible SFR register\r
78 \r
79 // S0CON (0x98) - CPU Interrupt Flag 2 - bit accessible SFR register\r
80 \r
81 // S1CON (0x9B) - CPU Interrupt Flag 3\r
82 #define S1CON_RFIF_1                      0x02\r
83 #define S1CON_RFIF_0                      0x01\r
84 \r
85 \r
86 // IRCON (0xC0) - CPU Interrupt Flag 4 - bit accessible SFR register\r
87 \r
88 // IRCON2 (0xE8) - CPU Interrupt Flag 5 - bit accessible SFR register\r
89 \r
90 // IP1 (0xB9) - Interrupt Priority 1\r
91 #define IP1_IPG5                          0x20\r
92 #define IP1_IPG4                          0x10\r
93 #define IP1_IPG3                          0x08\r
94 #define IP1_IPG2                          0x04\r
95 #define IP1_IPG1                          0x02\r
96 #define IP1_IPG0                          0x01\r
97 \r
98 // IP0 (0xA9) - Interrupt Priority 0\r
99 #define IP0_IPG5                          0x20\r
100 #define IP0_IPG4                          0x10\r
101 #define IP0_IPG3                          0x08\r
102 #define IP0_IPG2                          0x04\r
103 #define IP0_IPG1                          0x02\r
104 #define IP0_IPG0                          0x01\r
105 \r
106 \r
107 \r
108 /*******************************************************************************\r
109  * Power Management and Clocks\r
110  */\r
111 \r
112 // PCON (0x87) - Power Mode Control\r
113 #define PCON_IDLE                         0x01\r
114 \r
115 \r
116 // SLEEP (0xBE) - Sleep Mode Control\r
117 #define SLEEP_USB_EN                      0x80\r
118 #define SLEEP_XOSC_S                      0x40\r
119 #define SLEEP_HFRC_S                      0x20\r
120 #define SLEEP_RST                         0x18\r
121 #define SLEEP_RST0                        0x08\r
122 #define SLEEP_RST1                        0x10\r
123 #define SLEEP_OSC_PD                      0x04\r
124 #define SLEEP_MODE                        0x03\r
125 #define SLEEP_MODE1                       0x02\r
126 #define SLEEP_MODE0                       0x01\r
127 \r
128 #define SLEEP_RST_POR_BOD                 (0x00 << 3)\r
129 #define SLEEP_RST_EXT                     (0x01 << 3)\r
130 #define SLEEP_RST_WDT                     (0x02 << 3)\r
131 \r
132 #define SLEEP_MODE_PM0                    (0x00)\r
133 #define SLEEP_MODE_PM1                    (0x01)\r
134 #define SLEEP_MODE_PM2                    (0x02)\r
135 #define SLEEP_MODE_PM3                    (0x03)\r
136 \r
137 \r
138 // CLKCON (0xC6) - Clock Control\r
139 #define CLKCON_OSC32                      0x80  // bit mask, for the slow 32k clock oscillator\r
140 #define CLKCON_OSC                        0x40  // bit mask, for the system clock oscillator\r
141 #define CLKCON_TICKSPD                    0x38  // bit mask, for timer ticks output setting\r
142 #define CLKCON_TICKSPD0                   0x08  // bit mask, for timer ticks output setting\r
143 #define CLKCON_TICKSPD1                   0x10  // bit mask, for timer ticks output setting\r
144 #define CLKCON_TICKSPD2                   0x20  // bit mask, for timer ticks output setting\r
145 #define CLKCON_CLKSPD                     0x07  // bit mask, for the clock speed\r
146 #define CLKCON_CLKSPD0                    0x01  // bit mask, for the clock speed\r
147 #define CLKCON_CLKSPD1                    0x02  // bit mask, for the clock speed\r
148 #define CLKCON_CLKSPD2                    0x04  // bit mask, for the clock speed\r
149 \r
150 #define TICKSPD_DIV_1                     (0x00 << 3)\r
151 #define TICKSPD_DIV_2                     (0x01 << 3)\r
152 #define TICKSPD_DIV_4                     (0x02 << 3)\r
153 #define TICKSPD_DIV_8                     (0x03 << 3)\r
154 #define TICKSPD_DIV_16                    (0x04 << 3)\r
155 #define TICKSPD_DIV_32                    (0x05 << 3)\r
156 #define TICKSPD_DIV_64                    (0x06 << 3)\r
157 #define TICKSPD_DIV_128                   (0x07 << 3)\r
158 \r
159 #define CLKSPD_DIV_1                      (0x00)\r
160 #define CLKSPD_DIV_2                      (0x01)\r
161 #define CLKSPD_DIV_4                      (0x02)\r
162 #define CLKSPD_DIV_8                      (0x03)\r
163 #define CLKSPD_DIV_16                     (0x04)\r
164 #define CLKSPD_DIV_32                     (0x05)\r
165 #define CLKSPD_DIV_64                     (0x06)\r
166 #define CLKSPD_DIV_128                    (0x07)\r
167 \r
168 \r
169 \r
170 /*******************************************************************************\r
171  *  Flash Controller\r
172  */\r
173 \r
174 // FCTL (0xAE) - Flash Control\r
175 #define FCTL_BUSY                         0x80\r
176 #define FCTL_SWBSY                        0x40\r
177 #define FCTL_CONTRD                       0x10\r
178 #define FCTL_WRITE                        0x02\r
179 #define FCTL_ERASE                        0x01\r
180 \r
181 \r
182 // FWDATA (0xAF) - Flash Write Data\r
183 \r
184 // FADDRH (0xAD) - Flash Address High Byte\r
185 \r
186 // FADDRL (0xAC) - Flash Address Low Byte\r
187 \r
188 // FWT (0xAB) - Flash Write Timing (Only bit 0-5 R/W)\r
189 \r
190 \r
191 /*******************************************************************************\r
192  * I/O Ports\r
193  */\r
194 \r
195 // P0 (0x80) - Port 0 - bit accessible SFR register\r
196 \r
197 // P1 (0x90) - Port 1 - bit accessible SFR register\r
198 \r
199 // P2 (0xA0) - Port 2 - bit accessible SFR register\r
200 \r
201 // PERCFG (0xF1) - Peripheral Control\r
202 #define PERCFG_T1CFG                      0x40\r
203 #define PERCFG_T3CFG                      0x20\r
204 #define PERCFG_T4CFG                      0x10\r
205 #define PERCFG_U1CFG                      0x02\r
206 #define PERCFG_U0CFG                      0x01\r
207 \r
208 \r
209 \r
210 // ADCCFG (0xF2) - ADC input Configuration\r
211 #define ADCCFG_7                          0x80\r
212 #define ADCCFG_6                          0x40\r
213 #define ADCCFG_5                          0x20\r
214 #define ADCCFG_4                          0x10\r
215 #define ADCCFG_3                          0x08\r
216 #define ADCCFG_2                          0x04\r
217 #define ADCCFG_1                          0x02\r
218 #define ADCCFG_0                          0x01\r
219 \r
220 \r
221 // P0SEL (0xF3) - Port 0 Function Select (bit 7 not used)\r
222 \r
223 // P1SEL (0xF4) - Port 1 Function Select\r
224 \r
225 // P2SEL (0xF5) - Port 2 Function Select\r
226 #define P2SEL_PRI3P1                      0x40\r
227 #define P2SEL_PRI2P1                      0x20\r
228 #define P2SEL_PRI1P1                      0x10\r
229 #define P2SEL_PRI0P1                      0x08\r
230 #define P2SEL_SELP2_4                     0x04\r
231 #define P2SEL_SELP2_3                     0x02\r
232 #define P2SEL_SELP2_0                     0x01\r
233 \r
234 \r
235 // P0DIR (0xFD) - Port 0 Direction Select\r
236 \r
237 // P1DIR (0xFE) - Port 1 Direction Select\r
238 \r
239 // P2DIR (0xFF) - Port 2 Direction\r
240 #define P2DIR_PRIP0                       0xC0\r
241 #define P2DIR_0PRIP0                      0x40\r
242 #define P2DIR_1PRIP0                      0x80\r
243 #define P2DIR_DIRP2                       0x1F\r
244 \r
245 #define P2DIR_PRIP0_0                     (0x00 << 6)\r
246 #define P2DIR_PRIP0_1                     (0x01 << 6)\r
247 #define P2DIR_PRIP0_2                     (0x02 << 6)\r
248 #define P2DIR_PRIP0_3                     (0x03 << 6)\r
249 \r
250 #define P2DIR_DIRP2_4                     (0x10)\r
251 #define P2DIR_DIRP2_3                     (0x08)\r
252 #define P2DIR_DIRP2_2                     (0x04)\r
253 #define P2DIR_DIRP2_1                     (0x02)\r
254 #define P2DIR_DIRP2_0                     (0x01)\r
255 \r
256 \r
257 \r
258 // P0INP (0x8F) - Port 0 Input Mode (bit 0 & 1 not used)\r
259 \r
260 // P1INP (0xF6) - Port 1 Input Mode (bit 0 & 1 not used)\r
261 \r
262 // P2INP (0xF7) - Port 2 Input Mode\r
263 #define P2INP_PDUP2                       0x80\r
264 #define P2INP_PDUP1                       0x40\r
265 #define P2INP_PDUP0                       0x20\r
266 #define P2INP_MDP2                        0x1F\r
267 \r
268 #define P2INP_MDP2_0                      (0x01)\r
269 #define P2INP_MDP2_1                      (0x02)\r
270 #define P2INP_MDP2_2                      (0x04)\r
271 #define P2INP_MDP2_3                      (0x08)\r
272 #define P2INP_MDP2_4                      (0x10)\r
273 \r
274 \r
275 \r
276 // P0IFG (0x89) - Port 0 Interrupt Status Flag\r
277 \r
278 // P1IFG (0x8A) - Port 1 Interrupt Status Flag\r
279 \r
280 // P2IFG (0x8B) - Port 2 Interrupt Status Flag (bit 7 - 5 not used)\r
281 \r
282 // PICTL (0x8C) - Port Interrupt Control\r
283 #define PICTL_PADSC                       0x40\r
284 #define PICTL_P2IEN                       0x20\r
285 #define PICTL_P0IENH                      0x10\r
286 #define PICTL_P0IENL                      0x08\r
287 #define PICTL_P2ICON                      0x04\r
288 #define PICTL_P1ICON                      0x02\r
289 #define PICTL_P0ICON                      0x01\r
290 \r
291 \r
292 // P1IEN (0x8D) - Port 1 Interrupt Mask\r
293 \r
294 \r
295 \r
296 /*******************************************************************************\r
297  * DMA Controller\r
298  */\r
299 \r
300 // DMAARM (0xD6) - DMA Channel Arm\r
301 #define DMAARM_ABORT                      0x80\r
302 #define DMAARM4                           0x10\r
303 #define DMAARM3                           0x08\r
304 #define DMAARM2                           0x04\r
305 #define DMAARM1                           0x02\r
306 #define DMAARM0                           0x01\r
307 \r
308 \r
309 // DMAREQ (0xD7) - DMA Channel Start Request and Status\r
310 #define DMAREQ4                           0x10\r
311 #define DMAREQ3                           0x08\r
312 #define DMAREQ2                           0x04\r
313 #define DMAREQ1                           0x02\r
314 #define DMAREQ0                           0x01\r
315 \r
316 \r
317 // DMA0CFGH (0xD5) - DMA Channel 0 Configuration Address High Byte\r
318 \r
319 // DMA0CFGL (0xD4) - DMA Channel 0 Configuration Address Low Byte\r
320 \r
321 // DMA1CFGH (0xD3) - DMA Channel 1 - 4 Configuration Address High By\r
322 \r
323 // DMA1CFGL (0xD2) - DMA Channel 1 - 4 Configuration Address Low Byte\r
324 \r
325 // DMAIRQ (0xD1) - DMA Interrupt Flag\r
326 #define DMAIRQ_DMAIF4                     0x10\r
327 #define DMAIRQ_DMAIF3                     0x08\r
328 #define DMAIRQ_DMAIF2                     0x04\r
329 #define DMAIRQ_DMAIF1                     0x02\r
330 #define DMAIRQ_DMAIF0                     0x01\r
331 \r
332 \r
333 // T1CNTH (0xE3) - Timer 1 Counter High\r
334 \r
335 // T1CNTL (0xE2) - Timer 1 Counter Low\r
336 \r
337 // T1CTL (0xE4) - Timer 1 Control and Status\r
338 #define T1CTL_CH2IF                       0x80 // Timer 1 channel 2 interrupt flag\r
339 #define T1CTL_CH1IF                       0x40 // Timer 1 channel 1 interrupt flag\r
340 #define T1CTL_CH0IF                       0x20 // Timer 1 channel 0 interrupt flag\r
341 #define T1CTL_OVFIF                       0x10 // Timer 1 counter overflow interrupt flag\r
342 #define T1CTL_DIV                         0x0C\r
343 #define T1CTL_DIV0                        0x04\r
344 #define T1CTL_DIV1                        0x08\r
345 #define T1CTL_MODE                        0x03\r
346 #define T1CTL_MODE0                       0x01\r
347 #define T1CTL_MODE1                       0x02\r
348 \r
349 #define T1CTL_DIV_1                       (0x00 << 2) // Divide tick frequency by 1\r
350 #define T1CTL_DIV_8                       (0x01 << 2) // Divide tick frequency by 8\r
351 #define T1CTL_DIV_32                      (0x02 << 2) // Divide tick frequency by 32\r
352 #define T1CTL_DIV_128                     (0x03 << 2) // Divide tick frequency by 128\r
353 \r
354 #define T1CTL_MODE_SUSPEND                (0x00)    // Operation is suspended (halt)\r
355 #define T1CTL_MODE_FREERUN                (0x01)    // Free Running mode\r
356 #define T1CTL_MODE_MODULO                 (0x02)    // Modulo\r
357 #define T1CTL_MODE_UPDOWN                 (0x03)    // Up/down\r
358 \r
359 \r
360 // T1CCTL0 (0xE5) - Timer 1 Channel 0 Capture/Compare Control\r
361 #define T1CCTL0_CPSEL                     0x80    // Timer 1 channel 0 capture select\r
362 #define T1CCTL0_IM                        0x40    // Channel 0 Interrupt mask\r
363 #define T1CCTL0_CMP                       0x38\r
364 #define T1CCTL0_CMP0                      0x08\r
365 #define T1CCTL0_CMP1                      0x10\r
366 #define T1CCTL0_CMP2                      0x20\r
367 #define T1CCTL0_MODE                      0x04    // Capture or compare mode\r
368 #define T1CCTL0_CAP                       0x03\r
369 #define T1CCTL0_CAP0                      0x01\r
370 #define T1CCTL0_CAP1                      0x02\r
371 \r
372 #define T1C0_SET_ON_CMP                   (0x00 << 3)    // Clear output on compare-up set on 0\r
373 #define T1C0_CLR_ON_CMP                   (0x01 << 3)    // Set output on compare-up clear on 0\r
374 #define T1C0_TOG_ON_CMP                   (0x02 << 3)    // Toggle output on compare\r
375 #define T1C0_SET_CMP_UP_CLR_0             (0x03 << 3)    // Clear output on compare\r
376 #define T1C0_CLR_CMP_UP_SET_0             (0x04 << 3)    // Set output on compare\r
377 \r
378 #define T1C0_NO_CAP                       (0x00)    // No capture\r
379 #define T1C0_RISE_EDGE                    (0x01)    // Capture on rising edge\r
380 #define T1C0_FALL_EDGE                    (0x02)    // Capture on falling edge\r
381 #define T1C0_BOTH_EDGE                    (0x03)    // Capture on both edges\r
382 \r
383 \r
384 // T1CC0H (0xDB) - Timer 1 Channel 0 Capture/Compare Value High\r
385 \r
386 // T1CC0L (0xDA) - Timer 1 Channel 0 Capture/Compare Value Low\r
387 \r
388 // T1CCTL1 (0xE6) - Timer 1 Channel 1 Capture/Compare Control\r
389 #define T1CCTL1_CPSEL                     0x80    // Timer 1 channel 1 capture select\r
390 #define T1CCTL1_IM                        0x40    // Channel 1 Interrupt mask\r
391 #define T1CCTL1_CMP                       0x38\r
392 #define T1CCTL1_CMP0                      0x08\r
393 #define T1CCTL1_CMP1                      0x10\r
394 #define T1CCTL1_CMP2                      0x20\r
395 #define T1CCTL1_MODE                      0x04    // Capture or compare mode\r
396 #define T1CCTL1_DSM_SPD                   0x04\r
397 #define T1CCTL1_CAP                       0x03\r
398 #define T1CCTL1_CAP0                      0x01\r
399 #define T1CCTL1_CAP1                      0x02\r
400 \r
401 #define T1C1_SET_ON_CMP                   (0x00 << 3)  // Set output on compare\r
402 #define T1C1_CLR_ON_CMP                   (0x01 << 3)  // Clear output on compare\r
403 #define T1C1_TOG_ON_CMP                   (0x02 << 3)  // Toggle output on compare\r
404 #define T1C1_SET_CMP_UP_CLR_0             (0x03 << 3)  // Set output on compare-up clear on 0\r
405 #define T1C1_CLR_CMP_UP_SET_0             (0x04 << 3)  // Clear output on compare-up set on 0\r
406 #define T1C1_SET_C1_CLR_C0                (0x05 << 3)  // Set when equal to T1CC1, clear when equal to T1CC0\r
407 #define T1C1_CLR_C1_SET_C0                (0x06 << 3)  // Clear when equal to T1CC1, set when equal to T1CC0\r
408 #define T1C1_DSM_MODE                     (0x07 << 3)  // DSM mode\r
409 \r
410 #define T1C1_NO_CAP                       (0x00)     // No capture\r
411 #define T1C1_RISE_EDGE                    (0x01)    // Capture on rising edge\r
412 #define T1C1_FALL_EDGE                    (0x02)    // Capture on falling edge\r
413 #define T1C1_BOTH_EDGE                    (0x03)    // Capture on both edges\r
414 \r
415 #define DSM_IP_ON_OS_ON                   (0x00)    // Interpolator & output shaping enabled\r
416 #define DSM_IP_ON_OS_OFF                  (0x01)    // Interpolator enabled & output shaping disabled\r
417 #define DSM_IP_OFF_OS_ON                  (0x02)    // Interpolator disabled & output shaping enabled\r
418 #define DSM_IP_OFF_OS_OFF                 (0x03)    // Interpolator & output shaping disabled\r
419 \r
420 \r
421 \r
422 // T1CC1H (0xDD) - Timer 1 Channel 1 Capture/Compare Value High\r
423 \r
424 // T1CC1L (0xDC) - Timer 1 Channel 1 Capture/Compare Value Low\r
425 \r
426 // T1CCTL2 (0xE7) - Timer 1 Channel 2 Capture/Compare Control\r
427 #define T1CCTL2_CPSEL                     0x80    // Timer 1 channel 2 capture select\r
428 #define T1CCTL2_IM                        0x40    // Channel 2 Interrupt mask\r
429 #define T1CCTL2_CMP                       0x38\r
430 #define T1CCTL2_CMP0                      0x08\r
431 #define T1CCTL2_CMP1                      0x10\r
432 #define T1CCTL2_CMP2                      0x20\r
433 #define T1CCTL2_MODE                      0x04    // Capture or compare mode\r
434 #define T1CCTL2_CAP                       0x03\r
435 #define T1CCTL2_CAP0                      0x01\r
436 #define T1CCTL2_CAP1                      0x02\r
437 \r
438 #define T1C2_SET_ON_CMP                   (0x00 << 3)  // Set output on compare\r
439 #define T1C2_CLR_ON_CMP                   (0x01 << 3)  // Clear output on compare\r
440 #define T1C2_TOG_ON_CMP                   (0x02 << 3)  // Toggle output on compare\r
441 #define T1C2_SET_CMP_UP_CLR_0             (0x03 << 3)  // Set output on compare-up clear on 0\r
442 #define T1C2_CLR_CMP_UP_SET_0             (0x04 << 3)  // Clear output on compare-up set on 0\r
443 #define T1C2_SET_C2_CLR_C0                (0x05 << 3)  // Set when equal to T1CC2, clear when equal to T1CC0\r
444 #define T1C2_CLR_C2_SET_C0                (0x06 << 3)  // Clear when equal to T1CC2, set when equal to T1CC0\r
445 \r
446 #define T1C2_NO_CAP                       (0x00)     // No capture\r
447 #define T1C2_RISE_EDGE                    (0x01)    // Capture on rising edge\r
448 #define T1C2_FALL_EDGE                    (0x02)    // Capture on falling edge\r
449 #define T1C2_BOTH_EDGE                    (0x03)    // Capture on both edges\r
450 \r
451 \r
452 // T1CC2H (0xDF) - Timer 1 Channel 2 Capture/Compare Value High\r
453 \r
454 // T1CC2L (0xDE) - Timer 1 Channel 2 Capture/Compare Value Low\r
455 \r
456 // T2CTL (0x9E) - Timer 2 Control\r
457 #define T2CTL_TEX                         0x40\r
458 #define T2CTL_INT                         0x10    // Enable Timer 2 interrupt\r
459 #define T2CTL_TIG                         0x04    // Tick generator mode\r
460 #define T2CTL_TIP                         0x03\r
461 #define T2CTL_TIP0                        0x01\r
462 #define T2CTL_TIP1                        0x02\r
463 \r
464 #define T2CTL_TIP_64                      (0x00)\r
465 #define T2CTL_TIP_128                     (0x01)\r
466 #define T2CTL_TIP_256                     (0x02)\r
467 #define T2CTL_TIP_1024                    (0x03)\r
468 \r
469 \r
470 // T2CT (0x9C) - Timer 2 Count\r
471 \r
472 // T2PR (0x9D) - Timer 2 Prescaler\r
473 \r
474 // WORTIME0 (0xA5) - Sleep Timer Low Byte\r
475 \r
476 // WORTIME1 (0xA6) - Sleep Timer High Byte\r
477 \r
478 // WOREVT1 (0xA4) - Sleep Timer Event0 Timeout High\r
479 \r
480 // WOREVT0 (0xA3) - Sleep Timer Event0 Timeout Low\r
481 \r
482 // WORCTL (0xA2) - Sleep Timer Control\r
483 #define WORCTL_WOR_RESET                  0x04\r
484 #define WORCTL_WOR_RES                    0x03\r
485 #define WORCTL_WOR_RES0                   0x01\r
486 #define WORCTL_WOR_RES1                   0x02\r
487 \r
488 #define WORCTL_WOR_RES_1                  (0x00)\r
489 #define WORCTL_WOR_RES_32                 (0x01)\r
490 #define WORCTL_WOR_RES_1024               (0x02)\r
491 #define WORCTL_WOR_RES_32768              (0x03)\r
492 \r
493 \r
494 // WORIRQ (0xA1) - Sleep Timer Interrupt Control\r
495 #define WORIRQ_EVENT0_MASK                0x10\r
496 #define WORIRQ_EVENT0_FLAG                0x01\r
497 \r
498 \r
499 // T3CNT (0xCA) - Timer 3 Counter\r
500 \r
501 // T3CTL (0xCB) - Timer 3 Control\r
502 #define T3CTL_DIV                         0xE0\r
503 #define T3CTL_DIV0                        0x20\r
504 #define T3CTL_DIV1                        0x40\r
505 #define T3CTL_DIV2                        0x80\r
506 #define T3CTL_START                       0x10\r
507 #define T3CTL_OVFIM                       0x08\r
508 #define T3CTL_CLR                         0x04\r
509 #define T3CTL_MODE                        0x03\r
510 #define T3CTL_MODE0                       0x01\r
511 #define T3CTL_MODE1                       0x02\r
512 \r
513 #define T3CTL_DIV_1                       (0x00 << 5)\r
514 #define T3CTL_DIV_2                       (0x01 << 5)\r
515 #define T3CTL_DIV_4                       (0x02 << 5)\r
516 #define T3CTL_DIV_8                       (0x03 << 5)\r
517 #define T3CTL_DIV_16                      (0x04 << 5)\r
518 #define T3CTL_DIV_32                      (0x05 << 5)\r
519 #define T3CTL_DIV_64                      (0x06 << 5)\r
520 #define T3CTL_DIV_128                     (0x07 << 5)\r
521 \r
522 #define T3CTL_MODE_FREERUN                (0x00)\r
523 #define T3CTL_MODE_DOWN                   (0x01)\r
524 #define T3CTL_MODE_MODULO                 (0x02)\r
525 #define T3CTL_MODE_UPDOWN                 (0x03)\r
526 \r
527 \r
528 \r
529 // T3CCTL0 (0xCC) - Timer 3 Channel 0 Compare Control\r
530 #define T3CCTL0_IM                        0x40\r
531 #define T3CCTL0_MODE                      0x04\r
532 #define T3CCTL0_CMP                       0x38\r
533 #define T3CCTL0_CMP0                      0x08\r
534 #define T3CCTL0_CMP1                      0x10\r
535 #define T3CCTL0_CMP2                      0x20\r
536 \r
537 #define T3C0_SET_ON_CMP                   (0x00 << 3)  // Set output on compare\r
538 #define T3C0_CLR_ON_CMP                   (0x01 << 3)  // Clear output on compare\r
539 #define T3C0_TOG_ON_CMP                   (0x02 << 3)  // Toggle output on compare\r
540 #define T3C0_SET_CMP_UP_CLR_0             (0x03 << 3)  // Set output on compare-up clear on 0\r
541 #define T3C0_CLR_CMP_UP_SET_0             (0x04 << 3)  // Clear output on compare-up set on 0\r
542 #define T3C0_SET_CMP_CLR_255              (0x05 << 3)  // Set when equal to T3CC0, clear on 255\r
543 #define T3C0_CLR_CMP_SET_0                (0x06 << 3)  // Clear when equal to T3CC0, set on 0\r
544 \r
545 \r
546 \r
547 // T3CC0 (0xCD) - Timer 3 Channel 0 Compare Value\r
548 \r
549 // T3CCTL1 (0xCE) - Timer 3 Channel 1 Compare Control\r
550 \r
551 #define T3CCTL1_IM                        0x40\r
552 #define T3CCTL1_MODE                      0x04\r
553 #define T3CCTL1_CMP                       0x38\r
554 #define T3CCTL1_CMP0                      0x08\r
555 #define T3CCTL1_CMP1                      0x10\r
556 #define T3CCTL1_CMP2                      0x20\r
557 \r
558 #define T3C1_SET_ON_CMP                   (0x00 << 3)  // Set output on compare\r
559 #define T3C1_CLR_ON_CMP                   (0x01 << 3)  // Clear output on compare\r
560 #define T3C1_TOG_ON_CMP                   (0x02 << 3)  // Toggle output on compare\r
561 #define T3C1_SET_CMP_UP_CLR_0             (0x03 << 3)  // Set output on compare-up clear on 0\r
562 #define T3C1_CLR_CMP_UP_SET_0             (0x04 << 3)  // Clear output on compare-up set on 0\r
563 #define T3C1_SET_CMP_CLR_C0               (0x05 << 3)  // Set when equal to T3CC1, clear when equal to T3CC0\r
564 #define T3C1_CLR_CMP_SET_C0               (0x06 << 3)  // Clear when equal to T3CC1, set when equal to T3CC0\r
565 \r
566 \r
567 // T3CC1 (0xCF) - Timer 3 Channel 1 Compare Value\r
568 \r
569 // T4CNT (0xEA) - Timer 4 Counter\r
570 \r
571 // T4CTL (0xEB) - Timer 4 Control\r
572 #define T4CTL_DIV                         0xE0\r
573 #define T4CTL_DIV0                        0x20\r
574 #define T4CTL_DIV1                        0x40\r
575 #define T4CTL_DIV2                        0x80\r
576 #define T4CTL_START                       0x10\r
577 #define T4CTL_OVFIM                       0x08\r
578 #define T4CTL_CLR                         0x04\r
579 #define T4CTL_MODE                        0x03\r
580 #define T4CTL_MODE0                       0x01\r
581 #define T4CTL_MODE1                       0x02\r
582 \r
583 #define T4CTL_MODE_FREERUN                (0x00)\r
584 #define T4CTL_MODE_DOWN                   (0x01)\r
585 #define T4CTL_MODE_MODULO                 (0x02)\r
586 #define T4CTL_MODE_UPDOWN                 (0x03)\r
587 \r
588 #define T4CTL_DIV_1                       (0x00 << 5)\r
589 #define T4CTL_DIV_2                       (0x01 << 5)\r
590 #define T4CTL_DIV_4                       (0x02 << 5)\r
591 #define T4CTL_DIV_8                       (0x03 << 5)\r
592 #define T4CTL_DIV_16                      (0x04 << 5)\r
593 #define T4CTL_DIV_32                      (0x05 << 5)\r
594 #define T4CTL_DIV_64                      (0x06 << 5)\r
595 #define T4CTL_DIV_128                     (0x07 << 5)\r
596 \r
597 \r
598 // T4CCTL0 (0xEC) - Timer 4 Channel 0 Compare Control\r
599 #define T4CCTL0_IM                        0x40\r
600 #define T4CCTL0_CMP                       0x38\r
601 #define T4CCTL0_CMP0                      0x08\r
602 #define T4CCTL0_CMP1                      0x10\r
603 #define T4CCTL0_CMP2                      0x20\r
604 #define T4CCTL0_MODE                      0x04\r
605 \r
606 #define T4CCTL0_SET_ON_CMP                (0x00 << 3)\r
607 #define T4CCTL0_CLR_ON_CMP                (0x01 << 3)\r
608 #define T4CCTL0_TOG_ON_CMP                (0x02 << 3)\r
609 #define T4CCTL0_SET_CMP_UP_CLR_0          (0x03 << 3)\r
610 #define T4CCTL0_CLR_CMP_UP_SET_0          (0x04 << 3)\r
611 #define T4CCTL0_SET_CMP_CLR_255           (0x05 << 3)\r
612 #define T4CCTL0_CLR_CMP_SET_0             (0x06 << 3)\r
613 \r
614 \r
615 // T4CC0 (0xED) - Timer 4 Channel 0 Compare Value\r
616 \r
617 // T4CCTL1 (0xEE) - Timer 4 Channel 1 Compare Control\r
618 #define T4CCTL1_IM                        0x40\r
619 #define T4CCTL1_CMP                       0x38\r
620 #define T4CCTL1_CMP0                      0x08\r
621 #define T4CCTL1_CMP1                      0x10\r
622 #define T4CCTL1_CMP2                      0x20\r
623 #define T4CCTL1_MODE                      0x04\r
624 \r
625 #define T4CCTL1_SET_ON_CMP                (0x00 << 3)\r
626 #define T4CCTL1_CLR_ON_CMP                (0x01 << 3)\r
627 #define T4CCTL1_TOG_ON_CMP                (0x02 << 3)\r
628 #define T4CCTL1_SET_CMP_UP_CLR_0          (0x03 << 3)\r
629 #define T4CCTL1_CLR_CMP_UP_SET_0          (0x04 << 3)\r
630 #define T4CCTL1_SET_CMP_CLR_C0            (0x05 << 3)\r
631 #define T4CCTL1_CLR_CMP_SET_C0            (0x06 << 3)\r
632 \r
633 \r
634 // TIMIF (0xD8) - Timers 1/3/4 Interrupt Mask/Flag - bit accessible SFR register\r
635 \r
636 \r
637 /*******************************************************************************\r
638  * ADC\r
639  */\r
640 \r
641 // ADCL (0xBA) - ADC Data Low (only bit 7-4 used)\r
642 \r
643 // ADCH (0xBB) - ADC Data High\r
644 \r
645 // ADCCON1 (0xB4) - ADC Control 1\r
646 #define ADCCON1_EOC                       0x80\r
647 #define ADCCON1_ST                        0x40\r
648 #define ADCCON1_STSEL                     0x30\r
649 #define ADCCON1_STSEL0                    0x10\r
650 #define ADCCON1_STSEL1                    0x20\r
651 #define ADCCON1_RCTRL                     0x0C\r
652 #define ADCCON1_RCTRL0                    0x04\r
653 #define ADCCON1_RCTRL1                    0x08\r
654 \r
655 #define STSEL_P2_0                        (0x00 << 4)\r
656 #define STSEL_FULL_SPEED                  (0x01 << 4)\r
657 #define STSEL_T1C0_CMP_EVT                (0x02 << 4)\r
658 #define STSEL_ST                          (0x03 << 4)\r
659 \r
660 #define ADCCON1_RCTRL_COMPL               (0x00 << 2)\r
661 #define ADCCON1_RCTRL_LFSR13              (0x01 << 2)\r
662 \r
663 \r
664 \r
665 // ADCCON2 (0xB5) - ADC Control 2\r
666 #define ADCCON2_SREF                      0xC0\r
667 #define ADCCON2_SREF0                     0x40\r
668 #define ADCCON2_SREF1                     0x80\r
669 #define ADCCON2_SDIV                      0x30\r
670 #define ADCCON2_SDIV0                     0x10\r
671 #define ADCCON2_SDIV1                     0x20\r
672 #define ADCCON2_SCH                       0x0F\r
673 #define ADCCON2_SCH0                      0x01\r
674 #define ADCCON2_SCH1                      0x02\r
675 #define ADCCON2_SCH2                      0x04\r
676 #define ADCCON2_SCH3                      0x08\r
677 \r
678 #define ADCCON2_SREF_1_25V                (0x00 << 6)\r
679 #define ADCCON2_SREF_P0_7                 (0x01 << 6)\r
680 #define ADCCON2_SREF_AVDD                 (0x02 << 6)\r
681 #define ADCCON2_SREF_P0_6_P0_7            (0x03 << 6)\r
682 \r
683 #define ADCCON2_SDIV_64                   (0x00 << 4)\r
684 #define ADCCON2_SDIV_128                  (0x01 << 4)\r
685 #define ADCCON2_SDIV_256                  (0x02 << 4)\r
686 #define ADCCON2_SDIV_512                  (0x03 << 4)\r
687 \r
688 #define ADCCON2_SCH_AIN0                  (0x00)\r
689 #define ADCCON2_SCH_AIN1                  (0x01)\r
690 #define ADCCON2_SCH_AIN2                  (0x02)\r
691 #define ADCCON2_SCH_AIN3                  (0x03)\r
692 #define ADCCON2_SCH_AIN4                  (0x04)\r
693 #define ADCCON2_SCH_AIN5                  (0x05)\r
694 #define ADCCON2_SCH_AIN6                  (0x06)\r
695 #define ADCCON2_SCH_AIN7                  (0x07)\r
696 #define ADCCON2_SCH_AIN0_1                (0x08)\r
697 #define ADCCON2_SCH_AIN2_3                (0x09)\r
698 #define ADCCON2_SCH_AIN4_5                (0x0A)\r
699 #define ADCCON2_SCH_AIN6_7                (0x0B)\r
700 #define ADCCON2_SCH_GND                   (0x0C)\r
701 #define ADCCON2_SCH_POSVOL                (0x0D)\r
702 #define ADCCON2_SCH_TEMPR                 (0x0E)\r
703 #define ADCCON2_SCH_VDD_3                 (0x0F)\r
704 \r
705 \r
706 // ADCCON3 (0xB6) - ADC Control 3\r
707 #define ADCCON3_EREF                      0xC0\r
708 #define ADCCON3_EREF0                     0x40\r
709 #define ADCCON3_EREF1                     0x80\r
710 #define ADCCON3_EDIV                      0x30\r
711 #define ADCCON3_EDIV0                     0x10\r
712 #define ADCCON3_EDIV1                     0x20\r
713 #define ADCCON2_ECH                       0x0F\r
714 #define ADCCON2_ECH0                      0x01\r
715 #define ADCCON2_ECH1                      0x02\r
716 #define ADCCON2_ECH2                      0x04\r
717 #define ADCCON2_ECH3                      0x08\r
718 \r
719 #define ADCCON3_EREF_1_25V                (0x00 << 6)\r
720 #define ADCCON3_EREF_P0_7                 (0x01 << 6)\r
721 #define ADCCON3_EREF_AVDD                 (0x02 << 6)\r
722 #define ADCCON3_EREF_P0_6_P0_7            (0x03 << 6)\r
723 \r
724 #define ADCCON3_EDIV_64                   (0x00 << 4)\r
725 #define ADCCON3_EDIV_128                  (0x01 << 4)\r
726 #define ADCCON3_EDIV_256                  (0x02 << 4)\r
727 #define ADCCON3_EDIV_512                  (0x03 << 4)\r
728 \r
729 #define ADCCON3_ECH_AIN0                  (0x00)\r
730 #define ADCCON3_ECH_AIN1                  (0x01)\r
731 #define ADCCON3_ECH_AIN2                  (0x02)\r
732 #define ADCCON3_ECH_AIN3                  (0x03)\r
733 #define ADCCON3_ECH_AIN4                  (0x04)\r
734 #define ADCCON3_ECH_AIN5                  (0x05)\r
735 #define ADCCON3_ECH_AIN6                  (0x06)\r
736 #define ADCCON3_ECH_AIN7                  (0x07)\r
737 #define ADCCON3_ECH_AIN0_1                (0x08)\r
738 #define ADCCON3_ECH_AIN2_3                (0x09)\r
739 #define ADCCON3_ECH_AIN4_5                (0x0A)\r
740 #define ADCCON3_ECH_AIN6_7                (0x0B)\r
741 #define ADCCON3_ECH_GND                   (0x0C)\r
742 #define ADCCON3_ECH_POSVOL                (0x0D)\r
743 #define ADCCON3_ECH_TEMPR                 (0x0E)\r
744 #define ADCCON3_ECH_VDD_3                 (0x0F)\r
745 \r
746 \r
747 \r
748 /*******************************************************************************\r
749  * Random Number Generator\r
750  */\r
751 \r
752 // RNDL (0xBC) - Random Number Generator Data Low Byte\r
753 \r
754 // RNDH (0xBD) - Random Number Generator Data High Byte\r
755 \r
756 \r
757 /*******************************************************************************\r
758  * AES\r
759  */\r
760 \r
761 // ENCCS (0xB3) - Encryption Control and Status\r
762 #define ENCCS_MODE                        0x70\r
763 #define ENCCS_MODE0                       0x10\r
764 #define ENCCS_MODE1                       0x20\r
765 #define ENCCS_MODE2                       0x40\r
766 #define ENCCS_RDY                         0x08\r
767 #define ENCCS_CMD                         0x06\r
768 #define ENCCS_CMD0                        0x02\r
769 #define ENCCS_CMD1                        0x04\r
770 #define ENCCS_ST                          0x01\r
771 \r
772 #define ENCCS_MODE_CBC                    (0x00 << 4)\r
773 #define ENCCS_MODE_CFB                    (0x01 << 4)\r
774 #define ENCCS_MODE_OFB                    (0x02 << 4)\r
775 #define ENCCS_MODE_CTR                    (0x03 << 4)\r
776 #define ENCCS_MODE_ECB                    (0x04 << 4)\r
777 #define ENCCS_MODE_CBCMAC                 (0x05 << 4)\r
778 \r
779 #define ENCCS_CMD_ENC                     (0x00 << 1)\r
780 #define ENCCS_CMD_DEC                     (0x01 << 1)\r
781 #define ENCCS_CMD_LDKEY                   (0x02 << 1)\r
782 #define ENCCS_CMD_LDIV                    (0x03 << 1)\r
783 \r
784 \r
785 // ENCDI (0xB1) - Encryption Input Data\r
786 \r
787 // ENCDO (0xB2) - Encryption Output Data\r
788 \r
789 \r
790 /*******************************************************************************\r
791  * Watchdog Timer\r
792  */\r
793 \r
794 // WDCTL (0xC9) - Watchdog Timer Control\r
795 #define WDCTL_CLR                         0xF0\r
796 #define WDCTL_CLR0                        0x10\r
797 #define WDCTL_CLR1                        0x20\r
798 #define WDCTL_CLR2                        0x40\r
799 #define WDCTL_CLR3                        0x80\r
800 #define WDCTL_EN                          0x08\r
801 #define WDCTL_MODE                        0x04\r
802 #define WDCTL_INT                         0x03\r
803 #define WDCTL_INT0                        0x01\r
804 #define WDCTL_INT1                        0x02\r
805 \r
806 \r
807 #define WDCTL_INT_SEC_1                   (0x00)\r
808 #define WDCTL_INT1_MSEC_250               (0x01)\r
809 #define WDCTL_INT2_MSEC_15                (0x02)\r
810 #define WDCTL_INT3_MSEC_2                 (0x03)\r
811 \r
812 \r
813 \r
814 /*******************************************************************************\r
815  * USART\r
816  */\r
817 \r
818 // U0CSR (0x86) - USART 0 Control and Status\r
819 \r
820 #define U0CSR_MODE                        0x80\r
821 #define U0CSR_RE                          0x40\r
822 #define U0CSR_SLAVE                       0x20\r
823 #define U0CSR_FE                          0x10\r
824 #define U0CSR_ERR                         0x08\r
825 #define U0CSR_RX_BYTE                     0x04\r
826 #define U0CSR_TX_BYTE                     0x02\r
827 #define U0CSR_ACTIVE                      0x01\r
828 \r
829 \r
830 // U0UCR (0xC4) - USART 0 UART Control\r
831 #define U0UCR_FLUSH                       0x80\r
832 #define U0UCR_FLOW                        0x40\r
833 #define U0UCR_D9                          0x20\r
834 #define U0UCR_BIT9                        0x10\r
835 #define U0UCR_PARITY                      0x08\r
836 #define U0UCR_SPB                         0x04\r
837 #define U0UCR_STOP                        0x02\r
838 #define U0UCR_START                       0x01\r
839 \r
840 \r
841 // U0GCR (0xC5) - USART 0 Generic Control\r
842 #define U0GCR_CPOL                        0x80\r
843 #define U0GCR_CPHA                        0x40\r
844 #define U0GCR_ORDER                       0x20\r
845 #define U0GCR_BAUD_E                      0x1F\r
846 #define U0GCR_BAUD_E0                     0x01\r
847 #define U0GCR_BAUD_E1                     0x02\r
848 #define U0GCR_BAUD_E2                     0x04\r
849 #define U0GCR_BAUD_E3                     0x08\r
850 #define U0GCR_BAUD_E4                     0x10\r
851 \r
852 \r
853 // U0DBUF (0xC1) - USART 0 Receive/Transmit Data Buffer\r
854 \r
855 // U0BAUD (0xC2) - USART 0 Baud Rate Control\r
856 \r
857 // U1CSR (0xF8) - USART 1 Control and Status - bit accessible SFR register\r
858 #define U1CSR_MODE                        0x80\r
859 #define U1CSR_RE                          0x40\r
860 #define U1CSR_SLAVE                       0x20\r
861 #define U1CSR_FE                          0x10\r
862 #define U1CSR_ERR                         0x08\r
863 #define U1CSR_RX_BYTE                     0x04\r
864 #define U1CSR_TX_BYTE                     0x02\r
865 #define U1CSR_ACTIVE                      0x01\r
866 \r
867 \r
868 // U1UCR (0xFB) - USART 1 UART Control\r
869 #define U1UCR_FLUSH                       0x80\r
870 #define U1UCR_FLOW                        0x40\r
871 #define U1UCR_D9                          0x20\r
872 #define U1UCR_BIT9                        0x10\r
873 #define U1UCR_PARITY                      0x08\r
874 #define U1UCR_SPB                         0x04\r
875 #define U1UCR_STOP                        0x02\r
876 #define U1UCR_START                       0x01\r
877 \r
878 \r
879 // U1GCR (0xFC) - USART 1 Generic Control\r
880 #define U1GCR_CPOL                        0x80\r
881 #define U1GCR_CPHA                        0x40\r
882 #define U1GCR_ORDER                       0x20\r
883 #define U1GCR_BAUD_E                      0x1F\r
884 #define U1GCR_BAUD_E0                     0x01\r
885 #define U1GCR_BAUD_E1                     0x02\r
886 #define U1GCR_BAUD_E2                     0x04\r
887 #define U1GCR_BAUD_E3                     0x08\r
888 #define U1GCR_BAUD_E4                     0x10\r
889 \r
890 \r
891 // U1DBUF (0xF9) - USART 1 Receive/Transmit Data Buffer\r
892 \r
893 // U1BAUD (0xFA) - USART 1 Baud Rate Control\r
894 \r
895 \r
896 /*******************************************************************************\r
897  * I2S\r
898  */\r
899 \r
900 // 0xDF40: I2SCFG0 - I2S Configuration Register 0\r
901 #define I2SCFG0_TXIEN                     0x80\r
902 #define I2SCFG0_RXIEN                     0x40\r
903 #define I2SCFG0_ULAWE                     0x20\r
904 #define I2SCFG0_ULAWC                     0x10\r
905 #define I2SCFG0_TXMONO                    0x08\r
906 #define I2SCFG0_RXMONO                    0x04\r
907 #define I2SCFG0_MASTER                    0x02\r
908 #define I2SCFG0_ENAB                      0x01\r
909 \r
910 \r
911 // 0xDF41: I2SCFG1 - I2S Configuration Register 1\r
912 #define I2SCFG1_WORDS                     0xF8\r
913 #define I2SCFG1_WORDS0                    0x08\r
914 #define I2SCFG1_WORDS1                    0x10\r
915 #define I2SCFG1_WORDS2                    0x20\r
916 #define I2SCFG1_WORDS3                    0x40\r
917 #define I2SCFG1_WORDS4                    0x80\r
918 #define I2SCFG1_TRIGNUM                   0x06\r
919 #define I2SCFG1_TRIGNUM0                  0x02\r
920 #define I2SCFG1_TRIGNUM1                  0x04\r
921 #define I2SCFG1_IOLOC                     0x01\r
922 \r
923 #define I2SCFG1_TRIGNUM_NO_TRIG           (0x00 << 1)\r
924 #define I2SCFG1_TRIGNUM_USB_SOF           (0x01 << 1)\r
925 #define I2SCFG1_TRIGNUM_IOC_1             (0x02 << 1)\r
926 #define I2SCFG1_TRIGNUM_T1_CH0            (0x03 << 1)\r
927 \r
928 \r
929 \r
930 // 0xDF42: I2SDATL - I2S Data Low Byte\r
931 \r
932 // 0xDF43: I2SDATH - I2S Data High Byte\r
933 \r
934 // 0xDF44: I2SWCNT - I2S Word Count Register\r
935 \r
936 // 0xDF45: I2SSTAT - I2S Status Register\r
937 #define I2SSTAT_TXUNF                     0x80\r
938 #define I2SSTAT_RXOVF                     0x40\r
939 #define I2SSTAT_TXLR                      0x20\r
940 #define I2SSTAT_RXLR                      0x10\r
941 #define I2SSTAT_TXIRQ                     0x08\r
942 #define I2SSTAT_RXIRQ                     0x04\r
943 #define I2SSTAT_WCNT                      0x03\r
944 #define I2SSTAT_WCNT0                     0x01\r
945 #define I2SSTAT_WCNT1                     0x02\r
946 \r
947 #define I2SSTAT_WCNT_10BIT                (0x02)\r
948 #define I2SSTAT_WCNT_9BIT                 (0x01)\r
949 #define I2SSTAT_WCNT_9_10BIT              (0x02)\r
950 \r
951 \r
952 // 0xDF46: I2SCLKF0 - I2S Clock Configuration Register 0\r
953 \r
954 // 0xDF47: I2SCLKF1 - I2S Clock Configuration Register 1\r
955 \r
956 // 0xDF48: I2SCLKF2 - I2S Clock Configuration Register 2\r
957 \r
958 \r
959 \r
960 \r
961 /*******************************************************************************\r
962  * Radio Registers\r
963  */\r
964 \r
965 // RFIF (0xE9) - RF Interrupt Flags\r
966 #define RFIF_IRQ_TXUNF                    0x80\r
967 #define RFIF_IRQ_RXOVF                    0x40\r
968 #define RFIF_IRQ_TIMEOUT                  0x20\r
969 #define RFIF_IRQ_DONE                     0x10\r
970 #define RFIF_IRQ_CS                       0x08\r
971 #define RFIF_IRQ_PQT                      0x04\r
972 #define RFIF_IRQ_CCA                      0x02\r
973 #define RFIF_IRQ_SFD                      0x01\r
974 \r
975 \r
976 // RFIM (0x91) - RF Interrupt Mask\r
977 #define RFIM_IM_TXUNF                     0x80\r
978 #define RFIM_IM_RXOVF                     0x40\r
979 #define RFIM_IM_TIMEOUT                   0x20\r
980 #define RFIM_IM_DONE                      0x10\r
981 #define RFIM_IM_CS                        0x08\r
982 #define RFIM_IM_PQT                       0x04\r
983 #define RFIM_IM_CCA                       0x02\r
984 #define RFIM_IM_SFD                       0x01\r
985 \r
986 \r
987 // 0xDF2F: IOCFG2 - Radio Test Signal Configuration (P1_7)\r
988 #define IOCFG2_GDO2_INV                   0x40\r
989 #define IOCFG2_GDO2_CFG                   0x3F\r
990 \r
991 \r
992 // 0xDF30: IOCFG1 - Radio Test Signal Configuration (P1_6)\r
993 #define IOCFG1_GDO_DS                     0x80\r
994 #define IOCFG1_GDO1_INV                   0x40\r
995 #define IOCFG1_GDO1_CFG                   0x3F\r
996 \r
997 \r
998 // 0xDF31: IOCFG0 - Radio Test Signal Configuration (P1_5)\r
999 #define IOCFG0_GDO0_INV                   0x40\r
1000 #define IOCFG0_GDO0_CFG                   0x3F\r
1001 \r
1002 \r
1003 // 0xDF03: PKTCTRL1 - Packet Automation Control\r
1004 #define PKTCTRL1_PQT                      0xE0\r
1005 #define PKTCTRL1_PQT0                     0x20\r
1006 #define PKTCTRL1_PQT1                     0x40\r
1007 #define PKTCTRL1_PQT2                     0x80\r
1008 #define PKTCTRL1_APPEND_STATUS            0x04\r
1009 #define PKTCTRL1_ADR_CHK                  0x03\r
1010 #define PKTCTRL1_ADR_CHK0                 0x01\r
1011 #define PKTCTRL1_ADR_CHK1                 0x02\r
1012 \r
1013 #define ADR_CHK_NONE                      (0x00)\r
1014 #define ADR_CHK_NO_BRDCST                 (0x01)\r
1015 #define ADR_CHK_0_BRDCST                  (0x02)\r
1016 #define ADR_CHK_0_255_BRDCST              (0x03)\r
1017 \r
1018 \r
1019 // 0xDF04: PKTCTRL0 - Packet Automation Control\r
1020 #define PKTCTRL0_WHITE_DATA               0x40\r
1021 #define PKTCTRL0_PKT_FORMAT               0x30\r
1022 #define PKTCTRL0_PKT_FORMAT0              0x10\r
1023 #define PKTCTRL0_PKT_FORMAT1              0x20\r
1024 #define PKTCTRL0_CC2400_EN                0x08\r
1025 #define PKTCTRL0_CRC_EN                   0x04\r
1026 #define PKTCTRL0_LENGTH_CONFIG            0x03\r
1027 #define PKTCTRL0_LENGTH_CONFIG0           0x01\r
1028 \r
1029 #define PKT_FORMAT_NORM                   (0x00)\r
1030 #define PKT_FORMAT_RAND                   (0x02)\r
1031 \r
1032 #define PKTCTRL0_LENGTH_CONFIG_FIX        (0x00)\r
1033 #define PKTCTRL0_LENGTH_CONFIG_VAR        (0x01)\r
1034 \r
1035 \r
1036 // 0xDF05: ADDR - Device Address\r
1037 \r
1038 // 0xDF06: CHANNR - Channel Number\r
1039 \r
1040 // 0xDF07: FSCTRL1 - Frequency Synthesizer Control (only bit 0-4 used)\r
1041 \r
1042 // 0xDF08: FSCTRL0 - Frequency Synthesizer Control\r
1043 \r
1044 // 0xDF09: FREQ2 - Frequency Control Word, High Byte\r
1045 \r
1046 // 0xDF0A: FREQ1 - Frequency Control Word, Middle Byte\r
1047 \r
1048 // 0xDF0B: FREQ0 - Frequency Control Word, Low Byte\r
1049 \r
1050 // 0xDF0C: MDMCFG4 - Modem configuration\r
1051 \r
1052 // 0xDF0D: MDMCFG3 - Modem Configuration\r
1053 \r
1054 // 0xDF0E: MDMCFG2 - Modem Configuration\r
1055 #define MDMCFG2_DEM_DCFILT_OFF            0x80\r
1056 #define MDMCFG2_MOD_FORMAT                0x70\r
1057 #define MDMCFG2_MOD_FORMAT0               0x10\r
1058 #define MDMCFG2_MOD_FORMAT1               0x20\r
1059 #define MDMCFG2_MOD_FORMAT2               0x40\r
1060 #define MDMCFG2_MANCHESTER_EN             0x08\r
1061 #define MDMCFG2_SYNC_MODE                 0x07\r
1062 #define MDMCFG2_SYNC_MODE0                0x01\r
1063 #define MDMCFG2_SYNC_MODE1                0x02\r
1064 #define MDMCFG2_SYNC_MODE2                0x04\r
1065 \r
1066 #define MOD_FORMAT_2_FSK                  (0x00 << 4)\r
1067 #define MOD_FORMAT_GFSK                   (0x01 << 4)\r
1068 #define MOD_FORMAT_MSK                    (0x07 << 4)\r
1069 \r
1070 #define SYNC_MODE_NO_PRE                  (0x00)\r
1071 #define SYNC_MODE_15_16                   (0x01)\r
1072 #define SYNC_MODE_16_16                   (0x02)\r
1073 #define SYNC_MODE_30_32                   (0x03)\r
1074 #define SYNC_MODE_NO_PRE_CS               (0x04)    // CS = carrier-sense above threshold\r
1075 #define SYNC_MODE_15_16_CS                (0x05)\r
1076 #define SYNC_MODE_16_16_CS                (0x06)\r
1077 #define SYNC_MODE_30_32_CS                (0x07)\r
1078 \r
1079 \r
1080 // 0xDF0F: MDMCG1 - Modem Configuration\r
1081 #define MDMCG1_FEC_EN                     0x80\r
1082 #define MDMCG1_NUM_PREAMBLE               0x70\r
1083 #define MDMCG1_NUM_PREAMBLE0              0x10\r
1084 #define MDMCG1_NUM_PREAMBLE1              0x20\r
1085 #define MDMCG1_NUM_PREAMBLE2              0x40\r
1086 #define MDMCG1_CHANSPC_E                  0x03\r
1087 #define MDMCG1_CHANSPC_E0                 0x01\r
1088 #define MDMCG1_CHANSPC_E1                 0x02\r
1089 \r
1090 #define MDMCG1_NUM_PREAMBLE_2             (0x00 << 4)\r
1091 #define MDMCG1_NUM_PREAMBLE_3             (0x01 << 4)\r
1092 #define MDMCG1_NUM_PREAMBLE_4             (0x02 << 4)\r
1093 #define MDMCG1_NUM_PREAMBLE_6             (0x03 << 4)\r
1094 #define MDMCG1_NUM_PREAMBLE_8             (0x04 << 4)\r
1095 #define MDMCG1_NUM_PREAMBLE_12            (0x05 << 4)\r
1096 #define MDMCG1_NUM_PREAMBLE_16            (0x06 << 4)\r
1097 #define MDMCG1_NUM_PREAMBLE_24            (0x07 << 4)\r
1098 \r
1099 \r
1100 // 0xDF10: MDMCFG0 - Modem Configuration\r
1101 \r
1102 // 0xDF11: DEVIATN - Modem Deviation Setting\r
1103 #define DEVIATN_DEVIATION_E               0x70\r
1104 #define DEVIATN_DEVIATION_E0              0x10\r
1105 #define DEVIATN_DEVIATION_E1              0x20\r
1106 #define DEVIATN_DEVIATION_E2              0x40\r
1107 #define DEVIATN_DEVIATION_M               0x07\r
1108 #define DEVIATN_DEVIATION_M0              0x01\r
1109 #define DEVIATN_DEVIATION_M1              0x02\r
1110 #define DEVIATN_DEVIATION_M2              0x04\r
1111 \r
1112 \r
1113 // 0xDF12: MCSM2 - Main Radio Control State Machine Configuration\r
1114 #define MCSM2_RX_TIME_RSSI                0x10\r
1115 #define MCSM2_RX_TIME_QUAL                0x08\r
1116 #define MCSM2_RX_TIME                     0x07\r
1117 \r
1118 \r
1119 // 0xDF13: MCSM1 - Main Radio Control State Machine Configuration\r
1120 #define MCSM1_CCA_MODE                    0x30\r
1121 #define MCSM1_CCA_MODE0                   0x10\r
1122 #define MCSM1_CCA_MODE1                   0x20\r
1123 #define MCSM1_RXOFF_MODE                  0x0C\r
1124 #define MCSM1_RXOFF_MODE0                 0x04\r
1125 #define MCSM1_RXOFF_MODE1                 0x08\r
1126 #define MCSM1_TXOFF_MODE                  0x03\r
1127 #define MCSM1_TXOFF_MODE0                 0x01\r
1128 #define MCSM1_TXOFF_MODE1                 0x02\r
1129 \r
1130 #define MCSM1_CCA_MODE_ALWAYS             (0x00 << 4)\r
1131 #define MCSM1_CCA_MODE_RSSI0              (0x01 << 4)\r
1132 #define MCSM1_CCA_MODE_PACKET             (0x02 << 4)\r
1133 #define MCSM1_CCA_MODE_RSSI1              (0x03 << 4)\r
1134 \r
1135 #define MCSM1_RXOFF_MODE_IDLE             (0x00 << 2)\r
1136 #define MCSM1_RXOFF_MODE_FSTXON           (0x01 << 2)\r
1137 #define MCSM1_RXOFF_MODE_TX               (0x02 << 2)\r
1138 #define MCSM1_RXOFF_MODE_RX               (0x03 << 2)\r
1139 \r
1140 #define MCSM1_TXOFF_MODE_IDLE             (0x00 << 0)\r
1141 #define MCSM1_TXOFF_MODE_FSTXON           (0x01 << 0)\r
1142 #define MCSM1_TXOFF_MODE_TX               (0x02 << 0)\r
1143 #define MCSM1_TXOFF_MODE_RX               (0x03 << 0)\r
1144 \r
1145 \r
1146 // 0xDF14: MCSM0 - Main Radio Control State Machine Configuration\r
1147 #define MCSM0_FS_AUTOCAL                  0x30\r
1148 \r
1149 #define FS_AUTOCAL_NEVER                  (0x00 << 4)\r
1150 #define FS_AUTOCAL_FROM_IDLE              (0x01 << 4)\r
1151 #define FS_AUTOCAL_TO_IDLE                (0x02 << 4)\r
1152 #define FS_AUTOCAL_4TH_TO_IDLE            (0x03 << 4)\r
1153 \r
1154 \r
1155 // 0xDF15: FOCCFG - Frequency Offset Compensation Configuration\r
1156 #define FOCCFG_FOC_BS_CS_GATE             0x20\r
1157 #define FOCCFG_FOC_PRE_K                  0x18\r
1158 #define FOCCFG_FOC_PRE_K0                 0x08\r
1159 #define FOCCFG_FOC_PRE_K1                 0x10\r
1160 #define FOCCFG_FOC_POST_K                 0x04\r
1161 #define FOCCFG_FOC_LIMIT                  0x03\r
1162 #define FOCCFG_FOC_LIMIT0                 0x01\r
1163 #define FOCCFG_FOC_LIMIT1                 0x02\r
1164 \r
1165 #define FOC_PRE_K_1K                      (0x00 << 3)\r
1166 #define FOC_PRE_K_2K                      (0x02 << 3)\r
1167 #define FOC_PRE_K_3K                      (0x03 << 3)\r
1168 #define FOC_PRE_K_4K                      (0x04 << 3)\r
1169 \r
1170 #define FOC_LIMIT_0                       (0x00)\r
1171 #define FOC_LIMIT_DIV8                    (0x01)\r
1172 #define FOC_LIMIT_DIV4                    (0x02)\r
1173 #define FOC_LIMIT_DIV2                    (0x03)\r
1174 \r
1175 \r
1176 // 0xDF16: BSCFG - Bit Synchronization Configuration\r
1177 #define BSCFG_BS_PRE_KI                   0xC0\r
1178 #define BSCFG_BS_PRE_KI0                  0x40\r
1179 #define BSCFG_BS_PRE_KI1                  0x80\r
1180 #define BSCFG_BS_PRE_KP                   0x30\r
1181 #define BSCFG_BS_PRE_KP0                  0x10\r
1182 #define BSCFG_BS_PRE_KP1                  0x20\r
1183 #define BSCFG_BS_POST_KI                  0x08\r
1184 #define BSCFG_BS_POST_KP                  0x04\r
1185 #define BSCFG_BS_LIMIT                    0x03\r
1186 #define BSCFG_BS_LIMIT0                   0x01\r
1187 #define BSCFG_BS_LIMIT1                   0x02\r
1188 \r
1189 #define BSCFG_BS_PRE_KI_1K                (0x00 << 6)\r
1190 #define BSCFG_BS_PRE_KI_2K                (0x01 << 6)\r
1191 #define BSCFG_BS_PRE_KI_3K                (0x02 << 6)\r
1192 #define BSCFG_BS_PRE_KI_4K                (0x03 << 6)\r
1193 \r
1194 #define BSCFG_BS_PRE_KP_1K                (0x00 << 4)\r
1195 #define BSCFG_BS_PRE_KP_2K                (0x01 << 4)\r
1196 #define BSCFG_BS_PRE_KP_3K                (0x02 << 4)\r
1197 #define BSCFG_BS_PRE_KP_4K                (0x03 << 4)\r
1198 \r
1199 #define BSCFG_BS_LIMIT_0                  (0x00)\r
1200 #define BSCFG_BS_LIMIT_3                  (0x01)\r
1201 #define BSCFG_BS_LIMIT_6                  (0x02)\r
1202 #define BSCFG_BS_LIMIT_12                 (0x03)\r
1203 \r
1204 \r
1205 // 0xDF17: AGCCTRL2 - AGC Control\r
1206 #define AGCCTRL2_MAX_DVGA_GAIN            0xC0\r
1207 #define AGCCTRL2_MAX_LNA_GAIN             0x38\r
1208 #define AGCCTRL2_MAGN_TARGET              0x07\r
1209 \r
1210 \r
1211 // 0xDF18: AGCCTRL1 - AGC Control\r
1212 #define AGCCTRL1_AGC_LNA_PRIORITY         0x40\r
1213 #define AGCCTRL1_CARRIER_SENSE_REL_THR    0x30\r
1214 #define AGCCTRL1_CARRIER_SENSE_ABS_THR    0x0F\r
1215 \r
1216 \r
1217 // 0xDF19: AGCCTRL0 - AGC Control\r
1218 #define AGCCTRL0_HYST_LEVEL               0xC0\r
1219 #define AGCCTRL0_WAIT_TIME                0x30\r
1220 #define AGCCTRL0_AGC_FREEZE               0x0C\r
1221 #define AGCCTRL0_FILTER_LENGTH            0x03\r
1222 \r
1223 \r
1224 // 0xDF1A: FREND1 - Front End RX Configuration\r
1225 #define FREND1_LNA_CURRENT                0xC0\r
1226 #define FREND1_LNA2MIX_CURRENT            0x30\r
1227 #define FREND1_LODIV_BUF_CURRENT_RX       0x0C\r
1228 #define FREND1_MIX_CURRENT                0x03\r
1229 \r
1230 \r
1231 // 0xDF1B: FREND0 - Front End TX Configuration\r
1232 #define FREND0_LODIV_BUF_CURRENT_TX       0x30\r
1233 \r
1234 \r
1235 // 0xDF1C: FSCAL3 - Frequency Synthesizer Calibration\r
1236 #define FSCAL3_FSCAL3                     0xC0\r
1237 #define FSCAL3_CHP_CURR_CAL_EN            0x30\r
1238 \r
1239 \r
1240 // 0xDF1D: FSCAL2 - Frequency Synthesizer Calibration\r
1241 #define FSCAL2_VCO_CORE_H_EN              0x20\r
1242 #define FSCAL2_FSCAL2                     0x1F\r
1243 \r
1244 \r
1245 // 0xDF1E: FSCAL1 - Frequency Synthesizer Calibration\r
1246 \r
1247 // 0xDF1F: FSCAL0 - Frequency Synthesizer Calibration\r
1248 \r
1249 // 0xDF25: TEST0 - Various Test Settings\r
1250 \r
1251 \r
1252 // RFST (0xE1) - RF Strobe Commands\r
1253 #define RFST_SFSTXON                      0x00\r
1254 #define RFST_SCAL                         0x01\r
1255 #define RFST_SRX                          0x02\r
1256 #define RFST_STX                          0x03\r
1257 #define RFST_SIDLE                        0x04\r
1258 #define RFST_SNOP                         0x05\r
1259 \r
1260 // 0xDF3B: MARCSTATE - Main Radio Control State Machine State\r
1261 #define MARCSTATE_MARC_STATE              0x1F\r
1262 \r
1263 #define MARC_STATE_SLEEP                  0x00\r
1264 #define MARC_STATE_IDLE                   0x01\r
1265 #define MARC_STATE_VCOON_MC               0x03\r
1266 #define MARC_STATE_REGON_MC               0x04\r
1267 #define MARC_STATE_MANCAL                 0x05\r
1268 #define MARC_STATE_VCOON                  0x06\r
1269 #define MARC_STATE_REGON                  0x07\r
1270 #define MARC_STATE_STARTCAL               0x08\r
1271 #define MARC_STATE_BWBOOST                0x09\r
1272 #define MARC_STATE_FS_LOCK                0x0A\r
1273 #define MARC_STATE_IFADCON                0x0B\r
1274 #define MARC_STATE_ENDCAL                 0x0C\r
1275 #define MARC_STATE_RX                     0x0D\r
1276 #define MARC_STATE_RX_END                 0x0E\r
1277 #define MARC_STATE_RX_RST                 0x0F\r
1278 #define MARC_STATE_TXRX_SWITCH            0x10\r
1279 #define MARC_STATE_RX_OVERFLOW            0x11\r
1280 #define MARC_STATE_FSTXON                 0x12\r
1281 #define MARC_STATE_TX                     0x13\r
1282 #define MARC_STATE_TX_END                 0x14\r
1283 #define MARC_STATE_RXTX_SWITCH            0x15\r
1284 #define MARC_STATE_TX_UNDERFLOW           0x16\r
1285 \r
1286 \r
1287 \r
1288 /***********************************************************************/\r
1289 #endif\r