]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/Common/drivers/LuminaryMicro/hw_i2c.h
Add FreeRTOS-Plus directory.
[freertos] / FreeRTOS / Demo / Common / drivers / LuminaryMicro / hw_i2c.h
1 //*****************************************************************************\r
2 //\r
3 // hw_i2c.h - Macros used when accessing the I2C master and slave hardware.\r
4 //\r
5 // Copyright (c) 2005-2008 Luminary Micro, Inc.  All rights reserved.\r
6 // \r
7 // Software License Agreement\r
8 // \r
9 // Luminary Micro, Inc. (LMI) is supplying this software for use solely and\r
10 // exclusively on LMI's microcontroller products.\r
11 // \r
12 // The software is owned by LMI and/or its suppliers, and is protected under\r
13 // applicable copyright laws.  All rights are reserved.  You may not combine\r
14 // this software with "viral" open-source software in order to form a larger\r
15 // program.  Any use in violation of the foregoing restrictions may subject\r
16 // the user to criminal sanctions under applicable laws, as well as to civil\r
17 // liability for the breach of the terms and conditions of this license.\r
18 // \r
19 // THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED\r
20 // OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF\r
21 // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.\r
22 // LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR\r
23 // CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.\r
24 // \r
25 // This is part of revision 2523 of the Stellaris Peripheral Driver Library.\r
26 //\r
27 //*****************************************************************************\r
28 \r
29 #ifndef __HW_I2C_H__\r
30 #define __HW_I2C_H__\r
31 \r
32 //*****************************************************************************\r
33 //\r
34 // The following are defines for the offsets between the I2C master and slave\r
35 // registers.\r
36 //\r
37 //*****************************************************************************\r
38 #define I2C_O_MSA               0x00000000  // I2C Master Slave Address\r
39 #define I2C_O_SOAR              0x00000000  // I2C Slave Own Address\r
40 #define I2C_O_SCSR              0x00000004  // I2C Slave Control/Status\r
41 #define I2C_O_MCS               0x00000004  // I2C Master Control/Status\r
42 #define I2C_O_SDR               0x00000008  // I2C Slave Data\r
43 #define I2C_O_MDR               0x00000008  // I2C Master Data\r
44 #define I2C_O_MTPR              0x0000000C  // I2C Master Timer Period\r
45 #define I2C_O_SIMR              0x0000000C  // I2C Slave Interrupt Mask\r
46 #define I2C_O_SRIS              0x00000010  // I2C Slave Raw Interrupt Status\r
47 #define I2C_O_MIMR              0x00000010  // I2C Master Interrupt Mask\r
48 #define I2C_O_MRIS              0x00000014  // I2C Master Raw Interrupt Status\r
49 #define I2C_O_SMIS              0x00000014  // I2C Slave Masked Interrupt\r
50                                             // Status\r
51 #define I2C_O_SICR              0x00000018  // I2C Slave Interrupt Clear\r
52 #define I2C_O_MMIS              0x00000018  // I2C Master Masked Interrupt\r
53                                             // Status\r
54 #define I2C_O_MICR              0x0000001C  // I2C Master Interrupt Clear\r
55 #define I2C_O_MCR               0x00000020  // I2C Master Configuration\r
56 \r
57 //*****************************************************************************\r
58 //\r
59 // The following are defines for the bit fields in the I2C_O_MSA register.\r
60 //\r
61 //*****************************************************************************\r
62 #define I2C_MSA_SA_M            0x000000FE  // I2C Slave Address.\r
63 #define I2C_MSA_RS              0x00000001  // Receive not Send\r
64 #define I2C_MSA_SA_S            1\r
65 \r
66 //*****************************************************************************\r
67 //\r
68 // The following are defines for the bit fields in the I2C_O_SOAR register.\r
69 //\r
70 //*****************************************************************************\r
71 #define I2C_SOAR_OAR_M          0x0000007F  // I2C Slave Own Address.\r
72 #define I2C_SOAR_OAR_S          0\r
73 \r
74 //*****************************************************************************\r
75 //\r
76 // The following are defines for the bit fields in the I2C_O_SCSR register.\r
77 //\r
78 //*****************************************************************************\r
79 #define I2C_SCSR_FBR            0x00000004  // First Byte Received.\r
80 #define I2C_SCSR_TREQ           0x00000002  // Transmit Request.\r
81 #define I2C_SCSR_DA             0x00000001  // Device Active.\r
82 #define I2C_SCSR_RREQ           0x00000001  // Receive Request.\r
83 \r
84 //*****************************************************************************\r
85 //\r
86 // The following are defines for the bit fields in the I2C_O_MCS register.\r
87 //\r
88 //*****************************************************************************\r
89 #define I2C_MCS_BUSBSY          0x00000040  // Bus Busy.\r
90 #define I2C_MCS_IDLE            0x00000020  // I2C Idle.\r
91 #define I2C_MCS_ARBLST          0x00000010  // Arbitration Lost.\r
92 #define I2C_MCS_ACK             0x00000008  // Data Acknowledge Enable.\r
93 #define I2C_MCS_DATACK          0x00000008  // Acknowledge Data.\r
94 #define I2C_MCS_ADRACK          0x00000004  // Acknowledge Address.\r
95 #define I2C_MCS_STOP            0x00000004  // Generate STOP.\r
96 #define I2C_MCS_START           0x00000002  // Generate START.\r
97 #define I2C_MCS_ERROR           0x00000002  // Error.\r
98 #define I2C_MCS_RUN             0x00000001  // I2C Master Enable.\r
99 #define I2C_MCS_BUSY            0x00000001  // I2C Busy.\r
100 \r
101 //*****************************************************************************\r
102 //\r
103 // The following are defines for the bit fields in the I2C_O_SDR register.\r
104 //\r
105 //*****************************************************************************\r
106 #define I2C_SDR_DATA_M          0x000000FF  // Data for Transfer.\r
107 #define I2C_SDR_DATA_S          0\r
108 \r
109 //*****************************************************************************\r
110 //\r
111 // The following are defines for the bit fields in the I2C_O_MDR register.\r
112 //\r
113 //*****************************************************************************\r
114 #define I2C_MDR_DATA_M          0x000000FF  // Data Transferred.\r
115 #define I2C_MDR_DATA_S          0\r
116 \r
117 //*****************************************************************************\r
118 //\r
119 // The following are defines for the bit fields in the I2C_O_MTPR register.\r
120 //\r
121 //*****************************************************************************\r
122 #define I2C_MTPR_TPR_M          0x000000FF  // SCL Clock Period.\r
123 #define I2C_MTPR_TPR_S          0\r
124 \r
125 //*****************************************************************************\r
126 //\r
127 // The following are defines for the bit fields in the I2C_O_SIMR register.\r
128 //\r
129 //*****************************************************************************\r
130 #define I2C_SIMR_STOPIM         0x00000004  // Stop Condition Interrupt Mask.\r
131 #define I2C_SIMR_STARTIM        0x00000002  // Start Condition Interrupt Mask.\r
132 #define I2C_SIMR_DATAIM         0x00000001  // Data Interrupt Mask.\r
133 \r
134 //*****************************************************************************\r
135 //\r
136 // The following are defines for the bit fields in the I2C_O_SRIS register.\r
137 //\r
138 //*****************************************************************************\r
139 #define I2C_SRIS_STOPRIS        0x00000004  // Stop Condition Raw Interrupt\r
140                                             // Status.\r
141 #define I2C_SRIS_STARTRIS       0x00000002  // Start Condition Raw Interrupt\r
142                                             // Status.\r
143 #define I2C_SRIS_DATARIS        0x00000001  // Data Raw Interrupt Status.\r
144 \r
145 //*****************************************************************************\r
146 //\r
147 // The following are defines for the bit fields in the I2C_O_MIMR register.\r
148 //\r
149 //*****************************************************************************\r
150 #define I2C_MIMR_IM             0x00000001  // Interrupt Mask.\r
151 \r
152 //*****************************************************************************\r
153 //\r
154 // The following are defines for the bit fields in the I2C_O_MRIS register.\r
155 //\r
156 //*****************************************************************************\r
157 #define I2C_MRIS_RIS            0x00000001  // Raw Interrupt Status.\r
158 \r
159 //*****************************************************************************\r
160 //\r
161 // The following are defines for the bit fields in the I2C_O_SMIS register.\r
162 //\r
163 //*****************************************************************************\r
164 #define I2C_SMIS_STOPMIS        0x00000004  // Stop Condition Masked Interrupt\r
165                                             // Status.\r
166 #define I2C_SMIS_STARTMIS       0x00000002  // Start Condition Masked Interrupt\r
167                                             // Status.\r
168 #define I2C_SMIS_DATAMIS        0x00000001  // Data Masked Interrupt Status.\r
169 \r
170 //*****************************************************************************\r
171 //\r
172 // The following are defines for the bit fields in the I2C_O_SICR register.\r
173 //\r
174 //*****************************************************************************\r
175 #define I2C_SICR_STOPIC         0x00000004  // Stop Condition Interrupt Clear.\r
176 #define I2C_SICR_STARTIC        0x00000002  // Start Condition Interrupt Clear.\r
177 #define I2C_SICR_DATAIC         0x00000001  // Data Clear Interrupt.\r
178 \r
179 //*****************************************************************************\r
180 //\r
181 // The following are defines for the bit fields in the I2C_O_MMIS register.\r
182 //\r
183 //*****************************************************************************\r
184 #define I2C_MMIS_MIS            0x00000001  // Masked Interrupt Status.\r
185 \r
186 //*****************************************************************************\r
187 //\r
188 // The following are defines for the bit fields in the I2C_O_MICR register.\r
189 //\r
190 //*****************************************************************************\r
191 #define I2C_MICR_IC             0x00000001  // Interrupt Clear.\r
192 \r
193 //*****************************************************************************\r
194 //\r
195 // The following are defines for the bit fields in the I2C_O_MCR register.\r
196 //\r
197 //*****************************************************************************\r
198 #define I2C_MCR_SFE             0x00000020  // I2C Slave Function Enable.\r
199 #define I2C_MCR_MFE             0x00000010  // I2C Master Function Enable.\r
200 #define I2C_MCR_LPBK            0x00000001  // I2C Loopback.\r
201 \r
202 //*****************************************************************************\r
203 //\r
204 // The following definitions are deprecated.\r
205 //\r
206 //*****************************************************************************\r
207 #ifndef DEPRECATED\r
208 \r
209 //*****************************************************************************\r
210 //\r
211 // The following are deprecated defines for the offsets between the I2C master\r
212 // and slave registers.\r
213 //\r
214 //*****************************************************************************\r
215 #define I2C_O_SLAVE             0x00000800  // Offset from master to slave\r
216 \r
217 //*****************************************************************************\r
218 //\r
219 // The following are deprecated defines for the I2C master register offsets.\r
220 //\r
221 //*****************************************************************************\r
222 #define I2C_MASTER_O_SA         0x00000000  // Slave address register\r
223 #define I2C_MASTER_O_CS         0x00000004  // Control and Status register\r
224 #define I2C_MASTER_O_DR         0x00000008  // Data register\r
225 #define I2C_MASTER_O_TPR        0x0000000C  // Timer period register\r
226 #define I2C_MASTER_O_IMR        0x00000010  // Interrupt mask register\r
227 #define I2C_MASTER_O_RIS        0x00000014  // Raw interrupt status register\r
228 #define I2C_MASTER_O_MIS        0x00000018  // Masked interrupt status reg\r
229 #define I2C_MASTER_O_MICR       0x0000001C  // Interrupt clear register\r
230 #define I2C_MASTER_O_CR         0x00000020  // Configuration register\r
231 \r
232 //*****************************************************************************\r
233 //\r
234 // The following are deprecated defines for the I2C slave register offsets.\r
235 //\r
236 //*****************************************************************************\r
237 #define I2C_SLAVE_O_SICR        0x00000018  // Interrupt clear register\r
238 #define I2C_SLAVE_O_MIS         0x00000014  // Masked interrupt status reg\r
239 #define I2C_SLAVE_O_RIS         0x00000010  // Raw interrupt status register\r
240 #define I2C_SLAVE_O_IM          0x0000000C  // Interrupt mask register\r
241 #define I2C_SLAVE_O_DR          0x00000008  // Data register\r
242 #define I2C_SLAVE_O_CSR         0x00000004  // Control/Status register\r
243 #define I2C_SLAVE_O_OAR         0x00000000  // Own address register\r
244 \r
245 //*****************************************************************************\r
246 //\r
247 // The following are deprecated defines for the bit fields in the I2C master\r
248 // slave address register.\r
249 //\r
250 //*****************************************************************************\r
251 #define I2C_MASTER_SA_SA_MASK   0x000000FE  // Slave address\r
252 #define I2C_MASTER_SA_RS        0x00000001  // Receive/send\r
253 #define I2C_MASTER_SA_SA_SHIFT  1\r
254 \r
255 //*****************************************************************************\r
256 //\r
257 // The following are deprecated defines for the bit fields in the I2C Master\r
258 // Control and Status register.\r
259 //\r
260 //*****************************************************************************\r
261 #define I2C_MASTER_CS_BUS_BUSY  0x00000040  // Bus busy\r
262 #define I2C_MASTER_CS_IDLE      0x00000020  // Idle\r
263 #define I2C_MASTER_CS_ERR_MASK  0x0000001C\r
264 #define I2C_MASTER_CS_BUSY      0x00000001  // Controller is TX/RX data\r
265 #define I2C_MASTER_CS_ERROR     0x00000002  // Error occurred\r
266 #define I2C_MASTER_CS_ADDR_ACK  0x00000004  // Address byte not acknowledged\r
267 #define I2C_MASTER_CS_DATA_ACK  0x00000008  // Data byte not acknowledged\r
268 #define I2C_MASTER_CS_ARB_LOST  0x00000010  // Lost arbitration\r
269 #define I2C_MASTER_CS_ACK       0x00000008  // Acknowlegde\r
270 #define I2C_MASTER_CS_STOP      0x00000004  // Stop\r
271 #define I2C_MASTER_CS_START     0x00000002  // Start\r
272 #define I2C_MASTER_CS_RUN       0x00000001  // Run\r
273 \r
274 //*****************************************************************************\r
275 //\r
276 // The following are deprecated defines for the values used in determining the\r
277 // contents of the I2C Master Timer Period register.\r
278 //\r
279 //*****************************************************************************\r
280 #define I2C_SCL_FAST            400000      // SCL fast frequency\r
281 #define I2C_SCL_STANDARD        100000      // SCL standard frequency\r
282 #define I2C_MASTER_TPR_SCL_LP   0x00000006  // SCL low period\r
283 #define I2C_MASTER_TPR_SCL_HP   0x00000004  // SCL high period\r
284 #define I2C_MASTER_TPR_SCL      (I2C_MASTER_TPR_SCL_HP + I2C_MASTER_TPR_SCL_LP)\r
285 \r
286 //*****************************************************************************\r
287 //\r
288 // The following are deprecated defines for the bit fields in the I2C Master\r
289 // Interrupt Mask register.\r
290 //\r
291 //*****************************************************************************\r
292 #define I2C_MASTER_IMR_IM       0x00000001  // Master interrupt mask\r
293 \r
294 //*****************************************************************************\r
295 //\r
296 // The following are deprecated defines for the bit fields in the I2C Master\r
297 // Raw Interrupt Status register.\r
298 //\r
299 //*****************************************************************************\r
300 #define I2C_MASTER_RIS_RIS      0x00000001  // Master raw interrupt status\r
301 \r
302 //*****************************************************************************\r
303 //\r
304 // The following are deprecated defines for the bit fields in the I2C Master\r
305 // Masked Interrupt Status register.\r
306 //\r
307 //*****************************************************************************\r
308 #define I2C_MASTER_MIS_MIS      0x00000001  // Master masked interrupt status\r
309 \r
310 //*****************************************************************************\r
311 //\r
312 // The following are deprecated defines for the bit fields in the I2C Master\r
313 // Interrupt Clear register.\r
314 //\r
315 //*****************************************************************************\r
316 #define I2C_MASTER_MICR_IC      0x00000001  // Master interrupt clear\r
317 \r
318 //*****************************************************************************\r
319 //\r
320 // The following are deprecated defines for the bit fields in the I2C Master\r
321 // Configuration register.\r
322 //\r
323 //*****************************************************************************\r
324 #define I2C_MASTER_CR_SFE       0x00000020  // Slave function enable\r
325 #define I2C_MASTER_CR_MFE       0x00000010  // Master function enable\r
326 #define I2C_MASTER_CR_LPBK      0x00000001  // Loopback enable\r
327 \r
328 //*****************************************************************************\r
329 //\r
330 // The following are deprecated defines for the bit fields in the I2C Slave Own\r
331 // Address register.\r
332 //\r
333 //*****************************************************************************\r
334 #define I2C_SLAVE_SOAR_OAR_MASK 0x0000007F  // Slave address\r
335 \r
336 //*****************************************************************************\r
337 //\r
338 // The following are deprecated defines for the bit fields in the I2C Slave\r
339 // Control/Status register.\r
340 //\r
341 //*****************************************************************************\r
342 #define I2C_SLAVE_CSR_FBR       0x00000004  // First byte received from master\r
343 #define I2C_SLAVE_CSR_TREQ      0x00000002  // Transmit request received\r
344 #define I2C_SLAVE_CSR_DA        0x00000001  // Enable the device\r
345 #define I2C_SLAVE_CSR_RREQ      0x00000001  // Receive data from I2C master\r
346 \r
347 //*****************************************************************************\r
348 //\r
349 // The following are deprecated defines for the bit fields in the I2C Slave\r
350 // Interrupt Mask register.\r
351 //\r
352 //*****************************************************************************\r
353 #define I2C_SLAVE_IMR_IM        0x00000001  // Slave interrupt mask\r
354 \r
355 //*****************************************************************************\r
356 //\r
357 // The following are deprecated defines for the bit fields in the I2C Slave Raw\r
358 // Interrupt Status register.\r
359 //\r
360 //*****************************************************************************\r
361 #define I2C_SLAVE_RIS_RIS       0x00000001  // Slave raw interrupt status\r
362 \r
363 //*****************************************************************************\r
364 //\r
365 // The following are deprecated defines for the bit fields in the I2C Slave\r
366 // Masked Interrupt Status register.\r
367 //\r
368 //*****************************************************************************\r
369 #define I2C_SLAVE_MIS_MIS       0x00000001  // Slave masked interrupt status\r
370 \r
371 //*****************************************************************************\r
372 //\r
373 // The following are deprecated defines for the bit fields in the I2C Slave\r
374 // Interrupt Clear register.\r
375 //\r
376 //*****************************************************************************\r
377 #define I2C_SLAVE_SICR_IC       0x00000001  // Slave interrupt clear\r
378 \r
379 //*****************************************************************************\r
380 //\r
381 // The following are deprecated defines for the bit fields in the I2C_O_SIMR\r
382 // register.\r
383 //\r
384 //*****************************************************************************\r
385 #define I2C_SIMR_IM             0x00000001  // Interrupt Mask.\r
386 \r
387 //*****************************************************************************\r
388 //\r
389 // The following are deprecated defines for the bit fields in the I2C_O_SRIS\r
390 // register.\r
391 //\r
392 //*****************************************************************************\r
393 #define I2C_SRIS_RIS            0x00000001  // Raw Interrupt Status.\r
394 \r
395 //*****************************************************************************\r
396 //\r
397 // The following are deprecated defines for the bit fields in the I2C_O_SMIS\r
398 // register.\r
399 //\r
400 //*****************************************************************************\r
401 #define I2C_SMIS_MIS            0x00000001  // Masked Interrupt Status.\r
402 \r
403 //*****************************************************************************\r
404 //\r
405 // The following are deprecated defines for the bit fields in the I2C_O_SICR\r
406 // register.\r
407 //\r
408 //*****************************************************************************\r
409 #define I2C_SICR_IC             0x00000001  // Clear Interrupt.\r
410 \r
411 #endif\r
412 \r
413 #endif // __HW_I2C_H__\r