modes

Dependents:   mbed_USBserial

Fork of mbed-rtos by mbed official

Committer:
jvanhook
Date:
Mon Jun 16 15:36:29 2014 +0000
Revision:
32:1e1e7730b6c8
dfsdfgsdf

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jvanhook 32:1e1e7730b6c8 1 /**********************************************************************
jvanhook 32:1e1e7730b6c8 2 * $Id$ lpc17xx_i2c.h 2010-05-21
jvanhook 32:1e1e7730b6c8 3 *//**
jvanhook 32:1e1e7730b6c8 4 * @file lpc17xx_i2c.h
jvanhook 32:1e1e7730b6c8 5 * @brief Contains all macro definitions and function prototypes
jvanhook 32:1e1e7730b6c8 6 * support for I2C firmware library on LPC17xx
jvanhook 32:1e1e7730b6c8 7 * @version 2.0
jvanhook 32:1e1e7730b6c8 8 * @date 21. May. 2010
jvanhook 32:1e1e7730b6c8 9 * @author NXP MCU SW Application Team
jvanhook 32:1e1e7730b6c8 10 *
jvanhook 32:1e1e7730b6c8 11 * Copyright(C) 2010, NXP Semiconductor
jvanhook 32:1e1e7730b6c8 12 * All rights reserved.
jvanhook 32:1e1e7730b6c8 13 *
jvanhook 32:1e1e7730b6c8 14 ***********************************************************************
jvanhook 32:1e1e7730b6c8 15 * Software that is described herein is for illustrative purposes only
jvanhook 32:1e1e7730b6c8 16 * which provides customers with programming information regarding the
jvanhook 32:1e1e7730b6c8 17 * products. This software is supplied "AS IS" without any warranties.
jvanhook 32:1e1e7730b6c8 18 * NXP Semiconductors assumes no responsibility or liability for the
jvanhook 32:1e1e7730b6c8 19 * use of the software, conveys no license or title under any patent,
jvanhook 32:1e1e7730b6c8 20 * copyright, or mask work right to the product. NXP Semiconductors
jvanhook 32:1e1e7730b6c8 21 * reserves the right to make changes in the software without
jvanhook 32:1e1e7730b6c8 22 * notification. NXP Semiconductors also make no representation or
jvanhook 32:1e1e7730b6c8 23 * warranty that such application will be suitable for the specified
jvanhook 32:1e1e7730b6c8 24 * use without further testing or modification.
jvanhook 32:1e1e7730b6c8 25 **********************************************************************/
jvanhook 32:1e1e7730b6c8 26
jvanhook 32:1e1e7730b6c8 27 /* Peripheral group ----------------------------------------------------------- */
jvanhook 32:1e1e7730b6c8 28 /** @defgroup I2C I2C (Inter-IC Control bus)
jvanhook 32:1e1e7730b6c8 29 * @ingroup LPC1700CMSIS_FwLib_Drivers
jvanhook 32:1e1e7730b6c8 30 * @{
jvanhook 32:1e1e7730b6c8 31 */
jvanhook 32:1e1e7730b6c8 32
jvanhook 32:1e1e7730b6c8 33 #ifndef LPC17XX_I2C_H_
jvanhook 32:1e1e7730b6c8 34 #define LPC17XX_I2C_H_
jvanhook 32:1e1e7730b6c8 35
jvanhook 32:1e1e7730b6c8 36 /* Includes ------------------------------------------------------------------- */
jvanhook 32:1e1e7730b6c8 37 #include "LPC17xx.h"
jvanhook 32:1e1e7730b6c8 38 #include "lpc_types.h"
jvanhook 32:1e1e7730b6c8 39
jvanhook 32:1e1e7730b6c8 40
jvanhook 32:1e1e7730b6c8 41 #ifdef __cplusplus
jvanhook 32:1e1e7730b6c8 42 extern "C"
jvanhook 32:1e1e7730b6c8 43 {
jvanhook 32:1e1e7730b6c8 44 #endif
jvanhook 32:1e1e7730b6c8 45
jvanhook 32:1e1e7730b6c8 46
jvanhook 32:1e1e7730b6c8 47 /* Private Macros ------------------------------------------------------------- */
jvanhook 32:1e1e7730b6c8 48 /** @defgroup I2C_Private_Macros I2C Private Macros
jvanhook 32:1e1e7730b6c8 49 * @{
jvanhook 32:1e1e7730b6c8 50 */
jvanhook 32:1e1e7730b6c8 51
jvanhook 32:1e1e7730b6c8 52 /* --------------------- BIT DEFINITIONS -------------------------------------- */
jvanhook 32:1e1e7730b6c8 53 /*******************************************************************//**
jvanhook 32:1e1e7730b6c8 54 * I2C Control Set register description
jvanhook 32:1e1e7730b6c8 55 *********************************************************************/
jvanhook 32:1e1e7730b6c8 56 #define I2C_I2CONSET_AA ((0x04)) /*!< Assert acknowledge flag */
jvanhook 32:1e1e7730b6c8 57 #define I2C_I2CONSET_SI ((0x08)) /*!< I2C interrupt flag */
jvanhook 32:1e1e7730b6c8 58 #define I2C_I2CONSET_STO ((0x10)) /*!< STOP flag */
jvanhook 32:1e1e7730b6c8 59 #define I2C_I2CONSET_STA ((0x20)) /*!< START flag */
jvanhook 32:1e1e7730b6c8 60 #define I2C_I2CONSET_I2EN ((0x40)) /*!< I2C interface enable */
jvanhook 32:1e1e7730b6c8 61
jvanhook 32:1e1e7730b6c8 62 /*******************************************************************//**
jvanhook 32:1e1e7730b6c8 63 * I2C Control Clear register description
jvanhook 32:1e1e7730b6c8 64 *********************************************************************/
jvanhook 32:1e1e7730b6c8 65 /** Assert acknowledge Clear bit */
jvanhook 32:1e1e7730b6c8 66 #define I2C_I2CONCLR_AAC ((1<<2))
jvanhook 32:1e1e7730b6c8 67 /** I2C interrupt Clear bit */
jvanhook 32:1e1e7730b6c8 68 #define I2C_I2CONCLR_SIC ((1<<3))
jvanhook 32:1e1e7730b6c8 69 /** START flag Clear bit */
jvanhook 32:1e1e7730b6c8 70 #define I2C_I2CONCLR_STAC ((1<<5))
jvanhook 32:1e1e7730b6c8 71 /** I2C interface Disable bit */
jvanhook 32:1e1e7730b6c8 72 #define I2C_I2CONCLR_I2ENC ((1<<6))
jvanhook 32:1e1e7730b6c8 73
jvanhook 32:1e1e7730b6c8 74 /********************************************************************//**
jvanhook 32:1e1e7730b6c8 75 * I2C Status Code definition (I2C Status register)
jvanhook 32:1e1e7730b6c8 76 *********************************************************************/
jvanhook 32:1e1e7730b6c8 77 /* Return Code in I2C status register */
jvanhook 32:1e1e7730b6c8 78 #define I2C_STAT_CODE_BITMASK ((0xF8))
jvanhook 32:1e1e7730b6c8 79
jvanhook 32:1e1e7730b6c8 80 /* I2C return status code definitions ----------------------------- */
jvanhook 32:1e1e7730b6c8 81
jvanhook 32:1e1e7730b6c8 82 /** No relevant information */
jvanhook 32:1e1e7730b6c8 83 #define I2C_I2STAT_NO_INF ((0xF8))
jvanhook 32:1e1e7730b6c8 84
jvanhook 32:1e1e7730b6c8 85 /* Master transmit mode -------------------------------------------- */
jvanhook 32:1e1e7730b6c8 86 /** A start condition has been transmitted */
jvanhook 32:1e1e7730b6c8 87 #define I2C_I2STAT_M_TX_START ((0x08))
jvanhook 32:1e1e7730b6c8 88 /** A repeat start condition has been transmitted */
jvanhook 32:1e1e7730b6c8 89 #define I2C_I2STAT_M_TX_RESTART ((0x10))
jvanhook 32:1e1e7730b6c8 90 /** SLA+W has been transmitted, ACK has been received */
jvanhook 32:1e1e7730b6c8 91 #define I2C_I2STAT_M_TX_SLAW_ACK ((0x18))
jvanhook 32:1e1e7730b6c8 92 /** SLA+W has been transmitted, NACK has been received */
jvanhook 32:1e1e7730b6c8 93 #define I2C_I2STAT_M_TX_SLAW_NACK ((0x20))
jvanhook 32:1e1e7730b6c8 94 /** Data has been transmitted, ACK has been received */
jvanhook 32:1e1e7730b6c8 95 #define I2C_I2STAT_M_TX_DAT_ACK ((0x28))
jvanhook 32:1e1e7730b6c8 96 /** Data has been transmitted, NACK has been received */
jvanhook 32:1e1e7730b6c8 97 #define I2C_I2STAT_M_TX_DAT_NACK ((0x30))
jvanhook 32:1e1e7730b6c8 98 /** Arbitration lost in SLA+R/W or Data bytes */
jvanhook 32:1e1e7730b6c8 99 #define I2C_I2STAT_M_TX_ARB_LOST ((0x38))
jvanhook 32:1e1e7730b6c8 100
jvanhook 32:1e1e7730b6c8 101 /* Master receive mode -------------------------------------------- */
jvanhook 32:1e1e7730b6c8 102 /** A start condition has been transmitted */
jvanhook 32:1e1e7730b6c8 103 #define I2C_I2STAT_M_RX_START ((0x08))
jvanhook 32:1e1e7730b6c8 104 /** A repeat start condition has been transmitted */
jvanhook 32:1e1e7730b6c8 105 #define I2C_I2STAT_M_RX_RESTART ((0x10))
jvanhook 32:1e1e7730b6c8 106 /** Arbitration lost */
jvanhook 32:1e1e7730b6c8 107 #define I2C_I2STAT_M_RX_ARB_LOST ((0x38))
jvanhook 32:1e1e7730b6c8 108 /** SLA+R has been transmitted, ACK has been received */
jvanhook 32:1e1e7730b6c8 109 #define I2C_I2STAT_M_RX_SLAR_ACK ((0x40))
jvanhook 32:1e1e7730b6c8 110 /** SLA+R has been transmitted, NACK has been received */
jvanhook 32:1e1e7730b6c8 111 #define I2C_I2STAT_M_RX_SLAR_NACK ((0x48))
jvanhook 32:1e1e7730b6c8 112 /** Data has been received, ACK has been returned */
jvanhook 32:1e1e7730b6c8 113 #define I2C_I2STAT_M_RX_DAT_ACK ((0x50))
jvanhook 32:1e1e7730b6c8 114 /** Data has been received, NACK has been return */
jvanhook 32:1e1e7730b6c8 115 #define I2C_I2STAT_M_RX_DAT_NACK ((0x58))
jvanhook 32:1e1e7730b6c8 116
jvanhook 32:1e1e7730b6c8 117 /* Slave receive mode -------------------------------------------- */
jvanhook 32:1e1e7730b6c8 118 /** Own slave address has been received, ACK has been returned */
jvanhook 32:1e1e7730b6c8 119 #define I2C_I2STAT_S_RX_SLAW_ACK ((0x60))
jvanhook 32:1e1e7730b6c8 120
jvanhook 32:1e1e7730b6c8 121 /** Arbitration lost in SLA+R/W as master */
jvanhook 32:1e1e7730b6c8 122 #define I2C_I2STAT_S_RX_ARB_LOST_M_SLA ((0x68))
jvanhook 32:1e1e7730b6c8 123 /** Own SLA+W has been received, ACK returned */
jvanhook 32:1e1e7730b6c8 124 //#define I2C_I2STAT_S_RX_SLAW_ACK ((0x68))
jvanhook 32:1e1e7730b6c8 125
jvanhook 32:1e1e7730b6c8 126 /** General call address has been received, ACK has been returned */
jvanhook 32:1e1e7730b6c8 127 #define I2C_I2STAT_S_RX_GENCALL_ACK ((0x70))
jvanhook 32:1e1e7730b6c8 128
jvanhook 32:1e1e7730b6c8 129 /** Arbitration lost in SLA+R/W (GENERAL CALL) as master */
jvanhook 32:1e1e7730b6c8 130 #define I2C_I2STAT_S_RX_ARB_LOST_M_GENCALL ((0x78))
jvanhook 32:1e1e7730b6c8 131 /** General call address has been received, ACK has been returned */
jvanhook 32:1e1e7730b6c8 132 //#define I2C_I2STAT_S_RX_GENCALL_ACK ((0x78))
jvanhook 32:1e1e7730b6c8 133
jvanhook 32:1e1e7730b6c8 134 /** Previously addressed with own SLV address;
jvanhook 32:1e1e7730b6c8 135 * Data has been received, ACK has been return */
jvanhook 32:1e1e7730b6c8 136 #define I2C_I2STAT_S_RX_PRE_SLA_DAT_ACK ((0x80))
jvanhook 32:1e1e7730b6c8 137 /** Previously addressed with own SLA;
jvanhook 32:1e1e7730b6c8 138 * Data has been received and NOT ACK has been return */
jvanhook 32:1e1e7730b6c8 139 #define I2C_I2STAT_S_RX_PRE_SLA_DAT_NACK ((0x88))
jvanhook 32:1e1e7730b6c8 140 /** Previously addressed with General Call;
jvanhook 32:1e1e7730b6c8 141 * Data has been received and ACK has been return */
jvanhook 32:1e1e7730b6c8 142 #define I2C_I2STAT_S_RX_PRE_GENCALL_DAT_ACK ((0x90))
jvanhook 32:1e1e7730b6c8 143 /** Previously addressed with General Call;
jvanhook 32:1e1e7730b6c8 144 * Data has been received and NOT ACK has been return */
jvanhook 32:1e1e7730b6c8 145 #define I2C_I2STAT_S_RX_PRE_GENCALL_DAT_NACK ((0x98))
jvanhook 32:1e1e7730b6c8 146 /** A STOP condition or repeated START condition has
jvanhook 32:1e1e7730b6c8 147 * been received while still addressed as SLV/REC
jvanhook 32:1e1e7730b6c8 148 * (Slave Receive) or SLV/TRX (Slave Transmit) */
jvanhook 32:1e1e7730b6c8 149 #define I2C_I2STAT_S_RX_STA_STO_SLVREC_SLVTRX ((0xA0))
jvanhook 32:1e1e7730b6c8 150
jvanhook 32:1e1e7730b6c8 151 /** Slave transmit mode */
jvanhook 32:1e1e7730b6c8 152 /** Own SLA+R has been received, ACK has been returned */
jvanhook 32:1e1e7730b6c8 153 #define I2C_I2STAT_S_TX_SLAR_ACK ((0xA8))
jvanhook 32:1e1e7730b6c8 154
jvanhook 32:1e1e7730b6c8 155 /** Arbitration lost in SLA+R/W as master */
jvanhook 32:1e1e7730b6c8 156 #define I2C_I2STAT_S_TX_ARB_LOST_M_SLA ((0xB0))
jvanhook 32:1e1e7730b6c8 157 /** Own SLA+R has been received, ACK has been returned */
jvanhook 32:1e1e7730b6c8 158 //#define I2C_I2STAT_S_TX_SLAR_ACK ((0xB0))
jvanhook 32:1e1e7730b6c8 159
jvanhook 32:1e1e7730b6c8 160 /** Data has been transmitted, ACK has been received */
jvanhook 32:1e1e7730b6c8 161 #define I2C_I2STAT_S_TX_DAT_ACK ((0xB8))
jvanhook 32:1e1e7730b6c8 162 /** Data has been transmitted, NACK has been received */
jvanhook 32:1e1e7730b6c8 163 #define I2C_I2STAT_S_TX_DAT_NACK ((0xC0))
jvanhook 32:1e1e7730b6c8 164 /** Last data byte in I2DAT has been transmitted (AA = 0);
jvanhook 32:1e1e7730b6c8 165 ACK has been received */
jvanhook 32:1e1e7730b6c8 166 #define I2C_I2STAT_S_TX_LAST_DAT_ACK ((0xC8))
jvanhook 32:1e1e7730b6c8 167
jvanhook 32:1e1e7730b6c8 168 /** Time out in case of using I2C slave mode */
jvanhook 32:1e1e7730b6c8 169 #define I2C_SLAVE_TIME_OUT 0x10000UL
jvanhook 32:1e1e7730b6c8 170
jvanhook 32:1e1e7730b6c8 171 /********************************************************************//**
jvanhook 32:1e1e7730b6c8 172 * I2C Data register definition
jvanhook 32:1e1e7730b6c8 173 *********************************************************************/
jvanhook 32:1e1e7730b6c8 174 /** Mask for I2DAT register*/
jvanhook 32:1e1e7730b6c8 175 #define I2C_I2DAT_BITMASK ((0xFF))
jvanhook 32:1e1e7730b6c8 176
jvanhook 32:1e1e7730b6c8 177 /** Idle data value will be send out in slave mode in case of the actual
jvanhook 32:1e1e7730b6c8 178 * expecting data requested from the master is greater than its sending data
jvanhook 32:1e1e7730b6c8 179 * length that can be supported */
jvanhook 32:1e1e7730b6c8 180 #define I2C_I2DAT_IDLE_CHAR (0xFF)
jvanhook 32:1e1e7730b6c8 181
jvanhook 32:1e1e7730b6c8 182 /********************************************************************//**
jvanhook 32:1e1e7730b6c8 183 * I2C Monitor mode control register description
jvanhook 32:1e1e7730b6c8 184 *********************************************************************/
jvanhook 32:1e1e7730b6c8 185 #define I2C_I2MMCTRL_MM_ENA ((1<<0)) /**< Monitor mode enable */
jvanhook 32:1e1e7730b6c8 186 #define I2C_I2MMCTRL_ENA_SCL ((1<<1)) /**< SCL output enable */
jvanhook 32:1e1e7730b6c8 187 #define I2C_I2MMCTRL_MATCH_ALL ((1<<2)) /**< Select interrupt register match */
jvanhook 32:1e1e7730b6c8 188 #define I2C_I2MMCTRL_BITMASK ((0x07)) /**< Mask for I2MMCTRL register */
jvanhook 32:1e1e7730b6c8 189
jvanhook 32:1e1e7730b6c8 190 /********************************************************************//**
jvanhook 32:1e1e7730b6c8 191 * I2C Data buffer register description
jvanhook 32:1e1e7730b6c8 192 *********************************************************************/
jvanhook 32:1e1e7730b6c8 193 /** I2C Data buffer register bit mask */
jvanhook 32:1e1e7730b6c8 194 #define I2DATA_BUFFER_BITMASK ((0xFF))
jvanhook 32:1e1e7730b6c8 195
jvanhook 32:1e1e7730b6c8 196 /********************************************************************//**
jvanhook 32:1e1e7730b6c8 197 * I2C Slave Address registers definition
jvanhook 32:1e1e7730b6c8 198 *********************************************************************/
jvanhook 32:1e1e7730b6c8 199 /** General Call enable bit */
jvanhook 32:1e1e7730b6c8 200 #define I2C_I2ADR_GC ((1<<0))
jvanhook 32:1e1e7730b6c8 201 /** I2C Slave Address registers bit mask */
jvanhook 32:1e1e7730b6c8 202 #define I2C_I2ADR_BITMASK ((0xFF))
jvanhook 32:1e1e7730b6c8 203
jvanhook 32:1e1e7730b6c8 204 /********************************************************************//**
jvanhook 32:1e1e7730b6c8 205 * I2C Mask Register definition
jvanhook 32:1e1e7730b6c8 206 *********************************************************************/
jvanhook 32:1e1e7730b6c8 207 /** I2C Mask Register mask field */
jvanhook 32:1e1e7730b6c8 208 #define I2C_I2MASK_MASK(n) ((n&0xFE))
jvanhook 32:1e1e7730b6c8 209
jvanhook 32:1e1e7730b6c8 210 /********************************************************************//**
jvanhook 32:1e1e7730b6c8 211 * I2C SCL HIGH duty cycle Register definition
jvanhook 32:1e1e7730b6c8 212 *********************************************************************/
jvanhook 32:1e1e7730b6c8 213 /** I2C SCL HIGH duty cycle Register bit mask */
jvanhook 32:1e1e7730b6c8 214 #define I2C_I2SCLH_BITMASK ((0xFFFF))
jvanhook 32:1e1e7730b6c8 215
jvanhook 32:1e1e7730b6c8 216 /********************************************************************//**
jvanhook 32:1e1e7730b6c8 217 * I2C SCL LOW duty cycle Register definition
jvanhook 32:1e1e7730b6c8 218 *********************************************************************/
jvanhook 32:1e1e7730b6c8 219 /** I2C SCL LOW duty cycle Register bit mask */
jvanhook 32:1e1e7730b6c8 220 #define I2C_I2SCLL_BITMASK ((0xFFFF))
jvanhook 32:1e1e7730b6c8 221
jvanhook 32:1e1e7730b6c8 222 /* I2C status values */
jvanhook 32:1e1e7730b6c8 223 #define I2C_SETUP_STATUS_ARBF (1<<8) /**< Arbitration false */
jvanhook 32:1e1e7730b6c8 224 #define I2C_SETUP_STATUS_NOACKF (1<<9) /**< No ACK returned */
jvanhook 32:1e1e7730b6c8 225 #define I2C_SETUP_STATUS_DONE (1<<10) /**< Status DONE */
jvanhook 32:1e1e7730b6c8 226
jvanhook 32:1e1e7730b6c8 227 /*********************************************************************//**
jvanhook 32:1e1e7730b6c8 228 * I2C monitor control configuration defines
jvanhook 32:1e1e7730b6c8 229 **********************************************************************/
jvanhook 32:1e1e7730b6c8 230 #define I2C_MONITOR_CFG_SCL_OUTPUT I2C_I2MMCTRL_ENA_SCL /**< SCL output enable */
jvanhook 32:1e1e7730b6c8 231 #define I2C_MONITOR_CFG_MATCHALL I2C_I2MMCTRL_MATCH_ALL /**< Select interrupt register match */
jvanhook 32:1e1e7730b6c8 232
jvanhook 32:1e1e7730b6c8 233 /* ---------------- CHECK PARAMETER DEFINITIONS ---------------------------- */
jvanhook 32:1e1e7730b6c8 234 /* Macros check I2C slave address */
jvanhook 32:1e1e7730b6c8 235 #define PARAM_I2C_SLAVEADDR_CH(n) ((n>=0) && (n<=3))
jvanhook 32:1e1e7730b6c8 236
jvanhook 32:1e1e7730b6c8 237 /** Macro to determine if it is valid SSP port number */
jvanhook 32:1e1e7730b6c8 238 #define PARAM_I2Cx(n) ((((uint32_t *)n)==((uint32_t *)LPC_I2C0)) \
jvanhook 32:1e1e7730b6c8 239 || (((uint32_t *)n)==((uint32_t *)LPC_I2C1)) \
jvanhook 32:1e1e7730b6c8 240 || (((uint32_t *)n)==((uint32_t *)LPC_I2C2)))
jvanhook 32:1e1e7730b6c8 241
jvanhook 32:1e1e7730b6c8 242 /* Macros check I2C monitor configuration type */
jvanhook 32:1e1e7730b6c8 243 #define PARAM_I2C_MONITOR_CFG(n) ((n==I2C_MONITOR_CFG_SCL_OUTPUT) || (I2C_MONITOR_CFG_MATCHALL))
jvanhook 32:1e1e7730b6c8 244
jvanhook 32:1e1e7730b6c8 245 /**
jvanhook 32:1e1e7730b6c8 246 * @}
jvanhook 32:1e1e7730b6c8 247 */
jvanhook 32:1e1e7730b6c8 248
jvanhook 32:1e1e7730b6c8 249
jvanhook 32:1e1e7730b6c8 250
jvanhook 32:1e1e7730b6c8 251 /* Public Types --------------------------------------------------------------- */
jvanhook 32:1e1e7730b6c8 252 /** @defgroup I2C_Public_Types I2C Public Types
jvanhook 32:1e1e7730b6c8 253 * @{
jvanhook 32:1e1e7730b6c8 254 */
jvanhook 32:1e1e7730b6c8 255
jvanhook 32:1e1e7730b6c8 256 /**
jvanhook 32:1e1e7730b6c8 257 * @brief I2C Own slave address setting structure
jvanhook 32:1e1e7730b6c8 258 */
jvanhook 32:1e1e7730b6c8 259 typedef struct {
jvanhook 32:1e1e7730b6c8 260 uint8_t SlaveAddrChannel; /**< Slave Address channel in I2C control,
jvanhook 32:1e1e7730b6c8 261 should be in range from 0..3
jvanhook 32:1e1e7730b6c8 262 */
jvanhook 32:1e1e7730b6c8 263 uint8_t SlaveAddr_7bit; /**< Value of 7-bit slave address */
jvanhook 32:1e1e7730b6c8 264 uint8_t GeneralCallState; /**< Enable/Disable General Call Functionality
jvanhook 32:1e1e7730b6c8 265 when I2C control being in Slave mode, should be:
jvanhook 32:1e1e7730b6c8 266 - ENABLE: Enable General Call function.
jvanhook 32:1e1e7730b6c8 267 - DISABLE: Disable General Call function.
jvanhook 32:1e1e7730b6c8 268 */
jvanhook 32:1e1e7730b6c8 269 uint8_t SlaveAddrMaskValue; /**< Any bit in this 8-bit value (bit 7:1)
jvanhook 32:1e1e7730b6c8 270 which is set to '1' will cause an automatic compare on
jvanhook 32:1e1e7730b6c8 271 the corresponding bit of the received address when it
jvanhook 32:1e1e7730b6c8 272 is compared to the SlaveAddr_7bit value associated with this
jvanhook 32:1e1e7730b6c8 273 mask register. In other words, bits in SlaveAddr_7bit value
jvanhook 32:1e1e7730b6c8 274 which are masked are not taken into account in determining
jvanhook 32:1e1e7730b6c8 275 an address match
jvanhook 32:1e1e7730b6c8 276 */
jvanhook 32:1e1e7730b6c8 277 } I2C_OWNSLAVEADDR_CFG_Type;
jvanhook 32:1e1e7730b6c8 278
jvanhook 32:1e1e7730b6c8 279
jvanhook 32:1e1e7730b6c8 280 /**
jvanhook 32:1e1e7730b6c8 281 * @brief Master transfer setup data structure definitions
jvanhook 32:1e1e7730b6c8 282 */
jvanhook 32:1e1e7730b6c8 283 typedef struct
jvanhook 32:1e1e7730b6c8 284 {
jvanhook 32:1e1e7730b6c8 285 uint32_t sl_addr7bit; /**< Slave address in 7bit mode */
jvanhook 32:1e1e7730b6c8 286 uint8_t* tx_data; /**< Pointer to Transmit data - NULL if data transmit
jvanhook 32:1e1e7730b6c8 287 is not used */
jvanhook 32:1e1e7730b6c8 288 uint32_t tx_length; /**< Transmit data length - 0 if data transmit
jvanhook 32:1e1e7730b6c8 289 is not used*/
jvanhook 32:1e1e7730b6c8 290 uint32_t tx_count; /**< Current Transmit data counter */
jvanhook 32:1e1e7730b6c8 291 uint8_t* rx_data; /**< Pointer to Receive data - NULL if data receive
jvanhook 32:1e1e7730b6c8 292 is not used */
jvanhook 32:1e1e7730b6c8 293 uint32_t rx_length; /**< Receive data length - 0 if data receive is
jvanhook 32:1e1e7730b6c8 294 not used */
jvanhook 32:1e1e7730b6c8 295 uint32_t rx_count; /**< Current Receive data counter */
jvanhook 32:1e1e7730b6c8 296 uint32_t retransmissions_max; /**< Max Re-Transmission value */
jvanhook 32:1e1e7730b6c8 297 uint32_t retransmissions_count; /**< Current Re-Transmission counter */
jvanhook 32:1e1e7730b6c8 298 uint32_t status; /**< Current status of I2C activity */
jvanhook 32:1e1e7730b6c8 299 void (*callback)(void); /**< Pointer to Call back function when transmission complete
jvanhook 32:1e1e7730b6c8 300 used in interrupt transfer mode */
jvanhook 32:1e1e7730b6c8 301 } I2C_M_SETUP_Type;
jvanhook 32:1e1e7730b6c8 302
jvanhook 32:1e1e7730b6c8 303
jvanhook 32:1e1e7730b6c8 304 /**
jvanhook 32:1e1e7730b6c8 305 * @brief Slave transfer setup data structure definitions
jvanhook 32:1e1e7730b6c8 306 */
jvanhook 32:1e1e7730b6c8 307 typedef struct
jvanhook 32:1e1e7730b6c8 308 {
jvanhook 32:1e1e7730b6c8 309 uint8_t* tx_data;
jvanhook 32:1e1e7730b6c8 310 uint32_t tx_length;
jvanhook 32:1e1e7730b6c8 311 uint32_t tx_count;
jvanhook 32:1e1e7730b6c8 312 uint8_t* rx_data;
jvanhook 32:1e1e7730b6c8 313 uint32_t rx_length;
jvanhook 32:1e1e7730b6c8 314 uint32_t rx_count;
jvanhook 32:1e1e7730b6c8 315 uint32_t status;
jvanhook 32:1e1e7730b6c8 316 void (*callback)(void);
jvanhook 32:1e1e7730b6c8 317 } I2C_S_SETUP_Type;
jvanhook 32:1e1e7730b6c8 318
jvanhook 32:1e1e7730b6c8 319 /**
jvanhook 32:1e1e7730b6c8 320 * @brief Transfer option type definitions
jvanhook 32:1e1e7730b6c8 321 */
jvanhook 32:1e1e7730b6c8 322 typedef enum {
jvanhook 32:1e1e7730b6c8 323 I2C_TRANSFER_POLLING = 0, /**< Transfer in polling mode */
jvanhook 32:1e1e7730b6c8 324 I2C_TRANSFER_INTERRUPT /**< Transfer in interrupt mode */
jvanhook 32:1e1e7730b6c8 325 } I2C_TRANSFER_OPT_Type;
jvanhook 32:1e1e7730b6c8 326
jvanhook 32:1e1e7730b6c8 327
jvanhook 32:1e1e7730b6c8 328 /**
jvanhook 32:1e1e7730b6c8 329 * @}
jvanhook 32:1e1e7730b6c8 330 */
jvanhook 32:1e1e7730b6c8 331
jvanhook 32:1e1e7730b6c8 332
jvanhook 32:1e1e7730b6c8 333 /* Public Functions ----------------------------------------------------------- */
jvanhook 32:1e1e7730b6c8 334 /** @defgroup I2C_Public_Functions I2C Public Functions
jvanhook 32:1e1e7730b6c8 335 * @{
jvanhook 32:1e1e7730b6c8 336 */
jvanhook 32:1e1e7730b6c8 337
jvanhook 32:1e1e7730b6c8 338 /* I2C Init/DeInit functions ---------- */
jvanhook 32:1e1e7730b6c8 339 void I2C_Init(LPC_I2C_TypeDef *I2Cx, uint32_t clockrate);
jvanhook 32:1e1e7730b6c8 340 void I2C_DeInit(LPC_I2C_TypeDef* I2Cx);
jvanhook 32:1e1e7730b6c8 341 //void I2C_SetClock (LPC_I2C_TypeDef *I2Cx, uint32_t target_clock);
jvanhook 32:1e1e7730b6c8 342 void I2C_Cmd(LPC_I2C_TypeDef* I2Cx, FunctionalState NewState);
jvanhook 32:1e1e7730b6c8 343
jvanhook 32:1e1e7730b6c8 344 /* I2C transfer data functions -------- */
jvanhook 32:1e1e7730b6c8 345 Status I2C_MasterTransferData(LPC_I2C_TypeDef *I2Cx, \
jvanhook 32:1e1e7730b6c8 346 I2C_M_SETUP_Type *TransferCfg, I2C_TRANSFER_OPT_Type Opt);
jvanhook 32:1e1e7730b6c8 347 Status I2C_SlaveTransferData(LPC_I2C_TypeDef *I2Cx, \
jvanhook 32:1e1e7730b6c8 348 I2C_S_SETUP_Type *TransferCfg, I2C_TRANSFER_OPT_Type Opt);
jvanhook 32:1e1e7730b6c8 349 uint32_t I2C_MasterTransferComplete(LPC_I2C_TypeDef *I2Cx);
jvanhook 32:1e1e7730b6c8 350 uint32_t I2C_SlaveTransferComplete(LPC_I2C_TypeDef *I2Cx);
jvanhook 32:1e1e7730b6c8 351
jvanhook 32:1e1e7730b6c8 352
jvanhook 32:1e1e7730b6c8 353 void I2C_SetOwnSlaveAddr(LPC_I2C_TypeDef *I2Cx, I2C_OWNSLAVEADDR_CFG_Type *OwnSlaveAddrConfigStruct);
jvanhook 32:1e1e7730b6c8 354 uint8_t I2C_GetLastStatusCode(LPC_I2C_TypeDef* I2Cx);
jvanhook 32:1e1e7730b6c8 355
jvanhook 32:1e1e7730b6c8 356 /* I2C Monitor functions ---------------*/
jvanhook 32:1e1e7730b6c8 357 void I2C_MonitorModeConfig(LPC_I2C_TypeDef *I2Cx, uint32_t MonitorCfgType, FunctionalState NewState);
jvanhook 32:1e1e7730b6c8 358 void I2C_MonitorModeCmd(LPC_I2C_TypeDef *I2Cx, FunctionalState NewState);
jvanhook 32:1e1e7730b6c8 359 uint8_t I2C_MonitorGetDatabuffer(LPC_I2C_TypeDef *I2Cx);
jvanhook 32:1e1e7730b6c8 360 BOOL_8 I2C_MonitorHandler(LPC_I2C_TypeDef *I2Cx, uint8_t *buffer, uint32_t size);
jvanhook 32:1e1e7730b6c8 361
jvanhook 32:1e1e7730b6c8 362 /* I2C Interrupt handler functions ------*/
jvanhook 32:1e1e7730b6c8 363 void I2C_IntCmd (LPC_I2C_TypeDef *I2Cx, Bool NewState);
jvanhook 32:1e1e7730b6c8 364 void I2C_MasterHandler (LPC_I2C_TypeDef *I2Cx);
jvanhook 32:1e1e7730b6c8 365 void I2C_SlaveHandler (LPC_I2C_TypeDef *I2Cx);
jvanhook 32:1e1e7730b6c8 366
jvanhook 32:1e1e7730b6c8 367
jvanhook 32:1e1e7730b6c8 368 /**
jvanhook 32:1e1e7730b6c8 369 * @}
jvanhook 32:1e1e7730b6c8 370 */
jvanhook 32:1e1e7730b6c8 371
jvanhook 32:1e1e7730b6c8 372
jvanhook 32:1e1e7730b6c8 373 #ifdef __cplusplus
jvanhook 32:1e1e7730b6c8 374 }
jvanhook 32:1e1e7730b6c8 375 #endif
jvanhook 32:1e1e7730b6c8 376
jvanhook 32:1e1e7730b6c8 377 #endif /* LPC17XX_I2C_H_ */
jvanhook 32:1e1e7730b6c8 378
jvanhook 32:1e1e7730b6c8 379 /**
jvanhook 32:1e1e7730b6c8 380 * @}
jvanhook 32:1e1e7730b6c8 381 */
jvanhook 32:1e1e7730b6c8 382
jvanhook 32:1e1e7730b6c8 383 /* --------------------------------- End Of File ------------------------------ */